Помогите пожалуйста переделать эту функцию, чтобы она снимала не все активные заявки, а каждую пятую активную заявку.
Спасибо
Это нужно чтобы когда засигналит соседний робот, эта функция сняла не все, а часть этих заявок, чтобы освободить немного денег.

Спасибо
Это нужно чтобы когда засигналит соседний робот, эта функция сняла не все, а часть этих заявок, чтобы освободить немного денег.

| Код |
|---|
function killAllOrders(table_mask)
-- данная функция отправит транзакции на отмену АКТИВНЫХ заявок соответствующим фильтру указанному как входящий параметр table_mask
-- список всех возможных параметров : ACCOUNT,CLASSCODE,SECCODE,OPERATION,CLIENT_CODE,COMMENT
-- если вызвать функцию с параметром nil - снимутся ВСЕ активные заявки
local i,key,val,result_num=0,0,0,0
local tokill=true
local row={}
local result_str=""
for i=0,getNumberOf("orders")-1,1 do
row=getItem("orders",i)
tokill=false
--toLog(log,"Row "..i.." onum="..row.order_num)
if orderflags2table(row.flags).active then
tokill=true
--toLog(log,"acitve")
if table_mask~=nil then
for key,val in pairs(table_mask) do
--toLog(log,"check key="..key.." val="..val)
--toLog(log,"strlowe="..string.lower(key).." row="..row[string.lower(key)].." tbl="..val)
if string_lower(key)=='comment' then
if string_find(string_lower(row.brokerref),string_lower(val))==nil then tokill=false break end
else
if row[string_lower(key)]~=val then tokill=false break end
end
end
end
end
if tokill then
--toLog(log,"kill onum"..row.order_num)
res,ms=killOrder(tostring(row.order_num),row[securityfiledname],row.class_code)
result_num=result_num+1
--toLog(log,ms)
if res then
result_str=result_str..row.order_num..","
else
result_str=result_str.."!"..row.order_num..","
end
end
end
return true,"QL.killAllOrders(): Sended "..result_num.." transactions. order_nums:"..result_str
end |