Как получить текущую свечку?

Как получить текущую свечку?
Atom
7/6/2010
Ivan Kochetkov


В примере SampleSMA пытаюсь получить текущую, не сформировавшуюся свечку, чтобы закрывать позицию по стопу, и никак не выходит: _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame) - возвращает последнюю сформированную свечку _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime ) - всегда возвращает null

Как получить текущую свечку?


Tags:


Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 7/6/2010
Reply


_candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _trader.MarketTime)

Thanks:

Ivan Kochetkov

Avatar
Date: 7/6/2010
Reply


И так не получается, всегда null. Вот код protected override bool OnProcess() { // если наша стратегия в процессе остановки if (base.ProcessState == StrategyProcessStates.Stopping) { // отменяем стратегию base.Orders.Where(o => o.State == OrderStates.Active).ForEach(base.Trader.GuarantyCancelOrder); // так как все активные заявки гарантированно были отменены, то возвращаем false return false; }

  var candleCur =

_candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, Trader.MarketTime);

       if (candleCur != null )
        {
            if (LastPosition.Type == PositionType.Long)   ////

никогда сюда не заходит ... }

   // событие обработки торговой стратегии вызвалось впервый раз,

что раньше, чем окончания текущей 5-минутки. if (base.Trader.MarketTime < _nextTime) { // возвращаем true, так как наш алгоритм еще не закончил свою работу, а просто ожидает следующего вызова. return true; }

   // получаем сформированную свечку
    var candle = _candleManager.GetTimeFrameCandle(base.Security,

base.TimeFrame, _nextTime - base.TimeFrame); // если свечки не существует (не было ни одной сделке в тайм-фрейме), то ждем окончания следующей свечки. if (candle == null) return true;

Thanks:

Mikhail Sukhov

Avatar
Date: 7/6/2010
Reply


Начнем с простого - CandleManager.NewCandles вообще вызывается?

Thanks:

Ivan Kochetkov

Avatar
Date: 7/6/2010
Reply


Да, на графике все свечки есть, в том числе и текущая

Thanks:

Mikhail Sukhov

Avatar
Date: 7/6/2010
Reply


Тоесть, она на графике изменяется, появляются другие текущие свечки? Тогда экспорт идет правильно. А Вы случаем с биржей временного смещения не имеете?

Thanks:

Ivan Kochetkov

Avatar
Date: 7/6/2010
Reply


Нет, поставил на компе московское время

Thanks:

Mikhail Sukhov

Avatar
Date: 7/6/2010
Reply


Тогда как-то странно. График ведь берет из того же источника... А OnProcess как часто вызывается? Может из-за того, что он вызывается раньше, чем будут получены новые следки для портсоения свечки, ничего не находит, засывает на тайм время, опять просывается.... Попробуйте изменить стратегию, если нужна текущая свечка:

if (candleCur != null ) { ....

else return true;

И уменьшить тайм фремя скажем до секунды (в примере со скользящими жестко стоят минутки насколько я помню).

Thanks:

Ivan Kochetkov

Avatar
Date: 7/6/2010
Reply


OnProcess вызывается многократно внутри тайм фрейма. Вот сейчас смотрел: ТФ - 1 мин. На графике последняя свечка 16:37. Она есть, сделки идут, она перерисовывается. Ставлю брэкпоинт, смотрю MarketTime - 16:37:15, _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, Trader.MarketTime); - возвращает Null 37-ая минута закончится и _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame) вернет сформированную свечку

Мне, по стратегии, нужны и сформированные свечки и текущая. Входы по закрытию, а вот выхожу и внутри свечи

Thanks:

Mikhail Sukhov

Avatar
Date: 7/6/2010
Reply


Да, я кажется понял. Дело в том, что свечка ищется в точном соотношении времени. Соответсвенно нужно обрезать секунды. Или использовать специальный метод TraderHelper.GetCandleBounds

Thanks:

Alexander

Avatar
Date: 7/6/2010
Reply


Надо как секунды, так и милисекунды обрезать. Просто 0 им присваивать, я так поступаю. Тоже некоторое время провозился с этим.

Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy