Как задать срок действия лимит заявки в функции sendTransaction (tab)?

Страницы: 1
RSS
Как задать срок действия лимит заявки в функции sendTransaction (tab)?
 
Добрый день! Как задать срок действия лимит заявки в функции sendTransaction (tab)? Для стоп-лимит заявки есть параметр - EXPIRY_DATE, а для лимит - не нашел... вченашняя снимается автоматически системой... спасибо.
 
Цитата
Igor Golovin написал:
Добрый день! Как задать срок действия лимит заявки в функции sendTransaction (tab)? Для стоп-лимит заявки есть параметр - EXPIRY_DATE, а для лимит - не нашел... вченашняя снимается автоматически системой... спасибо.
Это называется «перенос заявки», и для его использования нужен «универсальный формат» в терминах Quik, там другие названия полей таблицы для sendTransaction.

Со страницы:https://arqatech.com/ru/support/files/
Скачайте: «Документация по языку LUA в QUIK и примерыzip, 5.6 МБ» (https://arqatech.com/upload/iblock/194/quik_lua.zip)
Там в файле «Использование Lua в Рабочем месте QUIK.pdf», в разделе «4. Отправка транзакций из Lua скрипта» на страницах 31 и 32 есть пример использования этого формата.

Проблема только в том, что в общем случае это не работает, так как для фондового рынка МосБиржа не поддерживает перенос заявок, они всегда снимаются. А вот для срочного рынка FORTS работает, и можно использовать.
Поэтому рекомендуют делать так: Создаёте таблицу «Карман транзакций» в Quik, в ней создаёте для нужного класса нужную вам транзакцию, например «Ввод заявки» со сроком действия, и затем сохраняете этот карман транзакций в .tri файл. Из которого и берёте названия полей для заполнения таблицы в «универсальном формате» для sendTransaction.

Далее после переноса заявки у неё меняется номер order_num, то-есть в начале новой торговой сессии выставляется фактически новая заявка с параметрами из старой заявки. У новой заявки через поле linkedorder передаётся номер старой заявки, которая была снята в конце прошлой торговой сессии и по которой была выставлена эта новая заявка. Также у новой заявки  trans_id равен нулю. Поэтому связывать новую заявку заявку со старой нужно именно по полю linkedorder. Нужно ещё учитывать ряд вещей, например, что поле linkedorder хранит номер заявки предыдущей торговой сессии, а не номер самой первой исходной заявки. То-есть, номера в order_num и linkedorder будут постоянно сдвигаться, каждый день. Также в сделках отсутствует поле linkedorder, поэтому если вызов OnOrder с номером новой заявки потерялся во время вечернего клиринга, то вызовы OnTrade по новой заявке будут содержать trans_id равный нулю, и order_num который неизвестно к чему относится. Я их назвал «сделки из ниоткуда»... обсуждалось в теме «order_num == nil и status == 3 в ответ на NEW_ORDER» (https://forum.quik.ru/forum10/topic3525/)...

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