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


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


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

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

Теги:


Спасибо:




82 Ответов
1 2 3  > >>
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 07.10.2010
Ответить


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

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


Заявка в стратегии регистрируется через Strategy.RegisterOrder. В этом методе она сохраняется в очередь. Далее, мониторятся события ITrader. Если пришла заявка, которая есть в этой очереди - вызвать событие. Все.
Спасибо:

sergun

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


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

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


Заявка в стратегии регистрируется через Strategy.RegisterOrder. В этом методе она сохраняется в очередь. Далее, мониторятся события ITrader. Если пришла заявка, которая есть в этой очереди - вызвать событие. Все.


Прикол состоит в том, что Strategy.RegisterOrder protected, а желание было использовать его снаружи стратегии и соответственно intellisense его не показал :-)

М.б. (не утверждаю) ему лучше быть public'ом...

PS. Уведомления с нового форума приходят со ссылкой http://192.168.1.1...
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 08.10.2010
Ответить


sergun
Прикол состоит в том, что Strategy.RegisterOrder protected, а желание было использовать его снаружи стратегии и соответственно intellisense его не показал :-)

М.б. (не утверждаю) ему лучше быть public'ом...


Приведите Ваш сценарий, почему решили управлять стратегией из вне.

sergun

PS. Уведомления с нового форума приходят со ссылкой http://192.168.1.1...


Можете мне форварднуть письмо?
Спасибо:

sergun

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


Mikhail Sukhov
sergun
Прикол состоит в том, что Strategy.RegisterOrder protected, а желание было использовать его снаружи стратегии и соответственно intellisense его не показал :-)

М.б. (не утверждаю) ему лучше быть public'ом...


Приведите Ваш сценарий, почему решили управлять стратегией из вне.

>>> В целом иногда функциональность своей стратегии разбить на куски для обеспечения повторной используемости кусков, борьбы со сложностью.
Соответственно образуется новый класс, в конструктор передается стратегия.


sergun

PS. Уведомления с нового форума приходят со ссылкой http://192.168.1.1...


Можете мне форварднуть письмо?


>>> Форварднул.
Автор топика
Спасибо:

Dmitriy Klimov

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


Добрый день всем!

Надеюсь, мой вопрос по теме: как узнать о появлении новых сделок внутри стратегии? Насколько я знаю, подписаться на события внутри объекта, их генерирующего, нельзя.

У меня ситаация такая: при каждом входе в позицию я хочу выставлять Квик-заявку типа QuikStopConditionTypes.TakeProfitStopLimit. И мне надо знать, когда сработает одно из заданных условий, и появится новая сделка, чтобы не дать самой стратегии пытаться выйти из уже закрытой позиции.

И еще второй вопрос: как отменить выставленную TakeProfitStopLimit заявку, если я вышел из позиции по условиям стратегии?

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

sergun

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


Что-то не возникают события Strategy.NewMyTrades и Strategy.OrderChanged при исполнении заявки.
Strategy.NewOrder приходит.
Заявка регистрировалась с помощью Strategy.RegisterOrder.

С чем это может быть связано?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.10.2010
Ответить


Dmitriy Klimov

как узнать о появлении новых сделок внутри стратегии? Насколько я знаю, подписаться на события внутри объекта, их генерирующего, нельзя.


Не понял выражение... Событие Strategy.NewMyTrade.

Dmitriy Klimov

при каждом входе в позицию я хочу выставлять Квик-заявку типа QuikStopConditionTypes.TakeProfitStopLimit.


Выставляете через Strategy.RegisterOrder?

Dmitriy Klimov

И еще второй вопрос: как отменить выставленную TakeProfitStopLimit заявку, если я вышел из позиции по условиям стратегии?


QuikTrader.CancelOrder

Dmitriy Klimov

Еще было бы любопытно знать, насколько такой подход работает быстрее, чем пакетная стратегия из стратегий на тейк-профит и скользящего стоп-лосса?


