Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Закрытие всех ордеров по просадке баланса - эксперт для MetaTrader 4

Просмотров:
3582
Рейтинг:
(22)
Опубликован:
2016.03.04 13:33
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Код, закрывающий все открытые ордера при достижении определенного процента просадки баланса.

От вас требуется только ввести мэджик для ордера (или 0, чтобы выделить все ордера) и максимальный процент просадки, достижение которого приведет к закрытию.

Для использования в этом коде вызывается функция DD_close.

В аттаче - файл с кодом и советник, который был построен на нем.

// Чтобы использовать эту опцию, вы должны всего лишь вызвать функцию: ( DD_close ) 
//+------------------------------------------------------------------+
//|                          Global scope                            |
//+------------------------------------------------------------------+
bool Close_All_V;
//+------------------------------------------------------------------+
//|                         Основная функция                            |
//+------------------------------------------------------------------+
// DD:               Процент просадки. 100 означает, что ордер не закрывается никогда.
// Magic_Number:     "Магический номер". Введите 0, чтобы выбрать все ордера.
void DD_close(int DD,int Magic_Number)
  {
   if(DD(Magic_Number)>=DD)
      Close_All_V=true;
   if(Close_All_V)
      Close_All(Magic_Number);
  }
//+------------------------------------------------------------------+
//|                          Check close                             |
//+------------------------------------------------------------------+
void Check_Close(int Check_Number) // проверка закрытия ордеров
  {
   if(Check_Number<0) Print("OrderClose failed with error: ",ErrorDescription(GetLastError()));
   else Close_All_V=false;
  }
//+------------------------------------------------------------------+
//|                          Закрыть все                               |
//+------------------------------------------------------------------+
void Close_All(int M_N)
  {
   int Loop=0;
   for(int i=0; Loop<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         Loop++;
         if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==M_N || OrderMagicNumber()==0)
              {
               if(OrderType()==OP_BUY)
                  Check_Close(OrderClose(OrderTicket(),OrderLots(),Bid,100,clrNONE));
               if(OrderType()==OP_SELL)
                  Check_Close(OrderClose(OrderTicket(),OrderLots(),Ask,100,clrNONE));
              }
        }
  }
//+------------------------------------------------------------------+
//|                          Расчет потерь                          |
//+------------------------------------------------------------------+
double Loss(int M_N)
  {
   double re=0;
   int Loop=0;
   for(int i=0; Loop<OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         Loop++;
         if(OrderSymbol()==Symbol())
            if(OrderMagicNumber()==M_N || OrderMagicNumber()==0)
               re=re+OrderProfit();
        }
   return re * -1;
  }
//+------------------------------------------------------------------+
//|                  Расчет процента просадки                  |
//+------------------------------------------------------------------+
double DD(int M_N)
  {
   return ( 100 /  AccountBalance( ) ) * Loss ( M_N );
  }
//+------------------------------------------------------------------+

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/14582

Hidden TP and SL Hidden TP and SL

Простой советник, закрывающий позиции с профитом или потерями.

Plot MQL signal Plot MQL signal

Скрипт строит историю по сигналу на графике в MetaTrader 4.

SBVolumeAvg SBVolumeAvg

Индикатор для расчета среднего объема на трендовом участке линии Zig Zag, ограниченном двумя вертикальными линиями.

PricePercentRange PricePercentRange

Индикатор, рассчитывающий движение цены на основании процентного соотношения High и Low на 100 барах.