Как остановить торговлю советника, если спред увеличивается?

Бывают случаи, когда спред внезапно увеличивается, и в зависимости от вашей торговой стратегии вы можете остановить торговлю советника, когда это произойдет. В этой статье мы разберем пример простого кода на MQL4, который поможет нам в этом.

Как вы знаете, спред — это разница между ценой Ask и ценой Bid. Это своего рода комиссия, которую вы платите брокеру за торговлю. В MetaTrader4 вы можете увидеть спред в окне «Обзор рынка», щелкнув по нему правой кнопкой мыши и выбрав «Спред».

спред в MetaTrader4

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

Каждая валютная пара имеет свой собственный средний спред. Например, спред для пары EURUSD обычно составляет ​​от 1 до 1,5 пункта. Однако существуют рыночные ситуации, которые могут привести к внезапному увеличению спреда и, как следствие, увеличению стоимости торговли. Это могут быть:

  • Низкая ликвидность.
  • Высокая волатильность.
  • Ролловер или продлевание срока экспирации контракта.
  • Неожиданные новости.
  • Экономические отчеты.

Вы можете прекратить торговлю, когда размер спреда превысит определенный порог. Этот порог зависит от вашего стиля торговли, поэтому он может отличаться у разных трейдеров.

Как получить значение спреда в MQL4?

MQL4 предоставляет очень простую функцию для получения спреда:

MarketInfo(Symbol(), MODE_SPREAD)

Эта функция будет возвращать текущий спред торгового инструмента, выраженный в пипсах. Если мы запустим следующий скрипт:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
 
void OnStart()
  {
//---
   Alert("Спред торгового инструмента ",Symbol()," составляет ",MarketInfo(Symbol(), MODE_SPREAD)," пунктов");
 
  }
//+------------------------------------------------------------------+

Мы получим:

значение спреда

Останавливаем торговлю, когда размер спреда слишком большой

Нам нужно добавить всего лишь несколько строчек кода:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
 
#property strict
#property show_inputs
 
extern int MaxSpread=20;   //Максимальный спред в пипсах.
 
void OnStart()
  {
//---
   if(MarketInfo(Symbol(), MODE_SPREAD)<MaxSpread){
      Alert("Торговля возможна.");
   }
   else{
      Alert("Торговля невозможна.");
   }
  }
//+------------------------------------------------------------------+
Комментарии (3)
  1. Здравствуйте я поставил код в свой советник но он вообще сделки не открывает

  2. Нет заработал как-то сам страны м образом но работает
    Спасибо что поделились кодом

  3. Очень полезная функция. У меня советник Scanner Bot Martin , там такое есть. Полезно по ночам , когда обычно спред пляшет .