Коллеги! Помогите решить простую задачку.
Дано: имеются позиции по бумагам (TQBR).
Надо: получить текущую позицию по каждой бумаге при помощи LUA.
Пробовал пользоваться таблицами depo_limits, firm_holding и account_balance.
Хоть каких-то чисел добился лишь через таблицу depo_limits следующим кодом:
pos1={}
pos2={}
for j=0,getNumberOf("DEPO_LIMITS")-1 do
pos1[#pos1+1]=getItem("DEPO_LIMITS",j).sec_code
pos2[#pos2+1]=getItem("DEPO_LIMITS",j).currentbal
endПроблема такого варианта в том, что он показывает ненулевые значения в currentbal только для позиций, которые были открыты ранее (возможно, по которым прошло +2 дня). По позициям, которые были открыты сегодня, он точно показывает 0.
Подскажите, как правильно решить эту задачку?
Премного благодарен:)
quikluacsharp.ru/
отличный сайт, отличный чувак там, всегда отвечает, скажите что igr его порекомендовал;)
Посмотри вот этот код. Возможно тебе подойдет.
--Возвращает значение открытой позиции или false, если нет открытых позиций.
function Active_poz() --poz_condition(направление), poz_balance(количество), poz_price(цена)
--Определим текущую цену открытой позы и ее направление
— Перебирает строки таблицы «Позиции по клиентским счетам (фьючерсы)», ищет Текущие чистые позиции по инструменту «RIH5»
local poz_condition,poz_balance,poz_price=0,0,0
for i = 0,getNumberOf(«FUTURES_CLIENT_HOLDING») — 1 do
— ЕСЛИ строка по нужному инструменту и чистая позиция не равна нулю ТО
if getItem(«FUTURES_CLIENT_HOLDING»,i).sec_code == sec_code and getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet ~= 0 then
— ЕСЛИ текущая чистая позиция > 0, ТО открыта длинная позиция (BUY)
if getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet > 0 then
poz_condition=«B»
poz_balance = getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet -- Количество лотов в позиции BUY
poz_price=getItem(«FUTURES_CLIENT_HOLDING»,i).avrposnprice
else — ИНАЧЕ открыта короткая позиция (SELL)
poz_condition=«S»
poz_balance = math.abs(getItem(«FUTURES_CLIENT_HOLDING»,i).totalnet) — Количество лотов в позиции SELL
poz_price=getItem(«FUTURES_CLIENT_HOLDING»,i).avrposnprice
end
else
printlogs(«p»,«Active_poz() Нет открытой позы. Выходим из функции.»)
return false
end
end
printlogs(«p»,«Active_poz() Открытая позиция (B-BUY,S-SELL)-»..poz_condition.."; Кол-во-"..poz_balance.."; Цена-"..poz_price)
if poz_balance>0 then
return poz_condition, poz_balance, poz_price
else
return false
end
end