Помогите пожалуйста переделать эту функцию, чтобы она снимала не все активные заявки, а каждую пятую активную заявку.
Спасибо
Это нужно чтобы когда засигналит соседний робот, эта функция сняла не все, а часть этих заявок, чтобы освободить немного денег.
Спасибо
Это нужно чтобы когда засигналит соседний робот, эта функция сняла не все, а часть этих заявок, чтобы освободить немного денег.
Код |
---|
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 |