Добрый день!
Тренируюсь на простой стратегии но вот что-то работать код не желает.
событие onrunning стреляет а дальше тишина, onprocess вообще не вызывается.
старт и стоп работают
версия библиотек последняя, вот код
```csharp
public class SmaStrategy : TimeFrameStrategy
{
private readonly CandleManager _candleManager;
//private bool _isShortLessThenLong;
private DateTime _nextTime;
public SmaStrategy(CandleManager _candleManager, Security _security, int P1, int P2, int P3, int P4, TimeSpan _timeFrame) : base(_timeFrame)
{
//конструктор
this.Security = _security;
this.TimeFrame = _timeFrame;
}
protected override void OnRunning()
{
// заполняем массив данных первоначальными значениями
//вычисляем параметр nextTime
_nextTime = base.TimeFrame.GetCandleBounds(base.Trader).Max;
Logger.Info("start NT " + _nextTime);
return;
}
protected override StrategyProcessResults OnProcess()
{
this.Volume = this.Volume + 1;
// если наша стратегия в процессе остановки
if (base.ProcessState == StrategyProcessStates.Stopping)
{
// отменяем активные заявки
Logger.Info("stopping...");
base.CancelActiveOrders();
// так как все активные заявки гарантированно были отменены, то возвращаем StrategyProcessResults.Stop
return StrategyProcessResults.Stop;
}
// событие обработки торговой стратегии вызвалось впервый раз, что раньше, чем окончания текущей 5-минутки.
if (base.Trader.MarketTime < _nextTime)
{
// возвращаем StrategyProcessResults.Continue, так как наш алгоритм еще не закончил свою работу, а просто ожидает следующего вызова.
return StrategyProcessResults.Continue;
}
// получаем сформированную свечку
var candle = _candleManager.GetTimeFrameCandle(this.Security,this.TimeFrame, DateTime.Now);
// если свечки не существует (не было ни одной сделке в тайм-фрейме), то ждем окончания следующей свечки.
if (candle == null)
{
Logger.Info("candle=null");
// если прошло больше 10 секунд с момента окончания свечки, а она так и не появилась,
// значит сделок в прошедшей 5-минутке не было, и переходим на следующую свечку
if ((base.Trader.MarketTime - _nextTime) > TimeSpan.FromSeconds(10))
_nextTime += base.TimeFrame;
return StrategyProcessResults.Continue;
}
_nextTime = _nextTime + this.TimeFrame;
Logger.Info("NT " + _nextTime);
Logger.Info("Расчет!");
return StrategyProcessResults.Continue;
}
}