При написании функции выставления стоп-профит заявки ошибка определения цены входа в строке "local PNnext = PN - direct*qty"
Подскажите пожалуйста где ошибка.
function EnterPriceUni(posNow,emit,class,acc)
if(posNow==0)then
return 0
end
local function fn1(param1,param2)
if(param1==acc and param2==emit)then
return true
else
return false
end
end
local index = SearchItems("trades", 0, getNumberOf("trades")-1, fn1, "account,sec_code")
local PN = posNow
local Sum = 0
if(index~=nil)then
for i=#index,1,-1 do
local row = getItem("trades",index[i])
local direct
if(bit.band(row.flags,4)>0)then
direct = -1 --для продажи
else
direct = 1 --для покупки
end
local price = row.price
local qty = row.qty
local PNnext = PN - direct*qty --сдесь ошибка
if(SignFunc(PNnext)~=SignFunc(PN))then
Sum = Sum + direct*SignFunc(posNow)*price*math.min(qty,math.abs(PN))
return Sum/math.abs(posNow)
else
Sum = Sum + direct*SignFunc(posNow)*price*qty
end
PN = PNnext
end
end
return 0
end
Подскажите пожалуйста где ошибка.
function EnterPriceUni(posNow,emit,class,acc)
if(posNow==0)then
return 0
end
local function fn1(param1,param2)
if(param1==acc and param2==emit)then
return true
else
return false
end
end
local index = SearchItems("trades", 0, getNumberOf("trades")-1, fn1, "account,sec_code")
local PN = posNow
local Sum = 0
if(index~=nil)then
for i=#index,1,-1 do
local row = getItem("trades",index[i])
local direct
if(bit.band(row.flags,4)>0)then
direct = -1 --для продажи
else
direct = 1 --для покупки
end
local price = row.price
local qty = row.qty
local PNnext = PN - direct*qty --сдесь ошибка
if(SignFunc(PNnext)~=SignFunc(PN))then
Sum = Sum + direct*SignFunc(posNow)*price*math.min(qty,math.abs(PN))
return Sum/math.abs(posNow)
else
Sum = Sum + direct*SignFunc(posNow)*price*qty
end
PN = PNnext
end
end
return 0
end