Условия возникновения событий Strategy.OrderChange, Strategy.NewOrder, Strategy.NewMyTrades


Условия возникновения событий Strategy.OrderChange, Strategy.NewOrder, Strategy.NewMyTrades
Atom
07.10.2010


Каковы условия возникновения этих событий у стратегии по сравнению с аналогичными событиями в Trader?

Они как-то фильтруются по стратегии? Если да, то как?

Теги:


Спасибо:


< 1 2 3 4 5  > >>
sergun

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


sergun
Mikhail Sukhov
sergun

Михаил, обращаю Ваше внимание, что проблема решилась отказом от асинхронного режима.. (проблема заключалась в том что не возникали события OrdersChanged, NewMyTrades.. Только NewOrders)
Трудно предположить, что я его не так использую, т.к. в предыдущих версиях квикшарпа им успешно пользовался.
Если баг, с Вас пиво )))


В асинхронном режиме не возникали события у ITrader или у Strategy? Или у тех и у тех?



У стратегии 100% ни разу не возникали.
У трейдера подписывался только на NewMyTrades.. Обработчик вызвался только как-то один раз.

Кстати по задумке NewOrders вызывается и нужен только для асинхронного режима?
Спасибо:

Mikhail Sukhov

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


sergun
Кстати по задумке NewOrders вызывается и нужен только для асинхронного режима?


Нет, для обоих... Я проверил сценарий. Все вызывается. Можете как-то локализовать проблему? Потому что, если я создаю стратегию, и регистрирую в ней заявку по рыночной цене, то все события вызыываются на ура. IsAsyncMode = true.

Есть еще подозрения, что может быть где-то обработчик на данные события еще есть и он кидает исключение. А с событиями такая ситуация. Если впереди стоящий в цепочке подписки выбросил исключение, то дальше уже никто событие не получит.

Если не в этом дело, то надо выделать проблемное место путем тестов.
Спасибо:

Dmitriy Klimov

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


Михаил, после выставления через Strategy.RegisterOrder условной заявки типа QuikStopConditionTypes.TakeProfitStopLimit, стратегия не получает события о совершении сделки по этой заявки. Как заставить стратегию, PositionManager и другие менеджеры учитывать эти сделки?

Я так понимаю, стратегия отслеживает исполнения только тех заявок, которые она сама выставляет. А так как условная заявка генерирует свои заявки после выполнения заданного условия, то такие сделки стратегия игнорирует. Как вы посоветуете решать такие задачи? Самому подписываться на BaseTrader.NewMyTrades? Тогда как быть с расчетом позиции и профита в стратегии?
Спасибо:

Mikhail Sukhov

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


Strategy умеет отслеживать появления заявок по стоп-заявкам. Тоесть, если через Strategy.RegisterOrder зарегистрировать стоп заявку, то при ее активации в Strategy.Order появится производная заявка. А вот сделки я не проверял, но, судя по коду, и это должно работать. Лучше начнем с простого. Приходил ли событие Strategy.NewOrder для производной заявки?
Спасибо:

Dmitriy Klimov

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


Mikhail Sukhov
Strategy умеет отслеживать появления заявок по стоп-заявкам. Тоесть, если через Strategy.RegisterOrder зарегистрировать стоп заявку, то при ее активации в Strategy.Order появится производная заявка. А вот сделки я не проверял, но, судя по коду, и это должно работать. Лучше начнем с простого. Приходил ли событие Strategy.NewOrder для производной заявки?

Регистрирую через Strategy.RegisterOrder. При этом такая заявка не попадает в Strategy.StopOrders и при осуществлении сделок по этим заявкам событие Strategy.NewMyTrades не возникает. Strategy.NewOrder не проверял, завтра проверю...
Спасибо:

Dmitriy Klimov

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


Нашел лог с последних торгов. Strategy.NewOrder от условных стоп-заявок тоже не возникает...
Спасибо:

Mikhail Sukhov

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


Dmitriy Klimov
Регистрирую через Strategy.RegisterOrder. При этом такая заявка не попадает в Strategy.StopOrders


В StopOrders она попадет после успешной регистрации, то есть когда будет событие Strategy.NewStopOrder.
Спасибо:

Dmitriy Klimov

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


Mikhail Sukhov
В StopOrders она попадет после успешной регистрации, то есть когда будет событие Strategy.NewStopOrder.

Проверял при возникновении события BaseTrader.StopOrdersChanged. По идее, раз это событие возникает, то в Strategy.StopOrders что-то должно быть. Но массив был всегда пустой....
Спасибо:

Mikhail Sukhov

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


Dmitriy Klimov
Mikhail Sukhov
В StopOrders она попадет после успешной регистрации, то есть когда будет событие Strategy.NewStopOrder.

Проверял при возникновении события BaseTrader.StopOrdersChanged. По идее, раз это событие возникает, то в Strategy.StopOrders что-то должно быть. Но массив был всегда пустой....


Приведите весь код проверки. Такое быть не может. В начале идет добавление в коллекцию Strategy.StopOrders, затем уже вызов события. Хоть что-то, но должно быть. Иначе и вызова не будет.
Спасибо:

Dmitriy Klimov

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


Mikhail Sukhov
Приведите весь код проверки. Такое быть не может. В начале идет добавление в коллекцию Strategy.StopOrders, затем уже вызов события. Хоть что-то, но должно быть. Иначе и вызова не будет.

Делаю так:
Код

class MyStrategy : Strategy
{
protected override void OnRunning()
{
Trader.StopOrdersChanged += OnStopOrderChanged;

base.OnRunning();
}

private void OnStopOrderChanged(IEnumerable<Order> orders)
{
File.AppendAllText("StopOrders.txt", "Stop orders: " + base.StopOrders.Count.ToString() + Environment.NewLine);
}
}


До этого еще пытался подписываться на Strategy.StopOrderChanged, но это событие так ни разу и не возникло. Условные стоп-заявки в Квике выставляются и исполняются нормально, только вот мой робот об этом ничего не знает [confused] Что-то делаю не так?
Спасибо:
< 1 2 3 4 5  > >>

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

loading
clippy