Не в скорости дело. То, что пишется через Strategy, Вы можете менять под свои условия. А через брокерские стопы Вы так сделать не можете. Так что если достаточно стандартных стопов - лучше их. Со стоп заявками стратегии работают так же, как и с обычными заявками.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.10.2010
Ответить


sergun
Что-то не возникают события Strategy.NewMyTrades и Strategy.OrderChanged при исполнении заявки.
Strategy.NewOrder приходит.
Заявка регистрировалась с помощью Strategy.RegisterOrder.

С чем это может быть связано?


А заявка удовлетворяется? Экспорт запущен? Через ITrader события для такой заявки приходят?
Спасибо:

Dmitriy Klimov

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


Mikhail Sukhov
Dmitriy Klimov

как узнать о появлении новых сделок внутри стратегии? Насколько я знаю, подписаться на события внутри объекта, их генерирующего, нельзя.


Не понял выражение... Событие Strategy.NewMyTrade.

Dmitriy Klimov

при каждом входе в позицию я хочу выставлять Квик-заявку типа QuikStopConditionTypes.TakeProfitStopLimit.


Выставляете через Strategy.RegisterOrder?


Стоп-заявку выставляю через Strategy.RegisterOrder и не соображу, как лучше перехватить событие ее срабатывания внутри стратегии. Событие Strategy.NewMyTrade я могу использовать только из главной программы, а мне надо по сути то же событие перехватить внутри стратегии, это событие генерирующее. Как быть в данном случае? До версии 2.1 был метод Strategy.OnNewMyTrades, сейчас подобного метода нет...
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.10.2010
Ответить


Dmitriy Klimov
Стоп-заявку выставляю через Strategy.RegisterOrder и не соображу, как лучше перехватить событие ее срабатывания внутри стратегии. Событие Strategy.NewMyTrade я могу использовать только из главной программы, а мне надо по сути то же событие перехватить внутри стратегии, это событие генерирующее. Как быть в данном случае? До версии 2.1 был метод Strategy.OnNewMyTrades, сейчас подобного метода нет...


Код
public class MyStrategy : Strategy
{
public MyStrategy()
{
base.NewMyTrade += OnNewMyTrade;
}

private void OnNewMyTrade(MyTrade trade)
{
}
}


Только учтите, сделка приходит не по стоп заявке, а по обычной, которую выставил стоп.
Спасибо:

Dmitriy Klimov

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


Mikhail Sukhov
Dmitriy Klimov
Стоп-заявку выставляю через Strategy.RegisterOrder и не соображу, как лучше перехватить событие ее срабатывания внутри стратегии. Событие Strategy.NewMyTrade я могу использовать только из главной программы, а мне надо по сути то же событие перехватить внутри стратегии, это событие генерирующее. Как быть в данном случае? До версии 2.1 был метод Strategy.OnNewMyTrades, сейчас подобного метода нет...


Код
public class MyStrategy : Strategy
{
public MyStrategy()
{
base.NewMyTrade += OnNewMyTrade;
}

private void OnNewMyTrade(MyTrade trade)
{
}
}


Только учтите, сделка приходит не по стоп заявке, а по обычной, которую выставил стоп.

Понял. Спасибо! Не знал, что так можно...
Спасибо:

sergun

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


Mikhail Sukhov
sergun
Что-то не возникают события Strategy.NewMyTrades и Strategy.OrderChanged при исполнении заявки.
Strategy.NewOrder приходит.
Заявка регистрировалась с помощью Strategy.RegisterOrder.

С чем это может быть связано?


А заявка удовлетворяется? Экспорт запущен? Через ITrader события для такой заявки приходят?




Удовлетворяется. Экспорт запущен с помощью метода StartExport. (Он запускает экспорт в т.ч. и сделок? Кстати в мануле не укажите конкретно что именно экспортируется этим методом, а то там "и т.д.")
Через ITrader.NewMyTrades пока не проверял.
Автор топика
Спасибо:

Dmitriy Klimov

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


Mikhail Sukhov
Dmitriy Klimov

И еще второй вопрос: как отменить выставленную TakeProfitStopLimit заявку, если я вышел из позиции по условиям стратегии?


