Может кому пригодится...

 

Защита от случайного удаления стоп лосса и тейк профита:

int ticket[];
double loss[],profits[];

//+------------------------------------------------------------------+
void GetSLTP()
{
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      {
         if(OrderSymbol()== Symbol())
         {
            if(OrderMagicNumber()==Magic)
            {
               ArrayResize(ticket,i+1,1000);
               ArrayResize(loss,i+1,1000);
               ArrayResize(profits,i+1,1000);
               ticket[i]=OrderTicket();
               loss[i]=OrderStopLoss();
               profits[i]=OrderTakeProfit();
            }
         }
      }
   }
}
//+------------------------------------------------------------------+
void SetSLTP()
{
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      {
         if(OrderSymbol()== Symbol())
         {
            if(OrderMagicNumber()==Magic)
            {
               if(OrderTicket()==ticket[i])
               {
                  if(OrderStopLoss()==0&&loss[i]!=0)
                  {
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),loss[i],OrderTakeProfit(),0))Print("Order not modify! Error: ",GetLastError());
                  }
                  if(OrderTakeProfit()==0&&profits[i]!=0)
                  {
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),profits[i],0))Print("Order not modify! Error: ",GetLastError());
                  }
               }
            }
         }
      }
   }
}
//+------------------------------------------------------------------+

Защита от случайного перемещения стоп лосса и тейк профита:

int ticket[];
double loss[],profits[];

//+------------------------------------------------------------------+
void GetSLTP()
{
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      {
         if(OrderSymbol()== Symbol())
         {
            if(OrderMagicNumber()==Magic)
            {
               ArrayResize(ticket,i+1,1000);
               ArrayResize(loss,i+1,1000);
               ArrayResize(profits,i+1,1000);
               ticket[i]=OrderTicket();
               loss[i]=OrderStopLoss();
               profits[i]=OrderTakeProfit();
            }
         }
      }
   }
}
//+------------------------------------------------------------------+
void SetSLTP()
{
   for(int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      {
         if(OrderSymbol()== Symbol())
         {
            if(OrderMagicNumber()==Magic)
            {
               if(OrderTicket()==ticket[i])
               {
                  if(OrderStopLoss()!=loss[i]&&loss[i]!=0)
                  {
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),loss[i],OrderTakeProfit(),0))Print("Order not modify! Error: ",GetLastError());
                  }
                  if(OrderTakeProfit()!=profits[i]&&profits[i]!=0)
                  {
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),profits[i],0))Print("Order not modify! Error: ",GetLastError());
                  }
               }
            }
         }
      }
   }
}
//+------------------------------------------------------------------+

Если есть идеи по усовершенствованию кода - милости прошу!:)

 
//+------------------------------------------------------------------+
//| Функция определяет, можно ли перетаскивать торговые уровни на    |
//| графике при помощи мыши.                                         |
//+------------------------------------------------------------------+
bool ChartDragTradeLevelsGet(bool &result,const long chart_ID=0)
  {
//--- подготовим переменную для получения значения свойства
   long value;
//--- сбросим значение ошибки
   ResetLastError();
//--- получим значение свойства
   if(!ChartGetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- запомним в переменную значение свойства графика
   result=value;
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Функция включает/выключает режим перетаскивание торговых уровней |
//| на графике при помощи мыши.                                      |
//+------------------------------------------------------------------+
bool ChartDragTradeLevelsSet(const bool value,const long chart_ID=0)
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- установим значение свойства
   if(!ChartSetInteger(chart_ID,CHART_DRAG_TRADE_LEVELS,0,value))
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
      return(false);
     }
//--- успешное выполнение
   return(true);
  }
 
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Признак отрисовки ценового графика. Если установлено значение false, то отключается отрисовка любых атрибутов ценового графика и устраняются все отступы по краям графика: шкалы времени и цены, строка быстрой навигации, метки событий Календаря, значки сделок, тултипы индикаторов и баров, подокна индикаторов, гистограммы объёмов и т.д. Значение...
 
Но от случайного удаления стопов это не поможет... 
 
Maksim Neimerik:
Но от случайного удаления стопов это не поможет... 
запретить если, как удалишь?
 
Renat Akhtyamov:
запретить если, как удалишь?

Ну так эта функция запрещает перетаскивание а если правым щелчком миши нажать "Удалить Стоп Лосс" разве он не удалится? Хотя конечно случайно такое сделать - это из области "рукожоп года":)

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