когда вы говорите терминалу вручную "сними все" он посылает транзакции для каждой бумаги, которая есть у вас в портфеле. То же самое необходимо делать и вам из скрипта
когда вы говорите терминалу вручную "сними все" он посылает транзакции для каждой бумаги, которая есть у вас в портфеле. То же самое необходимо делать и вам из скрипта
Естественно, что я заполняю поля, пример: ['TRANS_ID'] = '1' -- Номер транзакции ['ACCOUNT'] = 'SPBFUT00001' -- Код счета ['CLASSCODE'] = 'SPBFUT' -- Код класса ['SECCODE'] = 'BRG0' -- Код инструмента ['ACTION'] = 'KILL_ALL_ORDERS', -- Тип транзакции
['TRANS_ID'] = '1', -- Номер транзакции ['ACCOUNT'] = 'L01-00000F00', -- Код счета ['CLASSCODE'] = 'TQBR', -- Код класса ['CLIENT_CODE'] = '123456', -- Код клиента ['SECCODE'] = 'ALRS', -- Код инструмента ['ACTION'] = 'KILL_ALL_ORDERS', -- Тип транзакции ('NEW_ORDER' - новая заявка)
Ошибка точно такая же: "Отправка транзакций данного типа из QPILE-скрипта не поддерживается."
Александр М написал: Уважаемая тех.поддержка, когда вы ответите на мой запрос?
Добрый день.
Транзакции, выполняющие групповое снятие заявок, не поддерживаются:
«KILL_ALL_ORDERS» – снять все заявки из торговой системы, «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на сделки РЕПО.
Александр М написал: Уважаемая тех.поддержка, когда вы ответите на мой запрос?
Добрый день. Транзакции, выполняющие групповое снятие заявок, не поддерживаются:
«KILL_ALL_ORDERS» – снять все заявки из торговой системы, «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на сделки РЕПО.
Тогда непонятно почему, в Документации по QUIK "Раздел 6. Совместная работа с другими приложениями" начиная как минимум с 7 версии и по текущую есть описание групповых типов:
"6.11 Импорт транзакций" 6.11.3 Формат .tri-файла с параметрами транзакций ACTION Вид транзакции, имеющий одно из следующих значений: «KILL_ALL_ORDERS» – снять все заявки из торговой системы, «KILL_ALL_STOP_ORDERS» – снять все стоп-заявки, «KILL_ALL_NEG_DEALS» – снять все заявки на внебиржевые сделки и заявки на сделки РЕПО, «KILL_ALL_FUTURES_ORDERS» – снять все заявки на рынке FORTS,
Команды снятия группы заявок по условию («KILL_ALL_ORDERS», «KILL_ALL_STOP_ORDERS», «KILL_ALL_NEG_DEALS», «KILL_ALL_FUTURES_ORDERS») обрабатываются следующим образом: 1. Параметры «CLASSCODE», «TRANS_ID», «ACTION», ACCOUNT являются обязательными. 2. Возможные дополнительные параметры для команд снятия заявок по условию: — «KILL_ALL_ORDERS»: «SECCODE», «ACCOUNT», «OPERATION», «CLIENT_CODE», «COMMENT», — «KILL_ALL_STOP_ORDERS»: «SECCODE», «ACCOUNT», «OPERATION», «CLIENT_ CODE», «COMMENT», «EXPIRY_DATE», — «KILL_ALL_NEG_DEALS»: «SECCODE», «ACCOUNT», «OPERATION», «CLIENT_ CODE», «COMMENT», «PARTNER», «SETTLE_CODE», — «KILL_ALL_FUTURES_ORDERS»: «SECCODE», «ACCOUNT», «OPERATION», «COMMENT», «CLIENT_CODE», «BASE_CONTRACT». 3. Снятию подлежат заявки, соответствующие всем указанным в транзакции параметрам (логическое «И»).
Также вы НЕ указали тип KILL_ALL_FUTURES_ORDERS, значит он поддерживается? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?
Этот раздел относит в tri файлам. В разделе Раздел 8. Алгоритмический язык QPILE/Функции для работы с заявками сказано как раз про ограничения для Qpile.
Egor Zaytsev написал: Этот раздел относит в tri файлам. В разделе Раздел 8. Алгоритмический язык QPILE/Функции для работы с заявками сказано как раз про ограничения для Qpile.
К сожалению по Lua вы вообще в документации не расписали структуру таблицы транзакций для ее отправки с описанием всех ДЕЙСТВУЮЩИХ полей и ДЕЙСТВУЮЩИХ значений. Язык Lua работает с версии 6.17 (насколько я помню), а документации все нет.
Вы не ответили. Тип "KILL_ALL_FUTURES_ORDERS" работает в Lua? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?
Уважаемая тех.поддержка, когда вы до конца ответите на мой запрос (см. выше)?
Зачем это искусственное ограничение сделали? Транзакции преобразуются в стандартные запросы пользователя, кто мешает транзакцию на групповое снятие отработать, если в ручном режиме это прекрасно работает и в документации по транзакциям эти типы предусмотрены?
Александр М написал: Вы не ответили. Тип "KILL_ALL_FUTURES_ORDERS" работает в Lua? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?
KILL_ALL_FUTURES_ORDERS работает по акциям не работает. связано это с исторически сложившимися (еще со времен QPILE) архитектруными особенностями. Изменить это нельзя.
Сами по себе транзакции ALLL Выполняются НЕ сервером QUIK, а непосредственно терминалом QUIK. Терминал просто в цикле перебирает заявки и снимает те которые удовлетворяют заданным условиям. В коде Вы легко можете сделать то же самое.
Александр М написал: Вы не ответили. Тип "KILL_ALL_FUTURES_ORDERS" работает в Lua? Если да, то почему фьючерсы я могу снять 1 командой, а акции нет?
KILL_ALL_FUTURES_ORDERS работает по акциям не работает. связано это с исторически сложившимися (еще со времен QPILE) архитектруными особенностями. Изменить это нельзя.
Сами по себе транзакции ALLL Выполняются НЕ сервером QUIK, а непосредственно терминалом QUIK. Терминал просто в цикле перебирает заявки и снимает те которые удовлетворяют заданным условиям. В коде Вы легко можете сделать то же самое.
Удивительно, с технической точки зрения не вижу разницы в сложности между снятием фьючерсной заявки или по акциям.
В терминале есть ограничение на число транзакций на снятие в секунду? Я могу в цикле запулить 500 транзакций через sendTransaction(Transaction), если мне надо снять 500 заявок? Если нет, то как мне гарантированно это сделать?
Александр М написал: Я могу в цикле запулить 500 транзакций
Если ваши лимиты позволяют в цикле (сиречь в пределах секунды) пулять по 500 заявок на спот, может стоит рассмотреть другие продукты от той же арки или от мамбы или еще от кого-нибудь вместо попыток участвовать в формуле 1 на запорожце?
Александр М написал: В терминале есть ограничение на число транзакций на снятие в секунду?
В терминале нет. И даже на сервере нет. А вот на бирже есть. Легко можно попасть на флуд контроль.
Цитата
Александр М написал: Я могу в цикле запулить 500 транзакций через sendTransaction(Transaction), если мне надо снять 500 заявок? Если нет, то как мне гарантированно это сделать?
Вы можете в цикле делать что угодно, вопрос с какой скоростью оно обработается дальше.
Александр М написал: В терминале есть ограничение на число транзакций на снятие в секунду?
В терминале нет. И даже на сервере нет. А вот на бирже есть. Легко можно попасть на флуд контроль.
Цитата
Александр М написал: Я могу в цикле запулить 500 транзакций через sendTransaction(Transaction), если мне надо снять 500 заявок? Если нет, то как мне гарантированно это сделать?
Вы можете в цикле делать что угодно, вопрос с какой скоростью оно обработается дальше.
На счет скорости я понимаю, мне главное понять, я могу в цикле выставить условно 500 транзакций, каждая на снятие 1 заявки без всяких sleep, ожиданий отработки предыдущей и т.д.
По вашим же словам Групповая ручная заявка преобразуется на клиентском QUIK в кучу запросов на снятие конкретной заявки и если у меня стоит 500 открытых заявок, то они должны сняться максимально быстро подряд, откуда тут флуд-контроль?
ответ. Можете. Скорость исполнения транзакция и получени ответов на них зависит от инфраструктуры.
Я проверил, ручное групповое снятие заявок работает гораздо быстрее. Код не причем, там просто в цикле пуляются транзакции. Я должен иметь право снимать ВСЕ свои заявки независимо от их количества, поэтому я хочу получить ответ на вопрос на счет флуд-контроля на бирже.