Здравствуйте!
Имеется активная стоп-заявка, которую необходимо программно снять из 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;
|