Заявки не переносятся на следующий день, Проблема с переносом заявок на рынке FORTS, выставленных с использованием LUA. Не работают флаги ["Дата экспирации"] и ["Expiration date"] в SendTransaction
Выставленные через LUA заявки не переносятся на следующий день в тех случаях когда используется параметр EXPIRY_DATE с соответствующими значениями (будущая дата / 'GTC'). Работаю с фьючерсами на FORTS через Финам, версия программы последняя на сервере - 7.6.1.1. Эта проблема уже обсуждалась на форуме https://forum.quik.ru/messages/forum10/message14444/topic1590/#message14444 Однако, предложенное решение - использование названий параметров на русском, не работает, по крайней мере у меня. Квик отказывается их понимать и выдает ошибку Такое впечатление, что интерпретатор вообще никак не реагирует на флаг "EXPIRY_DATE", заявка выставляется с сроком жизни до конца сессии, даже если туда забивать ошибочные данные, например, -- прошедшую дату.
Пример кода: t = { -- Задаем базовые параметры ордера ["CLASSCODE"] = FORTS , --заявки выставляются только на рынке FORTS ["SECCODE"] = SEC_CODE, ["ACTION"] = "NEW_ORDER", ["ACCOUNT"] = ACCOUNT, --задано в начале функции по умолчанию ["CLIENT_CODE"] = CLIENT_CODE, --задано в начале функции по умолчанию ["TYPE"] = "L", -- лимитированные заявки ["OPERATION"] = tradeDir, -- направление продажи ('B' или 'S') ["PRICE"] = tostring(Price), ["QUANTITY"] = tostring(lots), ["TRANS_ID"] = tostring(uniq_trans_id), ["EXPIRY_DATE"] = 'GTC' }
Здравствуйте, Согласно документации: EXPIRY_DATE - это срок действия стоп-заявки. т.е. для лимитированных заявок он не предназначен. Для лимитированных заявок, возможен вариант только с указанием команд в кириллице. То что у Вас он не работает, означает что Вы что-то делаете не так. Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл. Открыв полученный файл блокнотом Вы увидите как команды должны выглядеть. Перемешивать команды на кириллице с обычными нельзя.
Sergey Gorokhov написал: Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл.
Эту фразу я уже не раз читал, но, признаться, решительно не понимаю что она значит. Есть ли пример с кодом?
Здравствуйте,
Пример Вы можете получить сами, для этого и нужно открыть в QUIK таблицу карман транзакций, правой кнопкой мыши добавить нужную транзакцию (она отобразится в кармане), далее сохраняете ее в tri файл, открываете файл и смотрите параметры, которые и нужно будет применить.
Sergey Gorokhov написал: Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл.
Эту фразу я уже не раз читал, но, признаться, решительно не понимаю что она значит. Есть ли пример с кодом?
Здравствуйте,
Пример Вы можете получить сами, для этого и нужно открыть в QUIK таблицу карман транзакций, правой кнопкой мыши добавить нужную транзакцию (она отобразится в кармане), далее сохраняете ее в tri файл, открываете файл и смотрите параметры, которые и нужно будет применить.
Вот опять. Я никогда не работал таким образом и понятие не имею о чем речь + никакой инфо в справке луа и квик я не нашел, как и подробных примеров. Как человеку, который не сталкивался с проблемой понять смысл сказанного? Уточню вопросы. 1. Как мне "открыть" карман транзакций? В каком разделе меню? В разделе "Окна" я не вижу окна с таким именем. В справке Квик вообще нет упоминания "кармана транзакций". 2. Каким способом я должен "добавить" транзакцию в неизвестный мне карман. Написав код в теле робота луа? Каким образом это должно выглядеть в виде кода? Какие операции / методы для этого используются? Или каким-то иным способом? 3. Каким образом я должен "сохранить" в tri файл транзакцию после добавления неизвестным способом в неизвестное окно. Каково полное имя файла, какой метод использовать для сохранения.
Иван, в документации про карман транзакции информация имеется.
Раздел 3. Просмотр информации/Таблица «Карман транзакций» Таблица добавляется через пункт меню Создать Окно - Настроить меню. Строите таблицу, в ней нажимаете правой кнопкой мыши, выбираете "положить в карман", далее заполняете все поля транзакции, транзакция появляется в таблице, выделяете ее, снова нажимаете правой кнопкой мыши и выбираете "сохранить транзакции в tri файл". Открываете файл и получаете текст, который и используете в LUA.
Egor Zaytsev написал: Раздел 3. Просмотр информации/Таблица «Карман транзакций»
Спасибо за разъяснения и информацию. К сожалению в Предложенном разделе не смог найти алгоритм автоматизации торговли с переносом заявок Насколько я понял из текста Вы предлагаете осуществлять некоторые действия вручную, но вручную я и так могу выставлять заявки, которые будут переноситься на следующий день. Или я что-то неправильно понял.
Да Вы не правильно поняли. Давайте еще раз почитаем вместе весь диалог. Вот Вы говорите:
Цитата
Иван Ру написал: Однако, предложенное решение - использование названий параметров на русском, не работает, по крайней мере у меня
На что Вам был дан следующий ответ:
Цитата
Sergey Gorokhov написал: То что у Вас он не работает, означает что Вы что-то делаете не так. Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл. Открыв полученный файл блокнотом Вы увидите как команды должны выглядеть.
Т.е. Вы не знаете какие команды на русском указать в транзакции, а Вам сказали способ как это узнать. Что именно из ответа Вам не понятно?
Да Вы не правильно поняли. Давайте еще раз почитаем вместе весь диалог. Вот Вы говорите:
Цитата
Иван Ру написал: Однако, предложенное решение - использование названий параметров на русском, не работает, по крайней мере у меня
На что Вам был дан следующий ответ:
Цитата
Sergey Gorokhov написал: То что у Вас он не работает, означает что Вы что-то делаете не так. Добавьте нужную транзакцию в Карман транзакций и сохраните ее от туда в tri файл. Открыв полученный файл блокнотом Вы увидите как команды должны выглядеть.
Т.е. Вы не знаете какие команды на русском указать в транзакции, а Вам сказали способ как это узнать. Что именно из ответа Вам не понятно?
Ну в общем-то - ничего. Я же объяснил, что не знаком с процедурой вообще (при том что программирую на луа достаточно давно). По-видимому автор опускает большинство деталей, которые для него очевидны, а мне не известны.
"Т.е. Вы не знаете какие команды на русском указать в транзакции"
Почему? Читал рекомендации на форуме. Я их использовал, они не работают. Хотя неплохо бы уточнить, о чем Вы вообще говорите, об изначальном коде в LUA и параметрах ордера?
Вот разберем простую фразу "Добавьте нужную транзакцию в Карман транзакций "
Это замечательно, только я не понимаю, что автор имеет ввиду -- каким образом создать транзакцию и где? Каким образом добавить ее в карман транзакций который я прежде вообще ни разу не использовал. Ну давайте попробую обо всех деталях догадываться сам. Для начала, мне очевидно необходимо открыть соответствующее окно "Карман транзакций". У меня его пока нет, а при попытке открыть окно "Карман транзакций" у меня появляется меню "Создание кармана транзакций". Что мне там делать? Допустим я начинаю пытаться догадываться что делать дальше и предполагаю что надо выбрать "рынок ФОРТС фьючерсы" - Доступные транзакции: Ввод заявок, затем добавляю все поля "Доступные параметры". У меня появляется замечательное пустое окно. И что мне дальше с ним делать? Давайте я интуитивно предположу, что я, наверное, должен с помощью мышки перетащить туда заявку из окна "Таблица заявок". Перетащил.. бросил первую попавшуюся... нигде полей связаных со сроком ее жизни я вообще не вижу. Только дата экспирации (фьючерса).
Иван Ру написал: Я же объяснил, что не знаком с процедурой вообще (при том что программирую на луа достаточно давно).
Описание функционала есть в документации, которая открывается клавишей F1. -Раздел 3. Просмотр информации --Таблица «Карман транзакций»
Цитата
Иван Ру написал: И что мне дальше с ним делать? Давайте я интуитивно предположу, что я, наверное, должен с помощью мышки перетащить туда заявку из окна "Таблица заявок". Перетащил.. бросил первую попавшуюся... нигде полей связаных со сроком ее жизни я вообще не вижу. Только дата экспирации (фьючерса).
Нажмите правой кнопкой мыши по таблице Карман транзакций и укажите пункт Положить в карман. Найдите в таблице нужную транзакцию, откроется форма ввода заявки. Эта форма не настоящая, она не создает заявку, а просто добавляет (как бы записывает) данные о транзакции в карман. Заполните форму, ровно так как Вам нужно, Конкретно поставьте признак Переносить заявку и укажите нужную дату. В обще все параметры укажите ровно такак как Вам надо в LUA. После чего сохраните данные и кармана в tri файл, в контекстном меню пункт Сохранить транзакции в tri файл. Полученный файл можно открыть блокнотом.
Добрый день. Принцип формирования транзакций из QLua в так называемом универсальном формате с использованием "Кармана транзакций" подробно описан в официальной документации (документ 'Использование Lua в Рабочем месте QUIK.pdf'. Файл можно найти, например, в архиве quik_7.4.0_upd.zip в директории Doc\Lua.), раздел "4. Отправка транзакций из Lua скрипта"
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
Nikolay Pavlov написал: Добрый день. Принцип формирования транзакций из QLua в так называемом универсальном формате с использованием "Кармана транзакций" подробно описан в официальной документации (документ 'Использование Lua в Рабочем месте QUIK.pdf'. Файл можно найти, например, в архиве quik_7.4.0_upd.zip в директории Doc\Lua.), раздел "4. Отправка транзакций из Lua скрипта"
Спасибо, решить проблему удалось за исключением одного нюанса. Прежде я использовал поле ["CLIENT_CODE"] куда вписывал уникальный идентификатор, по которому находил все заявки выставленные конкретным роботом. В версии на русском это поле использовать нельзя -- интерпретатор его не понимает и ругается. В три-файле аналога я тоже не вижу. Есть ли все-таки у него какая-либо русскоязычная альтернатива?
Иван Ру написал: Спасибо, решить проблему удалось за исключением одного нюанса. Прежде я использовал поле ["CLIENT_CODE"] куда вписывал уникальный идентификатор, по которому находил все заявки выставленные конкретным роботом. В версии на русском это поле использовать нельзя -- интерпретатор его не понимает и ругается. В три-файле аналога я тоже не вижу. Есть ли все-таки у него какая-либо русскоязычная альтернатива?
Добрый день. Просто создайте необходимую транзакцию через Карман транзакций и сохраните ее в *.tri файл, как это описано в документации и Вы увидите, что код клиента для транзакций по фьючерсам FORTS заполняется в поле 'Комментарий' в универсальном формате: TRANS_ID=1;CLASSCODE=SPBFUT;ACTION=Ввод заявки;Торговый счет=XXXXXXX;К/П=Покупка;Тип=Лимитированная;Класс=SPBFUT;Инструмент=AUM7;Цена=12.0000;Количество=22;Условие исполнения=Поставить в очередь;Комментарий=XXXXXX/test;Переносить заявку=Нет;Дата экспирации=20170503;
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip