Exemplo n.º 1
0
        public Syncing()
        {
            context = new EFDbContext();

            connector = new IQFeedTrader();
            connector.Connect();

            addedCount = 0;

            Thread.Sleep(1000);

            Console.WriteLine("Connection state {0}", connector.ConnectionState);
        }
Exemplo n.º 2
0
        public void Connect()
        {
            trader = new IQFeedTrader();
            trader.Connected += () => SetConnectionStatus(0);
            trader.Disconnected += () => SetConnectionStatus(1);
            trader.ConnectionError += error => SetConnectionStatus(error);

            trader.Connect();

            var monitor = new MonitorWindow();
            monitor.Show();

            logManager.Listeners.Add(new GuiLogListener(monitor));
            logManager.Sources.Add(trader);

            var address = IPAddress.Parse("72.5.42.156");

            Trader = new BlackwoodTrader();
            logManager.Sources.Add(Trader);

            Trader.Login = "******";
            Trader.Password = "******";
            Trader.ExecutionAddress = new IPEndPoint(address, BlackwoodAddresses.ExecutionPort);
            Trader.MarketDataAddress = new IPEndPoint(address, BlackwoodAddresses.MarketDataPort);
            Trader.HistoricalDataAddress = new IPEndPoint(address, BlackwoodAddresses.HistoricalDataPort);

            Trader.Connected += Trader_Connected;
            Trader.ConnectionError += Trader_ConnectionError;
            Trader.Disconnected += Trader_Disconnected;

            Trader.NewPortfolios += portfolios =>
            {
                foreach (var portfolio in portfolios)
                {
                    Portfolio = portfolio;
                    Debug.Print("Portfolio name {0}", portfolio.Name);
                    Debug.Print("Portfolio RealizedPnL {0}", portfolio.RealizedPnL);
                    Debug.Print("Portfolio UnrealizedPnL {0}", portfolio.UnrealizedPnL);
                }
            };

            Trader.NewCandles += Trader_NewCandles;

            Trader.NewOrders += Trader_NewOrders;
            Trader.NewPositions += Trader_NewPositions;
            Trader.Connect();
        }
Exemplo n.º 3
0
        //Метод получает свечки для каждого обрабатываемого инстумента
        private int GetCandles(object obj, IQFeedTrader trader)
        {
            List<Security> securities = (List<Security>)obj;    //коллекция хранит "пучок", переданных в данный метод, инструментов для закачки таймсерий и передачи их в стратегию          

            //while (run)
            //{
            //trader = new IQFeedTrader();

            trader.Connect();
            Debug.Print("CONNECTION STATE: {0}", trader.ConnectionState);
            Thread.Sleep(1000);  //Уснуть на 1000 миллисекунд для того, чтобы дать коннектору установить подключение

            foreach (var security in securities)
            {
                if (!run)
                {
                    return 0;
                }
                bool isDaysSuccess;
                bool is5MinutesSucсess;

                //Debug.Print("BEFORE");
                List<Candle> dayCandles = (List<Candle>)trader.GetHistoricalCandles(security, typeof(TimeFrameCandle), TimeSpan.FromDays(1), 65, out isDaysSuccess);   //получить дневные свечки текущего инструмента
                List<Candle> candles = (List<Candle>)trader.GetHistoricalCandles(security, typeof(TimeFrameCandle), TimeSpan.FromMinutes(5), 100, out is5MinutesSucсess);   //получить пятиминутные свечки текущего инструмента
                List<Candle> intradayCandles = new List<Candle>();     //"чистые" свечки - с начала сессии по текущую 
                                                                       //Debug.Print("AFTER");

                foreach (var candle in candles)
                {
                    var candleOpenTime = candle.OpenTime - TimeSpan.FromHours(5);

                    if (candleOpenTime.Ticks >= startSession.Ticks && candleOpenTime.Ticks <= endSession.Ticks) //если свечка относится к текущей сессии, то добавляем ее в "чистую" коллекцию
                    {
                        intradayCandles.Add(candle);
                        //if(candle.Security.Code == "A")
                        //    Debug.Print("{0}, {1}", candleOpenTime, candle.ClosePrice);
                    }
                }

                if (!blackList.Contains(security))  //Если по текущему инструменту еще нет запущенных стратегий, то отправляем его на сканирование
                {
                    Scanner scanner = new Scanner
                    {
                        DayCandles = dayCandles,
                        IntradayCandles = intradayCandles,
                        Trader = Trader,
                        //Portfolio = Portfolio
                        Portfolio = new Portfolio()
                    };

                    scanner.StrategyStarted += Scanner_StrategyStarted; //Подписываемся на события старта стратегии, чтобы добавить ее в менеджер логгирования для отслеживания

                    int i = scanner.Scan();
                    if (i == 1)
                        Processed(i, 0);
                    else
                    {
                        Processed(i, 1);
                    }
                }
            }
            //trader.Disconnect();
            //Thread.Sleep(1000);
            //trader.Dispose();
            //}
            return 0;
        }