1

Тема: как отменить стоп-заявки на forts

Как отменить все стоп-заявки на forts? Я написал функцию, где ACTION равно KILL_ALL_STOP_ORDERS, но она почему-то неработает, вообще никакой реакции.

2

Re: как отменить стоп-заявки на forts

function KillAllStops(ClassCode,SecCode)

    local ord = "stop_orders"
    for i=0,getNumberOf(ord) do
        local t=getItem(ord, i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == SecCode and orderflags2table(t.flags).active == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_STOP_ORDER",
                    ["CLASSCODE"]=ClassCode,
                    ["SECCODE"]=SecCode,
                    ["STOP_ORDER_KEY"]=tostring(t.ordernum),
                }
                local res=sendTransaction(transaction)
                if res~="" then
                    return nil, "qlib.KillAllStops():"..res
                else
                    return trans_id, res
                end    
            end
        end
    end    
   
end

3

Re: как отменить стоп-заявки на forts

function killAllStopOrders(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("stop_orders"),1 do
        row=getItem("stop_orders",i)
        tokill=false
        --toLog(log,"Row "..i.." onum="..row.ordernum)
        if stoporderflags2table(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 row[string.lower(key)]~=val then
                        tokill=false
                        --toLog(log,"false cond. t="..table_mask.key.." row="..row[string.lower(key)])
                        break
                    end
                end
            end
        end
        if tokill then
            --toLog(log,"kill onum"..row.ordernum)
            res,ms=killStopOrder(tostring(row.ordernum),row.seccode,row.class_code)
            result_num=result_num+1
            --toLog(log,ms)
            if res then
                result_str=result_str..row.ordernum..","
            else
                result_str=result_str.."!"..row.ordernum..","
            end
        end
    end
    return true,"QL.killAllStopOrders(): Sended "..result_num.." transactions. Ordernums:"..result_str
end

Фукнция из библиотеки QL. Ссылка

4

Re: как отменить стоп-заявки на forts

ясно, спасибо большое.