public Syncing() { context = new EFDbContext(); connector = new IQFeedTrader(); connector.Connect(); addedCount = 0; Thread.Sleep(1000); Console.WriteLine("Connection state {0}", connector.ConnectionState); }
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(); }
//Метод получает свечки для каждого обрабатываемого инстумента 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; }