Order.GetAveragePrice равно 0


Order.GetAveragePrice равно 0
Atom
6/20/2012


В стратегии цена стоп заявки рассчитывается как "GetAveragePrice исполнившейся Short заявки " - 80
Стратегия работало какое-то время, все было нормально, стоп-заявки исполнялись. В какой то момент почему-то при расчете стопа GetAveragePrice было 0 и цена получилась отрицательная, произошел сбой:

Quote:

System.ArgumentOutOfRangeException: Цена заявки должна быть положительной.
Parameter name: order
Actual value was -80.
at #=qGoBuDlT6LOhOqFv3WY9JfVoUGMLwCQqmxGn3ux1xsRU=.#=qrmBGhucdwUvMBWxvyf90OGFH_$dcrvDHgJnWvyziAz4=(Order #=qRqhlCAIZNVQm5yp$9tOMHw==, Boolean #=qcRD_tAfwy2bBT7qJZOuzHw==)
at #=qGoBuDlT6LOhOqFv3WY9JfVoUGMLwCQqmxGn3ux1xsRU=.#=qF6Ws2dOW1i8aCwov_qo_Xw==(Order #=qZn3kSxtavZ876oTZ3s7DtQ==, Boolean #=qjNfQ2svAOHqFj5BSaDISdQ==)
at StockSharp.Algo.BaseTrader.RegisterOrder(Order order)
at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order)


Подскажите почему так могло получится? Каким образом и в какой момент в библиотеке происходит расчет AveragePrice для исполнившейся заявки?
Выходит нельзя полагаться на GetAveragePrice ?

Версия S# 4.1.1

Tags:


Thanks:


1 2  >
paveld

Avatar
Date: 6/21/2012
Reply


Неужели ни кто не сталкивался с таким?
Может разработчики подскажут каким образом и в какой момент в библиотеке происходит расчет AveragePrice для исполнившейся заявки?
Проблема в нестабильности заполнения значения на стороне библиотеки или квика?
Thanks:

Moadip

Avatar
Date: 6/21/2012
Reply


Quote:
В какой то момент почему-то при расчете стопа GetAveragePrice было 0

Если почитать справку, то там написано:
"Если заявка не была исполнена ни по одному контракту, то возвращается 0"

Может надо проверку делать исполнился ордер или нет?
Thanks:

paveld

Avatar
Date: 6/21/2012
Reply


Moadip Go to

Если почитать справку, то там написано:
"Если заявка не была исполнена ни по одному контракту, то возвращается 0"

Может надо проверку делать исполнился ордер или нет?

В том то и проблема что заявка исполнилась. И в большинстве случаев по ходу работы стратегии AveragePrice заполнена, но возникают такие сбои когда почему-то оказывается не заполнена. Чтобы разобраться с этим я и написал на форуме.
Thanks:

Alexander

Avatar
Date: 6/22/2012
Reply


Это могло произойти в том случае, если не успела придти информация по своим сделкам по данному ордеру. Т.е. надо дожидаться когда все сделки придут - средняя цена вычисляется именно по совершившимся сделкам данного ордера.
Thanks:

paveld

Avatar
Date: 6/22/2012
Reply


Alexander Mukhanchikov Go to
Это могло произойти в том случае, если не успела придти информация по своим сделкам по данному ордеру. Т.е. надо дожидаться когда все сделки придут - средняя цена вычисляется именно по совершившимся сделкам данного ордера.


Подскажите пожалуйста, как тогда правильнее в стратегии выставлять защитные заявки, по событию NewMyTrades или по правилу OrderPartiallyMatched?
Сейчас я выставляю при вызове правила OrderPartiallyMatched, где как раз и получается ситуация когда GetAveragePrice нулевая.
Thanks:

esper

Avatar
Date: 6/23/2012
Reply


paveld Go to
Подскажите пожалуйста, как тогда правильнее в стратегии выставлять защитные заявки, по событию NewMyTrades или по правилу OrderPartiallyMatched?
Сейчас я выставляю при вызове правила OrderPartiallyMatched, где как раз и получается ситуация когда GetAveragePrice нулевая.

Т.к. защищается именно сделка, то и выставлять логично по событию NewMyTrades. Стандартные защитные стратегии как раз принимают на входе MyTrade.
Thanks: paveld

paveld

Avatar
Date: 6/29/2012
Reply


Подскажите пожалуйста еще ответы на такие вопросы:

1. Изменение Order.Balance у заявки происходит по событию NewMyTrades?
2. Почему информация о собственных сделках приходит позднее, чем срабатывает событие OrderPartiallyMatched.
Изначально делал по событию OrderPartiallyMatched именно потому что оно срабатывает быстрее.
Thanks:

esper

Avatar
Date: 6/30/2012
Reply


paveld Go to
Подскажите пожалуйста еще ответы на такие вопросы:

1. Изменение Order.Balance у заявки происходит по событию NewMyTrades?
2. Почему информация о собственных сделках приходит позднее, чем срабатывает событие OrderPartiallyMatched.
Изначально делал по событию OrderPartiallyMatched именно потому что оно срабатывает быстрее.

1. Нет, по OrderChanged, когда меняется столбец остаток в таблице квика.
2. Экспорт таблиц асинхронный, поэтому нельзя сказать какие данные придут быстрее.
Thanks:

paveld

Avatar
Date: 6/30/2012
Reply


esper Go to

1. Нет, по OrderChanged, когда меняется столбец остаток в таблице квика.
2. Экспорт таблиц асинхронный, поэтому нельзя сказать какие данные придут быстрее.


Что-то я запутался.
Если выставляемые защитные заявки зависят от средней цены исполнения и баланса исполнившейся заявки, а эти данные приходят в разное время и по разным событиям, как тогда правильно выставлять защитные заявки и в каком событии, чтобы гарантированно эти поля были заполнены?
Thanks:

esper

Avatar
Date: 6/30/2012
Reply


paveld Go to
Что-то я запутался.
Если выставляемые защитные заявки зависят от средней цены исполнения и баланса исполнившейся заявки, а эти данные приходят в разное время и по разным событиям, как тогда правильно выставлять защитные заявки и в каком событии, чтобы гарантированно эти поля были заполнены?


1. Защищать каждую приходящую свою сделку. Пример здесь.
2. Дожидаться пока придут все сделки по заявке, вычислять среднюю цену и защищать сделку по средней цене.
Thanks:
1 2  >

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

loading
clippy