예제 #1
0
        //Подписываемся на события при инициализации стратегии
        private void Subscribe()
        {
            //При остановке старегии сбрасываем индикаторы
            StrategyStateChanged += state =>
            {
                if (state == StrategyState.NotActivated)
                {
                    ResetIndicators();
                }
            };

            //Подписываемся на свечки
            NewCandle += candle =>
            {
                //Если мы тестируем на свечках, рассчитываем алгоритмические стоп заявки по свечкам
                if (HistoricalDataType == HistoricalDataType.Candles)
                {
                    _algoStopOrders.Add(candle);
                }

                ProcessCandle(candle);
            };

            //Если торгуем или тестируем на тиках, рассчитываем алгоритмические стоп заявки по тикам
            NewTick += _algoStopOrders.Add;
        }
예제 #2
0
        //Подписываемся на события при инициализации стратегии
        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();
                }
            };
        }