[MQL4] Функция закрытия первого ордера в серии

romanzif

romanzif

Местный
Команда форума
Администратор
Монет
119,838
Один из методов снизить риски для советников сеточников можно использовать закрытия первого ордера в серии при достижение определенной просадки или при возникновения сигнала по более выгодной цене.

Сегодня приведу пример такой функции, а как её использовать вы можете решить сами:

Код:
//+------------------------------------------------------------------+
void CloseFirstOrder()
{
   bool close;
 
   for (int i=0; i <= OrdersTotal()-1; i++) // начинаем цикл с первого ордера в рынке
   {
      if (OrderSelect(i, SELECT_BY_POS))
      {
         if (OrderMagicNumber() == Magic && OrderSymbol() == Symbol())  // проверяем что символ и Магик были именно от текущего графика и настроек советника
         {
            if (OrderType() == OP_BUY)
            {
               close = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clrPink); // закрываем ордер
               
               if (!close) printf("Error ", GetLastError()); // если была ошибка выводим код ошибки
               
              TrallTP(OP_BUY); // пересчитываем ТП для оставшихся ордеров
             
               return; // выходим из функции так как нам нужно закрыть только первый ордер
            }
           
            if (OrderType() == OP_SELL)
            {
               close = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrPink);
               if (!close) printf("Error ", GetLastError());
               TrallTP(OP_SELL);
             
               return;
            }  
         }
      }
   }
}
//+------------------------------------------------------------------+
 

Проверенные Брокеры

Реклама

Заработок онлайн

Назад
Верх