В алгоритме SMAStrategy мы определяем время предпоследней свечи. Зачем? Только для привязки стратегии к реальному времени? Поясните мне смысл этой строки
var time = timeFrame.GetCandleBounds(Security).Min - timeFrame;
Получается временной период как-то зависит от инструмента? У каждого инструмента свой временной период? Тогда бы реальное время было разное... Я вот не пойму какая связь между временным периодом и инструментом...
Прошу пояснить первое условие в этой строке
if (candle.OpenTime >= time && _parabolic.IsFormed && candle.State == CandleStates.Finished)
если время открытия полученной свечи больше или равно времени предпоследней свечи... Разве может быть время открытия последней меньше предпоследней? Они поступаю в стратегию на обработку по очереди...
Kommentare (5)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
и затем из нее вычитаем таймфрейм свечи. чтобы получить левую временную границу предыдущей свечи.
то дело прояснится, видно, что торговый инструмент используется для получения времени торговой площадки.
Зачем городить для этого этот код:
А основной алгоритм запускать по правилу
_candleSeries.WhenCandlesStarted() .Do(MainAlgorithm) .Apply(this);
Т.е. если в OnStarted() написать
то в основном алгоритме можно не вызывать метод _candleSeries.GetCandle(1);? или в этом правиле даже не надо указывать метод _candleSeries.GetCandle(1);?, т.е.
Я думаю проверка candle.OpenTime >= time необходима в случае, если мы одновременно запускаем вывод на график и стратегию, например одной кнопкой. А если мы сначала одной кнопкой запускаем график, а потом второй кнопкой стартует наша стратегия, то такая проверка не нужна.
_candleSeries.WhenCandlesFinished() .Do(()=>{ _candleSeries.GetCandle(1); MainAlgorithm(); }).Apply(this)
Так конечно не заработает. Вариантов много, программирование это творческая работа, например можно так:
если надо получать предпоследнюю свечу, то нужно будет делать как-то специально, например даже так _candleSeries.GetCandle(1)