Врет Trader.MarketTime в EmulationTrader


Версия 4.1.0
В стратегии подписался на _series.WhenCandlesFinished()
Сравниваю Trader.MarketTime с candle.CloseTime - ощущение, что свечи приходят пачками, с большим опозданием. Так и должно быть?

Такая же проблема с подпиской на собственные сделки this.NewMyTrades += MyTradesWindowAdding;
Время MarketTime одно, а MyTrade.Trade.Time - другое....

Пару строк из собственного лога:
Метка 3-1 MarketTime:01.03.2012 16:11:39, candle.CloseTime:01.03.2012 10:00:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 16:33:33, candle.CloseTime:01.03.2012 10:10:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 16:53:58, candle.CloseTime:01.03.2012 10:20:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 17:01:39, candle.CloseTime:01.03.2012 10:30:00, позиция = 0
Метка 3-1 Mark etTime:01.03.2012 17:23:08, candle.CloseTime:01.03.2012 10:40:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 17:39:26, candle.CloseTime:01.03.2012 10:50:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 17:53:04, candle.CloseTime:01.03.2012 11:00:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:01:41, candle.CloseTime:01.03.2012 11:10:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:10:13, candle.CloseTime:01.03.2012 11:20:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:14:13, candle.CloseTime:01.03.2012 11:30:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:15:13, candle.CloseTime:01.03.2012 11:40:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:15:36, candle.CloseTime:01.03.2012 11:50:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:15:37, candle.CloseTime:01.03.2012 12:00:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:20:26, candle.CloseTime:01.03.2012 12:10:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:27:57, candle.CloseTime:01.03.2012 12:20:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:32:05, candle.CloseTime:01.03.2012 12:30:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:40:19, candle.CloseTime:01.03.2012 12:40:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:43:26, candle.CloseTime:01.03.2012 12:50:00, позиция = 0
Метка 3-1 MarketTime:01.03.2012 18:44:51, candle.CloseTime:01.03.2012 13:00:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:02:56, candle.CloseTime:01.03.2012 13:10:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:09:35, candle.CloseTime:01.03.2012 13:20:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:18:05, candle.CloseTime:01.03.2012 13:30:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:23:43, candle.CloseTime:01.03.2012 13:40:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:28:34, candle.CloseTime:01.03.2012 13:50:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:32:50, candle.CloseTime:01.03.2012 14:00:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:37:51, candle.CloseTime:01.03.2012 14:10:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:48:58, candle.CloseTime:01.03.2012 14:20:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 10:53:45, candle.CloseTime:01.03.2012 14:30:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:01:18, candle.CloseTime:01.03.2012 14:40:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:06:24, candle.CloseTime:01.03.2012 14:50:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:17:01, candle.CloseTime:01.03.2012 15:00:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:26:33, candle.CloseTime:01.03.2012 15:10:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:34:10, candle.CloseTime:01.03.2012 15:20:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:39:09, candle.CloseTime:01.03.2012 15:30:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:42:50, candle.CloseTime:01.03.2012 15:40:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:48:29, candle.CloseTime:01.03.2012 15:50:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:51:00, candle.CloseTime:01.03.2012 16:00:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:53:19, candle.CloseTime:01.03.2012 16:10:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:53:19, candle.CloseTime:01.03.2012 16:20:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:55:32, candle.CloseTime:01.03.2012 16:30:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:55:32, candle.CloseTime:01.03.2012 16:40:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:55:32, candle.CloseTime:01.03.2012 16:50:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:55:32, candle.CloseTime:01.03.2012 17:00:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:55:32, candle.CloseTime:01.03.2012 17:10:00, позиция = 0
Метка 3-1 MarketTime:02.03.2012 11:55:32, candle.CloseTime:01.03.2012 17:20:00, позиция = 0



Спасибо:


pyhta4og

Фотография
Дата: 24.05.2012
Ответить


Про свечки ошибку подтверждаем, будет фикс.

Вопрос по MyTrade - у вас есть лог в котором видно отставание? Я пока не смог повторить эту ситуацию.
Спасибо:

Кот Матроскин

Фотография
Дата: 24.05.2012
Ответить


pyhta4og
Вопрос по MyTrade - у вас есть лог в котором видно отставание? Я пока не смог повторить эту ситуацию.

Видимо, я не додумал немного. Передаю MyTrade и MarketTime из класса стратегии в класс окна вывода сделок, и пока это происходит, MarketTime успевает поменяться. Моя лошадь медленно ходит.
Если же его залогировать сразу после события NewMyTrades, то он равен MyTrade.Trade.Time

Зато this.PositionManager.Position выдает 0 после события NewMyTrades (покупка бумаги). Не успевает поменяться? Как быстро и адекватно можно отслеживать позицию? После события делать Sleep миллисекунд на 200?
Спасибо:

pyhta4og

Фотография
Дата: 25.05.2012
Ответить


по умолчанию PositionManager пересчитывает позицию по событиям изменения статуса ордера (ITrader.OrdersChanged).

В эмуляторе сначала генерируется NewMyTrades, потом OrderChanged, поэтому такой эффект.

Можете поставить PositionManager.ByOrders=false и будет пересчитывать по сделкам.

Или подпишитесь на OrderChanged и делайте свои действия там.
Спасибо: Кот Матроскин

Кот Матроскин

Фотография
Дата: 25.05.2012
Ответить


pyhta4og
PositionManager.ByOrders=false и будет пересчитывать по сделкам.

Спасибо, помогло! Теперь адекватные данные показывает
Спасибо:

Кот Матроскин

Фотография
Дата: 25.05.2012
Ответить


Кстати, если кому пригодится, нашел более простой способ без указанной выше задержки мгновенно получить позицию:
Strategy.MyTrades.GetPosition()
Спасибо:

paveld

Фотография
Дата: 26.05.2012
Ответить


pyhta4og
Про свечки ошибку подтверждаем, будет фикс.


как узнать что поправили и можно проверять?

Добавлено:

Взял послед. версию с кодеплекс - поправлено
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy