"KILL_ALL_FUTURES_ORDERS"

Страницы: 1
RSS
"KILL_ALL_FUTURES_ORDERS", Снятие всех активных заявок на FORTS
 
Здравствуйте!

Подскажите, пожалуйста, почему не работает нижеприведенный скрипт на QLua на одномоментное снятие всех активных лимитированных заявок из таблицы заявок.
Пробовала и на 32-х и на 64-х разрядных версиях Quik?
Обязательные параметры «CLASSCODE», «TRANS_ID», «ACTION», «ACCOUNT» проставлены (Руководство пользователя QUIK (Раздел 6. Совместная работа с другими приложениями, 6.9. Импорт транзакций).).
Скрипт не запускается, но при этом не ссылается на ошибки.
Что не так?

IsRun = true;

function main()

   Killer = {  
       ACCOUNT = '******',
       ACTION = "KILL_ALL_FUTURES_ORDERS",
       TRANS_ID = tostring(8),
       CLASSCODE = 'SPBFUT'  
               }
       Err_Killer = sendTransaction(Killer)    

end             -- оператор завершения function main  

function OnStop()
IsRun = false
return 5000
end
               
 
Елена Сидорова,  добрый день.

Для транзакции KILL_ALL_FUTURES_ORDERS необходимо указать также параметр BASE_CONTRACT - идентификатор базового актива фьючерсов, по которым необходимо снять заявки.
 
Спасибо, Антон, за оперативный ответ!

Прошу прощения, за наивные вопросы, но я только начинаю программировать на QLua.

У меня с десяток активных лимитированных заявок на FORTS на разные контракты.
И, при достижении определенного профита, мой робот продает все купленные контракты по рынку.
А выставленные роботом ранее на продажу лимитированные заявки необходимо все разом снять.
Это у меня пока не получается.
Подскажите, пожалуйста, в каком формате писать базовый контракт, например, на золото и юань. Не смогла найти примеры.
Их в скрипте перечислять последовательно?

BASE_CONTRACT = GOLD,
BASE_CONTRACT = CNYRUB_TOM
и т.д.


И как прописывать в этом случае TRANS_ID = ???
В моем простеньком роботе на покупку для всех контрактов стоит TRANS_ID = tostring(8).

Заранее, спасибо!
Елена.
 
Здравствуйте!

Написала вот такой скрипт для удаления лимитированной заявки GZZ3.
Quik версии 7.19.3.1.
Window 7 32-х разрядный.

