Снятие каждой десятой заявки

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

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


Код
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
 
Здравствуйте,
Можно в цикл добавить счетчик (тапа X=X+1)
Если остаток от деления его на 5 будет равен нулю, снимать заявку.
 
остаток от деления можно получить функцией
Код
math.fmod(x,y)


частное от деления функцией
Код
math.floor(x/y)
 
Спасибо.
Сделал так:
Код
function FreeMoney ()
dofile("C:\\variables.lua")
   i=0
   for sec in string.gmatch(ticker_list,"%a+") do
   sleep (1)
   ostatok=math.mod(i/5)
      if ostatok=0 then 
         table_mask={}
         table_mask.seccode=sec
         killAllOrders(table_mask)
         i=i+1
      end
   end   
end
Страницы: 1
Читают тему
Наверх