Помогите исправить часть советника

 

Надо чтоб функция безубытка выставляла не стоп, а уже тейк профит в минус, тоесть:

если цена после открытия пошла в убыток например -15пунктов, то безубыток выставить на минус -8пунктов от цены открытия, тоесть надеюсь на то что рынок зделает откат.

Прилагаю часть кода которая отвечает за безубыток:

void fBreakEvenToLevel(){
double slts;
for(int i=0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic_N){
if(OrderType()==OP_BUY){
RefreshRates();
if(ND(Bid-OrderOpenPrice())>=ND(Point*BreakEvenStart)){
slts=ND(OrderOpenPrice()+Point*(BreakEvenStart-BreakEvenLevel));
if(ND(OrderStopLoss())<slts){
if(!IsTradeContextBusy()){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),slts,OrderTakeProfit(),0,CLR_NONE)){
Print("Error breakeven BUY "+OrderTicket()+" "+fMyErDesc(GetLastError()));
}
}
else{
static int lt1=0;
if(lt1!=iTime(NULL,TimeFrame,0)){
lt1=iTime(NULL,TimeFrame,0);
Print("Need breakeven BUY "+OrderTicket()+". Trade Context Busy");
}
}
}
}
}
if(OrderType()==OP_SELL){
RefreshRates();
if(ND(OrderOpenPrice()-Ask)>=ND(Point*BreakEvenStart)){
slts=ND(OrderOpenPrice()-Point*(BreakEvenStart-BreakEvenLevel));
if(ND(OrderStopLoss())>slts || ND(OrderStopLoss())==0){
if(!IsTradeContextBusy()){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),slts,OrderTakeProfit(),0,CLR_NONE)){
Print("Error breakeven SELL "+OrderTicket()+" "+fMyErDesc(GetLastError()));
}
}
else{
static int lt2=0;
if(lt2!=iTime(NULL,TimeFrame,0)){
lt2=iTime(NULL,TimeFrame,0);
Print("Need breakeven SELL "+OrderTicket()+". Trade Context Busy");
}

подскажите пожалуста что здесь надо исправить.

Причина обращения: