Добрый день.
При выставлении заявки выставляется стоп-профит на нужный уровень, но потом с интервалом пару секунд заявка профита снимается и ставится на том же уровне. Подскажите пожалуйста как исправить?
Спасибо.
function ProfitControl(posNow,acc,emit,class,file)
local function fn1(param1,param2,param3)
if(param1==acc and param2==emit and param3==class)then
return true
else
return false
end
end
local step = tonumber(getParamEx(class,emit,"SEC_PRICE_STEP").param_value)
local EnterPrice = RoundForStep(EnterPriceUni(posNow,emit,class,acc),step)
local profitPrice = EnterPrice + SignFunc(posNow) * Profit * step
local ProfCorrect = false
local count = 0
local index = SearchItems("stop_orders", 0, getNumberOf("stop_orders")-1, fn1, "account,sec_code,class_code")
if(index~=nil)then
for i=1,#index do
local row = getItem("stop_orders",index[i])
local flag = bit.band(row.flags,1) --проверяем активна заявка или нет
if(flag>0)then
if(row.stop_order_type~=6 or ProfCorrect==true)then --6 тип тейк профит
local keyNumber = row.order_num
DeletProfitByNumber(emit,class,keyNumber,file)
count = count + 1
else
local qtyX = row.qtyX
local profitPriceX = RoundForStep(row.condition_price,step)
local buySellX = row.condition
local signPosX = 0
if(buySellX<=4)then
signPosX = -1
elseif(buySellX>=5)then
signPosX = 1
end
if(signPosX==SignFunc(posNow) and qtyX==math.abs(posNow) and profitPriceX==profitPrice)then
ProfCorrect = true
else
local keyNumber = row.order_num
DeletProfitByNumber(emit,class,keyNumber,file)
count = count + 1
end
end
end
end
end
if(ProfCorrect==false and posNow~=0)then
local profitSpread = 30 * step
if(posNow>0)then
buySell = "S"
else
buySell = "B"
end
NewStopProfit(acc,emit,class,buySell,math.abs(posNow),profitPrice,0,profitSpread,file,"Функция ProfitControl")
count = count + 1
end
return count
end
При выставлении заявки выставляется стоп-профит на нужный уровень, но потом с интервалом пару секунд заявка профита снимается и ставится на том же уровне. Подскажите пожалуйста как исправить?
Спасибо.
function ProfitControl(posNow,acc,emit,class,file)
local function fn1(param1,param2,param3)
if(param1==acc and param2==emit and param3==class)then
return true
else
return false
end
end
local step = tonumber(getParamEx(class,emit,"SEC_PRICE_STEP").param_value)
local EnterPrice = RoundForStep(EnterPriceUni(posNow,emit,class,acc),step)
local profitPrice = EnterPrice + SignFunc(posNow) * Profit * step
local ProfCorrect = false
local count = 0
local index = SearchItems("stop_orders", 0, getNumberOf("stop_orders")-1, fn1, "account,sec_code,class_code")
if(index~=nil)then
for i=1,#index do
local row = getItem("stop_orders",index[i])
local flag = bit.band(row.flags,1) --проверяем активна заявка или нет
if(flag>0)then
if(row.stop_order_type~=6 or ProfCorrect==true)then --6 тип тейк профит
local keyNumber = row.order_num
DeletProfitByNumber(emit,class,keyNumber,file)
count = count + 1
else
local qtyX = row.qtyX
local profitPriceX = RoundForStep(row.condition_price,step)
local buySellX = row.condition
local signPosX = 0
if(buySellX<=4)then
signPosX = -1
elseif(buySellX>=5)then
signPosX = 1
end
if(signPosX==SignFunc(posNow) and qtyX==math.abs(posNow) and profitPriceX==profitPrice)then
ProfCorrect = true
else
local keyNumber = row.order_num
DeletProfitByNumber(emit,class,keyNumber,file)
count = count + 1
end
end
end
end
end
if(ProfCorrect==false and posNow~=0)then
local profitSpread = 30 * step
if(posNow>0)then
buySell = "S"
else
buySell = "B"
end
NewStopProfit(acc,emit,class,buySell,math.abs(posNow),profitPrice,0,profitSpread,file,"Функция ProfitControl")
count = count + 1
end
return count
end