QuikTrader.CancelOrder


Михаил, можно ли такую заявку снять с помощью Strategy.CancelActiveOrders? У меня почему-то не получилось. Или условные заявки снимаются только через QuikTrader.CancelOrder?
Спасибо:

sergun

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


sergun
Mikhail Sukhov
sergun
Что-то не возникают события Strategy.NewMyTrades и Strategy.OrderChanged при исполнении заявки.
Strategy.NewOrder приходит.
Заявка регистрировалась с помощью Strategy.RegisterOrder.

С чем это может быть связано?


А заявка удовлетворяется? Экспорт запущен? Через ITrader события для такой заявки приходят?




Удовлетворяется. Экспорт запущен с помощью метода StartExport. (Он запускает экспорт в т.ч. и сделок? Кстати в мануле не укажите конкретно что именно экспортируется этим методом, а то там "и т.д.")
Через ITrader.NewMyTrades пока не проверял.


Проверил, через ITrader.NewMyTrades не приходят.. т.е. при старте экспорта сюда сваливаются имеющиеся на тот момент мои сделки, а новые НЕ приходят....
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.10.2010
Ответить


sergun
Проверил, через ITrader.NewMyTrades не приходят.. т.е. при старте экспорта сюда сваливаются имеющиеся на тот момент мои сделки, а новые НЕ приходят....


ProcessDataError молчит? NewOrders OrdersChanged - приходят? Если запустите Sample и сделайте парочку заявок - сделки придут?
Спасибо:

sergun

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


Mikhail Sukhov
sergun
Проверил, через ITrader.NewMyTrades не приходят.. т.е. при старте экспорта сюда сваливаются имеющиеся на тот момент мои сделки, а новые НЕ приходят....


ProcessDataError молчит? NewOrders OrdersChanged - приходят? Если запустите Sample и сделайте парочку заявок - сделки придут?


Сам Квик матерится на таблицу "Позиция по деривативам", говорит что что-то переполнено и экспорт таблицы остановлен,
правда я эту таблицу особенно и не использую. в CustomDataError данные сообщения не попадают.

Все очень странно.

Все обработчики событий в Strategy я оборачиваю в lock для некоторого lockObject стратегии.
Реагирую в т.ч. на Strategy.NewTrades. Может поток NewTrades не пущает более редкие события типа NewMyTrades?

Кстати все свойства и методы Strategy и ITrader thread-safe?
Автор топика
Спасибо:

sergun

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


Mikhail Sukhov
sergun
Проверил, через ITrader.NewMyTrades не приходят.. т.е. при старте экспорта сюда сваливаются имеющиеся на тот момент мои сделки, а новые НЕ приходят....


ProcessDataError молчит? NewOrders OrdersChanged - приходят? Если запустите Sample и сделайте парочку заявок - сделки придут?


В Sample - приходят.

Не пойму что у меня не так.. Ну никак не вижу приход этих событий у себя.. И логгинг и брейкпоинт.
Повторюсь - делаю критические секции на обработку всех событий и в т.ч. на весьма плотное событие NewTrades.
Автор топика
Спасибо:

sergun

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


sergun
Mikhail Sukhov
sergun
Проверил, через ITrader.NewMyTrades не приходят.. т.е. при старте экспорта сюда сваливаются имеющиеся на тот момент мои сделки, а новые НЕ приходят....


ProcessDataError молчит? NewOrders OrdersChanged - приходят? Если запустите Sample и сделайте парочку заявок - сделки придут?


В Sample - приходят.

Не пойму что у меня не так.. Ну никак не вижу приход этих событий у себя.. И логгинг и брейкпоинт.
Повторюсь - делаю критические секции на обработку всех событий и в т.ч. на весьма плотное событие NewTrades.



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

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.10.2010
Ответить


sergun

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


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

sergun

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


Mikhail Sukhov
sergun

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


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



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

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 не проверял, завтра проверю...
Спасибо:
1 2 3  > >>

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

loading
clippy