Здравствуйте!
Имеется активная стоп-заявка, которую необходимо программно снять из LUA-скрипта.
С этой целью была адаптирована найденная на просторах Интернета функция. Поскольку, как тут уже писали представители техподдержки, сразу все активные стоп-заявки из LUA снять нельзя (KILL_ALL_STOP_ORDERS в LUA не поддерживается), приходится перебирать все стоп-заявки, отыскивать из них по флагу активные, получать их номер и по этому номеру уничтожать. Поиск нужных заявок и получение их номера работает, а транзакция их удаления по этому номеру - нет.
Подскажите пожалуйста, что еще можно сделать или как вообще еще возможно удалить активные стоп-заявки из LUA?
Имеется активная стоп-заявка, которую необходимо программно снять из LUA-скрипта.
С этой целью была адаптирована найденная на просторах Интернета функция. Поскольку, как тут уже писали представители техподдержки, сразу все активные стоп-заявки из LUA снять нельзя (KILL_ALL_STOP_ORDERS в LUA не поддерживается), приходится перебирать все стоп-заявки, отыскивать из них по флагу активные, получать их номер и по этому номеру уничтожать. Поиск нужных заявок и получение их номера работает, а транзакция их удаления по этому номеру - нет.
Код |
---|
is_run = true; -- Флаг работы главного цикла программы TRADE_ACC = "SSSSSSSSSSS"; -- Торговый счет CLASS_CODE_FUT = "SPBFUT"; -- Класс ФЬЮЧЕРСОВ SEC_CODE_FUT_FOR_OPEN = "SiM6"; -- Код ФЬЮЧЕРСА для открытия function main() while is_run do killStopOrders(SEC_CODE_FUT_FOR_OPEN); sleep(5000); end; end; function killStopOrders( seccode ) local transaction,bs,res={},{},"" for i=0,(tonumber(getNumberOf("stop_orders"))-1) do bs=getItem("stop_orders",i) if bit.band(bs.flags, 1)~=0 and bs.seccode==seccode then message("Попытка удалить заявку с номером "..tostring(bs.ordernum)); local transaction={ ["TRANS_ID"]=tostring(math.random(1,9999)), ["ACTION"]="KILL_STOP_ORDER", ["CLASSCODE"]=CLASS_CODE_FUT, ["SECCODE"]=SEC_CODE_FUT_FOR_OPEN, ["STOP_ORDER_KEY"]=tostring(bs.ordernum), -- ["ACCOUNT"] = TRADE_ACC, } -- ЕСЛИ функция вернула строку диагностики ошибки, ТО значит транзакция не прошла local Result = sendTransaction(Transaction); if Result ~= "" then message("Удаление стоп-заявки не удалось!\nОШИБКА: "..tostring(Result)); end; end; end; end; |