Greetings,
I have this Order Modify Error 1 in my Ea and i think its happening because trailing stop tries to put the stoploss to the point where Breakeven function already did. Any advice on how to fix this.
I have this Order Modify Error 1 in my Ea and i think its happening because trailing stop tries to put the stoploss to the point where Breakeven function already did. Any advice on how to fix this.
Inserted Code
int Trailing()
{
int i;
err=GetLastError();
// Breakeven
if (ExtBreakeven>0 && k>0)
for (i=1;i<=k;i++)
{
if (OrderN[i*2-1] > 0)
if(OrderSelect(OrderN[i*2-1], SELECT_BY_TICKET)==true)
{
if ((ask-OrderOpenPrice())>NormalizeDouble(ExtBreakeven * precision, digit + 1) && OrderOpenPrice()>OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,0);
// return(0);
}
err=GetLastError();
if (err>1)
{
Print("Ошибка модификации СЛ в без убыток! OrderN[k]=",OrderN[i*2-1]," Error=",err);
}
}
if (OrderN[i*2] > 0)
if(OrderSelect(OrderN[i*2], SELECT_BY_TICKET)==true)
{
if ((OrderOpenPrice()-bid)>NormalizeDouble(ExtBreakeven * precision, digit + 1) && OrderOpenPrice()<OrderStopLoss())
{
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,0);
// return(0);
}
err=GetLastError();
if (err>1)
{
Print("Ошибка модификации СЛ в без убыток! OrderN[k]=",OrderN[i*2]," Error=",err);
}
}
}
// Trailing
if (ExtTrailingStop>0 && k>0)
for (i=1;i<=k;i++)
{
if (OrderN[i*2-1] > 0)
if(OrderSelect(OrderN[i*2-1], SELECT_BY_TICKET)==true)
{
if ((ask-OrderOpenPrice())>NormalizeDouble(ExtTrailingStop * precision, digit + 1) && OrderStopLoss()<(ask-NormalizeDouble(ExtTrailingStop * precision, digit + 1)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),(ask-NormalizeDouble(ExtTrailingStop * precision, digit + 1)),OrderTakeProfit(),0,0);
// return(0);
}
err=GetLastError();
if (err>1)
{
Print("Ошибка модификации СЛ во время1 трейлинга! OrderN[k]=",OrderN[i*2-1]," Error=",err);
}
}
else
{
Print("Неудалось выделить ордер во время трейлинга ",OrderN[i*2-1]);
}
if (OrderN[i*2] > 0)
if(OrderSelect(OrderN[i*2], SELECT_BY_TICKET)==true)
{
if ((OrderOpenPrice()-bid)>NormalizeDouble(ExtTrailingStop * precision, digit + 1) && OrderStopLoss()>(bid+NormalizeDouble(ExtTrailingStop * precision, digit + 1)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),bid+NormalizeDouble(ExtTrailingStop * precision, digit + 1),OrderTakeProfit(),0,0);
// return(0);
}
err=GetLastError();
if (err>1)
{
Print("Ошибка модификации СЛ во время2 трейлинга! OrderN[k]=",OrderN[i*2]," Error=",err);
}
}
else
{
Print("Неудалось выделить ордер во время трейлинга ",OrderN[i*2]);
}
}
return(0);
}