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

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


Каковы условия возникновения этих событий у стратегии по сравнению с аналогичными событиями в 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