1

Тема: Сколько бумаг в портфеле?

Добрый вечер. Пытаюсь перевести робота с QPile на Qlua. И никак не пойму как получить купленное количество лотов. Вот код на QPile для получения количества бумаг

FUNC LB()
    n=GET_NUMBER_OF("DEPO_LIMITS")
    value=0
    RESULT = ""
    FOR y FROM 1 to n
        trade=GET_ITEM ("DEPO_LIMITS", y)
        IF (GET_VALUE(trade,"CLIENT_CODE")==CLIENTCODE&"") AND _
                (GET_VALUE(trade,"FIRMID")==FIRM&"") AND _
                (GET_VALUE(trade,"SECCODE")==INSTRUMENT&"") AND _
                (GET_VALUE(trade,"TRDACCID")==ACCOUNT&"") AND _
                (GET_VALUE(trade,"LIMIT_KIND")+0==2)
            RESULT=(GET_VALUE(trade,"CURRENT_BALANCE")+0)/l
            BREAK
        END IF
    END FOR
END FUNC

Как должна выглядеть функция на QLua? Заранее спасибо.

2 (2014-07-26 06:40:16 отредактировано swerg)

Re: Сколько бумаг в портфеле?

Вот такой скрипт выведет остаток по указанной бумаге:

CLIENTCODE = "qtest813"
FIRM       = "NC0011100000"
INSTRUMENT = "LKOH"
ACCOUNT    = "NL0011100043"

function LB()
    n = getNumberOf("depo_limits")
    value = 0
    res = nil
    for y = 0, n-1 do
        trade = getItem("depo_limits", y)
        if (trade["client_code"] == CLIENTCODE)  and
                (trade["firmid"] == FIRM)        and
                (trade["sec_code"] ==INSTRUMENT) and
                (trade["trdaccid"] == ACCOUNT)   and
                (trade["limit_kind"] == 2)        then
            res = trade["currentbal"]
            break
        end
    end
    return res
end

message(tostring(LB()), 0)

Либо можно синтаксически к таблицам Lua обращаться иначе:

CLIENTCODE = "qtest813"
FIRM       = "NC0011100000"
INSTRUMENT = "LKOH"
ACCOUNT    = "NL0011100043"

function LB()
    n = getNumberOf("depo_limits")
    value = 0
    res = nil
    for y = 0, n-1 do
        trade = getItem("depo_limits", y)
        if (trade.client_code == CLIENTCODE)  and
                (trade.firmid == FIRM)        and
                (trade.sec_code ==INSTRUMENT) and
                (trade.trdaccid == ACCOUNT)   and
                (trade.limit_kind == 2)        then
            res = trade.currentbal
            break
        end
    end
    return res
end

message(tostring(LB()), 0)

В смысле смысла, эти два варианта кода полностью эквивалентны.

3

Re: Сколько бумаг в портфеле?

Огромное спасибо