//Подписываемся на события при инициализации стратегии private void Subscribe() { //При остановке старегии сбрасываем индикаторы StrategyStateChanged += state => { if (state == StrategyState.NotActivated) { ResetIndicators(); } }; //Подписываемся на свечки NewCandle += candle => { //Если мы тестируем на свечках, рассчитываем алгоритмические стоп заявки по свечкам if (HistoricalDataType == HistoricalDataType.Candles) { _algoStopOrders.Add(candle); } ProcessCandle(candle); }; //Если торгуем или тестируем на тиках, рассчитываем алгоритмические стоп заявки по тикам NewTick += _algoStopOrders.Add; }
//Подписываемся на события при инициализации стратегии private void Subscribe() { //При остановке старегии сбрасываем индикаторы StrategyStateChanged += state => { if (state == StrategyState.NotActivated) { _longSma.Reset(); _shortSma.Reset(); } }; //Подписываемся на свечки NewCandle += candle => { //Если мы тестируем на свечках, рассчитываем алгоритмические заявки по свечкам if (HistoricalDataType == HistoricalDataType.Candles) { _algoCancelOrdersByTimer.Add(candle); _algoStopOrders.Add(candle); } ProcessCandle(candle); }; //Подписываемся на тики //Если торгуем или тестируем на тиках, рассчитываем алгоритмические стоп заявки по тикам (результаты получаются точнее, чем на свечках) NewTick += tick => { _algoCancelOrdersByTimer.Add(tick); _algoStopOrders.Add(tick); }; //Если возникли ошибки с заявками, то останавливаем стратегию OrderChanged += order => { if (order.State == OrderState.Failed) { //Отправляем сообщение в лог и останавливаем стратегию MessageToLog($"Order ID{order.OrderId} failed. Strategy stopped."); Stop(); } }; }