бага в версии 3.2.4 при работе с QuikTrader данный код в стратегии
private void NewMyTrades(IEnumerable<MyTrade> myTrades)
{
foreach (MyTrade myTrade in myTrades)
{
получает myTrade.Trade.OrderDirection == null по крайней мере для short sell на FORTS
при этом если работать в режиме эмуляции с RealTimeEmulationTrader<QuikTrader>(new QuikTrader()) то OrderDirection приходит правильный
Комментарии (13)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
А что понимаете под myTrade.Trade.OrderDirection?
Направление трейда (buy/sell) - и оно, насколько я понимаю, должно совпадать с направлением ордера по которому и был создан трейд. (мне только не очень понятно почему тут тип данных nullable)
Потому что Trade.OrderDirection != Order.Direction. Trade.OrderDirection - это тот, кто стал инициатором сделки. Транслируется в таблице Все сделки. Использую (лично я) для бек тестинга.
Order.Direction - это направление для заявки (buy/sell).
спасибо за пояснение - я заюзал Order.Direction и все стало ок.
НО - если Trade.OrderDirection указывает кто стал инициатором сделки то почему он nullable и бывает null? ведь эта информация приходит в таблице Все сделки и там это поле либо "Купля" либо "Продажа" - третьего не дано
У Trade, которые созданы по истории, нет направления. Отсюда необходимость в nullable
значит бага. у меня-то не на истории - а с живого квика:
PS. а почему на истории нет направления?
Потому что в таблице Моих сделок направления нет. Направление есть только в таблице Всех сделок.
А вы пытаетесь событие получить по событию своих новых сделок.
Потому что все сделки, предоставленные нашей любимой биржей РТС, не содержат направления. "Какой-нибудь RND" будет не совпадать с реальной инфой. Если нужен "какой-нибудь RND", его можно добавить и самому. Решили что лучше писать null, чем неправильную информацию.
Аналогично и с Trade.Price иногда приходит null, часто приходит равной Order.Price, хотя на самом деле они различны.
Такое невозможно, потому что double не может принимать null.
но не всегда.
Прошу прощения, имел ввиду что иногда приходит NullReferenceException вот в таком коде:
Думаю, ошибка тут вовсе не в S#. Где-то переменную не инициализируете.
Понял. Получается это ограничение конкретно Квика и данных на FTP у РТС. И если с будет нормальный коннект с биржей или данные на FTP поправят то и это поле в соответствующем случае будет содержать нормальные данные.
Первая мысль возникла что можно наверное было бы вылавливать свои трейды из общего списка трейдов (в Квике). Но ведь трейд наверное в мой список прилетает раньше чем в общий (по крайней мере я надеюсь что это именно так;) - а тогда это не вариант. Тогда согласен что nullable это наилучшее решение тут.
Спасибо за пояснения!
Нет гарантии кто куда придёт первым. Экспорт идёт независимо по таблицам.