← Back

Не "зажигается" событие своей сделки при работе с QUIK Junior

Собственно сабж. Написал для теста маленькую стратегию, которая просто при старте шлет заявку по рынку. Подписался на всевозможные вариации реагирования на свою сделку. И вне стратегии подписался на свои сделки трейдера и внутри стратегии подписался на сделки как трейдера, так и просто ордерЧенжд. Стратегия стартует, заявку шлет, получается сделка, но ни в один обработчик события своей сделки мы не "падаем". Все это на демо квике. Более того, также не работает пример, который писали в обучении S# (там тоже есть простая программка, которая подписывается на свою сделку и выводит ее в таблицу). Грешу на квик либо на то, что я что-то упустил настраивая его. Но что можно упустить, если заявка посылается.. Вообщем жду помощи или совета.

Спасибо.

Comments (11)

Login or Create account, Log in or register to leave a comment

FlashPlayer
FlashPlayer Author

Теперь другая проблема. Ничего не менял (запустил на другой машине) и теперь при свершении своей сделки событие вызывается бесконечно и в итоге вылетает с ошибкой overflow exception. Я совсем не понимаю, что за чудеса.

VassilSanych
VassilSanych

FlashPlayer: Теперь другая проблема. Ничего не менял (запустил на другой машине) и теперь при свершении своей сделки событие вызывается бесконечно и в итоге вылетает с ошибкой overflow exception. Я совсем не понимаю, что за чудеса. Значит где-то бесконечный цикл. Наверное, по ошибке какое-то событие в обработчике вызывает само себя.

Самунджян Артем

FlashPlayer: Стратегия стартует, заявку шлет, получается сделка, но ни в один обработчик события своей сделки мы не "падаем". Спасибо. Скорее всего на таблице "Мои сделки" стоит фильтр и туда не попадают сделки Вашей стратегии по этому инструменту, соответственно и стокшарп их тоже не видит.

FlashPlayer
FlashPlayer Author

Всё - помогли разобраться.

Дело в первой проблеме оказалось в том, что ночью в квике идут эмулированные торги акциями и в них есть баг - частенько квиком не выкидывается событие своей сделки, поэтому S# не реагирует на нее.

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

FlashPlayer
FlashPlayer Author

Теперь новая проблема.

После снятия заявки не происходит события OrderCanceled (как ни подписывайся оно не вызывается), более того все заявки, даже уже снятые, в Trader хранятся в состоянии Active, что по идее является следствием не срабатывания события. Все дело происходит как и с фьючами, так и с акциями в QUIK Junior. Кто-то сталкивался и может ли кто-то проверить, опровергнуть? Приведу простой пример - создаем стратегию и в ней перепишем лишь метод OnStarted таким образом:

protected override void OnStarted() { var newOrder = this.CreateOrder(OrderDirections.Buy, <<Тут какая-то цена ниже рынка, чтобы заявка зависла>>, 1); newOrder.WhenCanceled().Do(Smth).Apply(this); newOrder.WhenRegistered().Do(CancelActiveOrders).Apply(this);

        RegisterOrder(newOrder);

        base.OnStarted();
    }

void Smth() {

    }

По идее при выполнении этого кода мы должны упасть в метод Smth, но этого не происходит, так как отмена заявки не зажигает событие. Проверьте пожалуйста - что не так?

Спасибо.

esper
esper

FlashPlayer: Теперь новая проблема.

После снятия заявки не происходит события OrderCanceled (как ни подписывайся оно не вызывается), более того все заявки, даже уже снятые, в Trader хранятся в состоянии Active, что по идее является следствием не срабатывания события. Все дело происходит как и с фьючами, так и с акциями в QUIK Junior. Кто-то сталкивался и может ли кто-то проверить, опровергнуть? Приведу простой пример - создаем стратегию и в ней перепишем лишь метод OnStarted таким образом:

По идее при выполнении этого кода мы должны упасть в метод Smth, но этого не происходит, так как отмена заявки не зажигает событие. Проверьте пожалуйста - что не так?

Спасибо.

Таблицы все корректно настроены? Verifier запускали? Что говорит ProcessDataError для трейдера?

FlashPlayer
FlashPlayer Author

Апну тему, вдруг поможет..

VassilSanych
VassilSanych

Заметил, что добавление тем здесь мониторится лучше, чем обновление ;)

FlashPlayer
FlashPlayer Author

Все - всем снова спасибо. Очередной мой косяк. Я думал, что событие "заявка снята" генерируется с помощью библиотеки Trans2Quik.dll. А оказывается, событие возникает просто после появления соответствующей строчки в таблице QUIK "Заявки". Ну а я по привычке снял все фильтры кроме "показывать активные заявки". Вот такой косяк. 😊

Есть тогда встречный вопрос - кто знает, для чего используется Trans2Quik.dll, кроме посыла заявок?

esper
esper

FlashPlayer: Есть тогда встречный вопрос - кто знает, для чего используется Trans2Quik.dll, кроме посыла заявок? Для обработки ошибок выставления заявок.

FlashPlayer
FlashPlayer Author

Ясно, спасибо)