Все равно не работает(

IsRun = true;

function main()

   K = {  
       ACCOUNT = '*******',
       ACTION = 'KILL_ALL_FUTURES_ORDERS',
       TRANS_ID = tostring(8),
       OPERATION = S,
       BASE_CONTRACT = GAZR,
       CLASSCODE = 'SPBFUT'  
               }
       Err_K = sendTransaction(K)  

end  

function OnStop()
IsRun = false
return 5000
end

Вообще, ничего не понимаю!
 
Может быть тут найдете ответ
https://quik2dde.ru/viewtopic.php?id=124
 
Спасибо, Владимир, за ссылку.
С ней я знакома.
Прежде, чем задать вопрос здесь, перерыла много чего.

Я научилась снимать конкретную активную лимитированную заявку.
Но это работает только в 64-х разрядной Win 7 с последней версией Quik, из-за длинного номера активной заявки.
Это не работает в 32-х разрядной Win 7 - там не поддерживаются длинные номера заявок.

У меня не получается снять сразу ВСЕ активные лимитированные заявки в 32-х разрядной Win 7 с Quik версии 7.19.3.1.
Скрипт - проще некуда. У всех сносит все заявки без проблем.
А у меня не сносит. Хоть-бы ругался на что-то. А то, молча, не работает, и всё!

Где-то заковыка в самом тексте скрипта, но я ее не вижу!

Может, кто опытный посмотрит, вся надежда на это.

Елена.  
 
Елена Сидорова,  добрый день.

Просим Вас более подробно описать решаемую задачу, а также прислать используемый Lua-скрипт.

Информацию можно отправить на нашу почту quiksupport@arqatech.com, в письме необходимо указать ссылку на данную тему форума.

Заранее благодарим!
 
Цитата
Елена Сидорова написал:
ста, в каком формате писать базовый контракт, например, на золото и юань. Не смогла найти примеры. Их в скрипте перечислять последовательно?
Елена, я бы сделал так:
Прошелся бы циклом по таблице заявок и все заявки, которые выставлены снял бы.
Как снимать заявки, я описывал у себя на канале: https://dzen.ru/a/Y9PqbskAwQ8OF7nq?referrer_clid=1400&
 
В таблице текущих торгов выведите информацию об инструменте и увидите код базового актива. Также его можно получить через метод getSecurityInfo.
 
Цитата
Николай написал:
Цитата
Елена Сидорова написал:
ста, в каком формате писать базовый контракт, например, на золото и юань. Не смогла найти примеры. Их в скрипте перечислять последовательно?
Елена, я бы сделал так:
Прошелся бы циклом по таблице заявок и все заявки, которые выставлены снял бы.
Как снимать заявки, я описывал у себя на канале:  https://dzen.ru/a/Y9PqbskAwQ8OF7nq?referrer_clid=1400&amp ;
Спасибо, Николай, за совет!

Снимать отдельные активные заявки из таблица заявок, в т.ч. с помощью цикла, я умею.
Меня интересует почему у меня не срабатывает команда "KILL_ALL_FUTURES_ORDERS"?
Почему у меня не работает простейший скрипт с данной командой?
Вот в чем загвоздка.

Елена.
 
Цитата
Nikolay написал:
В таблице текущих торгов выведите информацию об инструменте и увидите код базового актива. Также его можно получить через метод getSecurityInfo.
Спасибо, Nikolay, за совет!
Код базового актива для контракта GZZ3 я брала в текущей таблице параметров и подставляла его в свой скрипт

BASE_CONTRACT = GAZR,

- не помогло(

Елена.
 
Цитата
Елена Сидорова написал:
BASE_CONTRACT = GAZR,
кавычки не забыли?
 
Цитата
paluke написал:
Цитата
Елена Сидорова написал:
BASE_CONTRACT = GAZR,
кавычки не забыли?
Помогло!!!
Paluke, огромное Вам спасибо!!!

Я так и думала, что помочь сможет только опытный человек!

Елена.
 
Елена, это следует из синтаксиса языка. Когда Вы пишите, инициализируя ключ в таблице (или просто в коде):

local trans = {
...

BASE_CONTRACT = GAZR,
...

}

Это означает, что необходимо объявить переменную BASE_CONTRACT и инициализировать её значением, содержащееся в другой переменной GAZR.
Т.е. в таком виде GAZR - это переменная. А если она не была инициализирована, то будет nil.

В результате BASE_CONTRACT становился nil.

А вот в таком виде
BASE_CONTRACT = "GAZR"

Уже означает, что переменной необходимо присвоить значение типа строка = "GAZR". Что и следует из того, что все коды инструментов и классов - это строки.
 
Цитата
Елена Сидорова написал:
Здравствуйте!

Вообще, ничего не понимаю!
рекомендую почитать:
https://eligovision.ru/media/upload/lua.pdf
 
Цитата
Nikolay написал:
Елена, это следует из синтаксиса языка. Когда Вы пишите, инициализируя ключ в таблице (или просто в коде):

local trans = {
...

BASE_CONTRACT = GAZR,
...

}

Это означает, что необходимо объявить переменную BASE_CONTRACT и инициализировать её значением, содержащееся в другой переменной GAZR.
Т.е. в таком виде GAZR - это переменная. А если она не была инициализирована, то будет nil.

В результате BASE_CONTRACT становился nil.

А вот в таком виде
BASE_CONTRACT = "GAZR"

Уже означает, что переменной необходимо присвоить значение типа строка = "GAZR". Что и следует из того, что все коды инструментов и классов - это строки.
Всем огромное спасибо!
Вы все мне очень помогли!

Я вам благодарна за оперативную помощь!

Буду двигаться дальше в изучении QLua.

Елена.
Страницы: 1
Читают тему
Наверх