Блог им. Sergey_gt

Робот под Quik

Робот под Quik

Задача, которая была поставлена показалась мне на первый взгляд достаточно тривиальной. Нужно было выставить заявки и по их исполнению пересчитать параметры и выставить новые. Все вроде просто. Но есть один нюанс, как в старом анекдоте. А как выяснилось позже нюансов очень много.Начну с того, что в процедуре getOrderByNumber  order_id нифига не order_id, а order_num   С нее, то все и началось :-)И так если задача стоит выставить одну заявку, то какие могут быть проблемы, допустим для пересекающихся средних или типа того, но если у нас массив заявок и исполнение каждой влечет за собой пересчет всего алгоритма. Если сравнивать Qpile и Lua то, помимо всего прочего здесь есть функции обратного вызова, которые сулят много всяких вкусностей: таких как событийное исполнение наших процедур. Но в тот же момент могут создать своеобразную многопоточность.А здесь по подробней.Есть OnOrder,OnTransReply, OnTrade именно в таком порядке их срабатывание мне кажется логичным(в документации не указана их последовательность). Честно говоря, на это я убил целую неделю. Эти функции выполняются в другом порядке. Они мне были нужны для того, что бы ухватиться за отправленную заявку. У каждой заявки отправленной через Lua или Qpile есть id. Но нам интересен order_num. Это тот уникальный номер, который в системе присваивается каждой транзакции. По нему очень удобно следить за тем, что с ней происходит. Моя задача была найти в потоке транзакций мою и отследить ее состояние. В идеале мне хотелось получить ее номер на первой стадии, а в момент исполнения произвести ряд манипуляций, но есть нюанс :-) Во первых функции исполняются в последовательности OnTransReply, OnTrade, OnOrder.Функция OnTransReply(ответ терминала на транзакцию пользователя) может вернуть nil, а может вернуть нашу заветную цифру, как карта ляжет так в документации и написано :-). То есть рассчитывать не можем.OnTrade (получение сделки) вроде все сделка совершилась, а нихрена. Эта функция не отдает order_id. Получается, что только когда все произошло на функции OnOrder(получение новой заявки) у нас есть доступ к order_num и order_id для отслеживания транзакции.Еще конечно очень жаль, что при тестировании стратегий в Quik на демо счете вполне нормальным является отправка транзакции в течении 3мин-3часов. И вываливание различных ошибок:Communication gate is downНевозможно выполнение транзакций по классу «Фьючерсы FORTS». Шлюз с торговой системой недоступен.Error del.Trans:  Указанная транзакция по указанному классу не найдена: «SPBFUT».Net error: [10053] Software caused connection abortИ т.д. и т.п.В конечном итоге робот был передан заказчику и я рассчитываю что все ок.
Хотелось написать больше про написания робота, но сейчас уже ломы.
463 | ★6
5 комментариев
Я тоже буду у Вас заказывать роботов..!!!!++++++++++++++
avatar
MasterDm, спасибо. Пишу также индикаторы. Обращайтесь.
avatar
Жалко заказчика… :)
avatar
Hedgehog, почему? Кстати, заметил что вы торгуете фигуры как и я. Я потерял свой торговый привод после поломки SSD и буду его в ближайшее время восстанавливать. И выставлю на продажу. Думаю он вам понравится.
avatar

Читайте на SMART-LAB:
Фото
AUD/NZD: быки вошли во вкус, подтягивая котировки к новым высотам
Кросс-курс AUD/NZD после пробоя локального уровня 1.1692 откатился к нему и сейчас активно «топчется», осваивая свежую поддержку. Также стоит...
⚙️ Лензолото: закат "пустышки"
Акции Лензолота резко упали. Что происходит — рассказывают аналитики Market Power   Лензолото (LNZL) ➡️ Инфо и показатели     Возможно,...
Фото
📃 Участвуйте в размещении облигаций «СИБУР»
СИБУР — одна из наиболее динамично развивающихся компаний в глобальной нефтехимии, российский лидер по производству полимеров и каучуков....
Фото
Интер РАО. Неужели дивиденды будут минимальными за 3 года? Обзор производственных результатов и отчета РСБУ за Q4 2025г.
Вышел отчет по РСБУ за Q4 2025г. от компании Интер РАО: 👉Выручка — 15,49 млрд руб.(-14,0% г/г) 👉Себестоимость — 12,79 млрд руб.(-10,8%...

теги блога Сергей o-s-a.net

....все тэги



UPDONW
Новый дизайн