Скрипт Modify Take Profit

 

Скрипт Modify Take Profit для переноса всех тейк профитов в указанную точку, как оказалось может переносить тейк и в зону стоп лосса. Вот так это выглядит;

Помогите допилить скрипт что бы он работал только с тейк профитом, не переносил ничего в минус.

//+------------------------------------------------------------------+
//|                            sharkfx-ModifyTakeProfit-DragDrop.mq4 |
//|             Copyright © 2015, Serhiy Dotsenko for SharkFX.in.ua  |
//+------------------------------------------------------------------+
#property description   "Скрипт для переноса всех тейк профитов в указанную точку."
#property description   " "
#property description   "Данный скрипт разработан специально для сайта - SharkFX.in.ua"
#property copyright     "Serhiy Dotsenko"
#property link          "http://mql5.com/ru/users/thejobber"
#property version       "1.00"
#property strict
//#property script_show_inputs

void OnStart(){
   if(!IsTradeAllowed()){
        Alert("Необходимо разрешить Авто-торговлю.");
        return;
   }
   double newTPValue = NormalizeDouble(WindowPriceOnDropped(),_Digits);
   double minDistanse = MarketInfo(_Symbol,MODE_STOPLEVEL)*_Point;   
   
   for(int i=OrdersTotal()-1;i>=0;i--){
     if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==_Symbol){
          if(checkConditions(OrderType(),newTPValue,minDistanse))
            for(ushort j = 0; j < 4 && !OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(), newTPValue,OrderExpiration());j++)
                Sleep(100);
     }
   }
}

bool checkConditions(int orderType, double newTP, double minDist){
    RefreshRates();
    if(orderType==OP_BUY && newTP - Bid < minDist){                     
        Alert(StringFormat("Ордер %i - минимальный тейк профит - %.5f", OrderTicket(), Bid - minDist));
        return false;            
    }              
    if(orderType==OP_SELL && Ask - newTP < minDist){        
        Alert(StringFormat("Ордер %i - минимальный тейк профит - %.5f", OrderTicket(), Ask + minDist));     
        return false;
    }    
    if((orderType==OP_BUYSTOP || orderType==OP_BUYLIMIT) && newTP<OrderOpenPrice()){             
        Alert(StringFormat("Ордер %i - для покупок, тейк профит должен быть выше цены ордера",OrderTicket()));
        return false;  
    }                  
    if((orderType==OP_SELLSTOP || orderType==OP_SELLLIMIT) && newTP>OrderOpenPrice()){
        Alert(StringFormat("Ордер %i - для продаж, тейк профит должен быть ниже цены ордера",OrderTicket()));
        return false;  
    }                     
    return true;
}
 
Alexey Gureyev:

Скрипт Modify Take Profit для переноса всех тейк профитов в указанную точку, как оказалось может переносить тейк и в зону стоп лосса. Вот так это выглядит;

Помогите допилить скрипт что бы он работал только с тейк профитом, не переносил ничего в минус.

bool checkConditions(int orderType, double newTP, double minDist){
    RefreshRates();
    if(orderType==OP_BUY && newTP - Bid < minDist && newTP<OrderOpenPrice()){                     
        Alert(StringFormat("Ордер %i - минимальный тейк профит - %.5f", OrderTicket(), Bid - minDist));
        return false;            
    }              
    if(orderType==OP_SELL && Ask - newTP < minDist && newTP>OrderOpenPrice()){        
        Alert(StringFormat("Ордер %i - минимальный тейк профит - %.5f", OrderTicket(), Ask + minDist));     
        return false;
    }    
    if((orderType==OP_BUYSTOP || orderType==OP_BUYLIMIT) && newTP<OrderOpenPrice()){             
        Alert(StringFormat("Ордер %i - для покупок, тейк профит должен быть выше цены ордера",OrderTicket()));
        return false;  
    }                  
    if((orderType==OP_SELLSTOP || orderType==OP_SELLLIMIT) && newTP>OrderOpenPrice()){
        Alert(StringFormat("Ордер %i - для продаж, тейк профит должен быть ниже цены ордера",OrderTicket()));
        return false;  
    }                     
    return true;
}
 
Vladimir Simakov:

И всего то ? Спасибо!

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