Добрый день! Как задать срок действия лимит заявки в функции sendTransaction (tab)? Для стоп-лимит заявки есть параметр - EXPIRY_DATE, а для лимит - не нашел... вченашняя снимается автоматически системой... спасибо.
Igor Golovin написал: Добрый день! Как задать срок действия лимит заявки в функции sendTransaction (tab)? Для стоп-лимит заявки есть параметр - EXPIRY_DATE, а для лимит - не нашел... вченашняя снимается автоматически системой... спасибо.
Это называется «перенос заявки», и для его использования нужен «универсальный формат» в терминах Quik, там другие названия полей таблицы для sendTransaction.
Проблема только в том, что в общем случае это не работает, так как для фондового рынка МосБиржа не поддерживает перенос заявок, они всегда снимаются. А вот для срочного рынка 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/)...
Я пока для себя эту тему отложил в сторону, а потом планирую делать это в общем виде без жёсткой привязки к этому функционалу. То-есть скрипт сам будет отслеживать конец и начало торговой сессии, и сам перевыставлять заявки. В любом случае это придётся делать, чтобы работало на тех разделах, где функция переноса заявки отсутствует в принципе...