[SOLVED] myTrade.Trade.OrderDirection == null если работать с QuikTrader

[SOLVED] myTrade.Trade.OrderDirection == null если работать с QuikTrader
Atom
05.07.2011
President


бага в версии 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 приходит правильный

Теги:


Спасибо:


1 2  >
Mikhail Sukhov

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


President

получает myTrade.Trade.OrderDirection == null
по крайней мере для short sell на FORTS


А что понимаете под myTrade.Trade.OrderDirection?
Спасибо:

President

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


Mikhail Sukhov
President

получает myTrade.Trade.OrderDirection == null
по крайней мере для short sell на FORTS


А что понимаете под myTrade.Trade.OrderDirection?


Направление трейда (buy/sell) - и оно, насколько я понимаю, должно совпадать с направлением ордера по которому и был создан трейд.
(мне только не очень понятно почему тут тип данных nullable)
Спасибо:

Supervisor

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


Аналогично и с Trade.Price иногда приходит null, часто приходит равной Order.Price, хотя на самом деле они различны.
Спасибо:

Mikhail Sukhov

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


President
Направление трейда (buy/sell) - и оно, насколько я понимаю, должно совпадать с направлением ордера по которому и был создан трейд.
(мне только не очень понятно почему тут тип данных nullable)


Потому что Trade.OrderDirection != Order.Direction. Trade.OrderDirection - это тот, кто стал инициатором сделки. Транслируется в таблице Все сделки. Использую (лично я) для бек тестинга.

Order.Direction - это направление для заявки (buy/sell).
Спасибо:

Mikhail Sukhov

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


Supervisor
Аналогично и с Trade.Price иногда приходит null


Такое невозможно, потому что double не может принимать null.

Supervisor
часто приходит равной Order.Price, хотя на самом деле они различны.


но не всегда.
Спасибо:

Supervisor

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


Mikhail Sukhov
Supervisor
Аналогично и с Trade.Price иногда приходит null


Такое невозможно, потому что double не может принимать null.


Прошу прощения, имел ввиду что иногда приходит NullReferenceException вот в таком коде:

Код
Iron.Trader.NewMyTrades += t_myNewTrades =>
{
    t_price = t_myNewTrades.Last().Trade.Price;
    waitHandle.Set();
};
			
Iron.Trader.RegisterOrder(t_order);

// Дожидаемся исполнения заявки
waitHandle.WaitOne();

try
{
    Print("price:" + t_price.ToString());
}
catch (Exception t_ex)
{
    Print("ERROR: " + t_ex.ToString());
}
Спасибо:

Mikhail Sukhov

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


Supervisor
Mikhail Sukhov
Supervisor
Аналогично и с Trade.Price иногда приходит null


Такое невозможно, потому что double не может принимать null.


Прошу прощения, имел ввиду что иногда приходит NullReferenceException вот в таком коде:


Думаю, ошибка тут вовсе не в S#. Где-то переменную не инициализируете.
Спасибо:

President

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


Mikhail Sukhov
President
Направление трейда (buy/sell) - и оно, насколько я понимаю, должно совпадать с направлением ордера по которому и был создан трейд.
(мне только не очень понятно почему тут тип данных nullable)


Потому что Trade.OrderDirection != Order.Direction. Trade.OrderDirection - это тот, кто стал инициатором сделки. Транслируется в таблице Все сделки. Использую (лично я) для бек тестинга.

Order.Direction - это направление для заявки (buy/sell).


спасибо за пояснение - я заюзал Order.Direction и все стало ок.

НО - если Trade.OrderDirection указывает кто стал инициатором сделки то почему он nullable и бывает null?
ведь эта информация приходит в таблице Все сделки и там это поле либо "Купля" либо "Продажа" - третьего не дано
Спасибо:

Alexander

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


President
Mikhail Sukhov
President
Направление трейда (buy/sell) - и оно, насколько я понимаю, должно совпадать с направлением ордера по которому и был создан трейд.
(мне только не очень понятно почему тут тип данных nullable)


Потому что Trade.OrderDirection != Order.Direction. Trade.OrderDirection - это тот, кто стал инициатором сделки. Транслируется в таблице Все сделки. Использую (лично я) для бек тестинга.

Order.Direction - это направление для заявки (buy/sell).


спасибо за пояснение - я заюзал Order.Direction и все стало ок.

НО - если Trade.OrderDirection указывает кто стал инициатором сделки то почему он nullable и бывает null?
ведь эта информация приходит в таблице Все сделки и там это поле либо "Купля" либо "Продажа" - третьего не дано



У Trade, которые созданы по истории, нет направления. Отсюда необходимость в nullable
Спасибо:

President

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


Alexander

У Trade, которые созданы по истории, нет направления. Отсюда необходимость в nullable



значит бага.
у меня-то не на истории - а с живого квика:

Konstantin

при работе с QuikTrader данный код в стратегии

private void NewMyTrades(IEnumerable<MyTrade> myTrades)
{
foreach (MyTrade myTrade in myTrades)
{

получает myTrade.Trade.OrderDirection == null
по крайней мере для short sell на FORTS


PS. а почему на истории нет направления?
>если история восстанавливается по трейдам ранее сохраненым то направление там должно быть.
>если история генерится по историческим свечкам - то можно:
- или какой-нибудь RND добавить;
- или - если уже есть какой-то алгоритм для генерации стакана, то указывать тут сторону стакана (ask/bid) которая ближе к цене исполнения (или даже генерацию стакана подправить чтобы цены ask/bid совпадали с ценой трейда)
IMHO для стратегии которая завязана на Trade.OrderDirection RND будет лучше чем null (ближе к боевым условиям), а для остальных без разницы.
Спасибо:
1 2  >

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

loading
clippy