Разработка торговой системы на основе индикатора ATR

Mohamed Abdelmaaboud | 18 июля, 2022

Введение

В этой новой статье мы поговорим о еще одном понятии в трейдинге. Будет полезно научиться измерять его и использовать в торговле. Это понятие волатильности. Есть множество различных инструментов для измерения волатильности, и одним из самых популярных среди них является технический индикатор Среднего истинного диапазона (Average True Range, ATR). Знание о том, что происходит с волатильностью, может кардинально изменить ход игры, что мы и обсудим в этой статье. Она станет одним из важных факторов и основой для принятия решений.

Мы пройдемся по разным темам, чтобы тщательно изучить индикатор ATR. Кроме того, если вы читали другие мои статьи, вы наверняка уже знаете, что мой подход заключается в том, чтобы изучать самую суть вещей, добираться до корней. Следующие темы охватывают все, что мы будем узнавать в этой статье об этом удивительном инструменте:

  1. Написание MQL5-кода в MetaEditor
  2. Определение ATR
  3. Стратегия по индикатору ATR
  4. Схема стратегии по индикатору ATR
  5. Торговая система по ATR
  6. Заключение

Надеюсь, прочитав статью, вы получите полное представление об индикаторе ATR и научитесь его использовать при торговле. Мы узнаем, что же означает индикатор ATR, что он измеряет и как рассчитывается: мы подробно разберем формулу и попробуем сами рассчитать его, используя реальные рыночные данные. Этому посвящен первый раздел "Определение ATR". Мы рассмотрим простые стратегии, основанные на концепции индикатора ATR. Цель изучения таких стратегий — лучше понять индикатор. Все это будет в разделе "Стратегия ATR". Далее мы построим схемы рассмотренных стратегий. Это очень полезный шаг в процессе проектирования торговой системы, поскольку он визуализирует представление о том, как должна работать программа. Итак, пошаговые схемы будут представлены в разделе "Схема стратегии по ATR". Затем мы научимся писать код торговой системы на основе этих стратегий с помощью языка программирования MQL5. В итоге должна получиться программа, которую можно запускать в торговой платформе MetaTrader 5. Это описано в разделе "Торговая система по ATR".

Для написания кода стратегии на MQL5 мы будем использовать редактор MetaQuotes Language Editor (MetaEditor), который встроен в торговую платформу MetaTrader 5. Если платформа у вас еще не установлена, ее можно скачать по этой ссылке: https://www.metatrader5.com/ru/download.

Окно торговой платформы MetaTrader 5 выглядит так:

Платформа MetaTrader 5

Из этого окна нужно открыть редактор MetaEditor, нажав клавишу F4. Также можно нажать на кнопку редактора IDE на панели инструментов в терминале MetaTrader 5, как показано на рисунке ниже:

Открытие редактора MetaEditor 2

Еще способ открыть его — выбрать меню "Инструменты" в терминале MetaTrader 5 --> затем выбрать в меню "/Редактор языка MetaQuotes Language Editor", как показано на следующем рисунке:

Открытие редактора MetaEditor 1 

Откроется редактор для написания программ, выглядит он так:

Интерфейс MetaEditor

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

Внимание! Все содержание настоящей статьи предоставляется "как есть", предназначено только для целей обучения и не является торговой рекомендацией. Статья не несет в себе каких-либо гарантий результатов. Все, что вы применяете на практике на основе этой статьи, вы делаете исключительно на свой страх и риск, автор не гарантирует никаких результатов.

Готовы приступить к изучению нового инструмента, с которым вы сможете прокачать свои торговые навыки и улучшить торговые результаты? Начнем.


Определение ATR

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

Технический индикатор Average True Range (ATR) был разработан Уэллсом Уайлдером. Этот индикатор измеряет волатильность рынка, анализируя диапазон цен за определенный период. ATR не показывает цену или направление рынка, он только измеряет волатильность.

Чтобы измерить волатильность, рассчитываются следующие шаги.

Сначала нужно рассчитать истинный диапазон, который будет наибольшим значением из следующих:

Получается, для расчета индикатора нужны данные о максимумах, минимумах и ценах закрытия. После этого рассчитывается сам средний истинный диапазон.

Теперь давайте посмотрим на пример с реальными рыночными данными и попробуем самостоятельно рассчитать средний истинный диапазон (ATR). Ниже приведены данные EURUSD:

День Максимум Минимум Закрытие
Mar 17, 2022 1.1138 1.1008 1.1089
Mar 18, 2022 1.112 1.1003 1.1055
Mar 21, 2022 1.107 1.101 1.1014
Mar 22, 2022 1.1047 1.096 1.1027
Mar 23, 2022 1.1044 1.0963 1.1004
Mar 24, 2022 1.1014 1.0965 1.0996
Mar 25, 2022 1.1039 1.0979 1.0981
Mar 28, 2022 1.1 1.0944 1.0978
Mar 29, 2022 1.1137 1.097 1.1085
Mar 30, 2022 1.1171 1.1083 1.1156
Mar 31, 2022 1.1185 1.1061 1.1065
Apr 01, 2022 1.1077 1.1027 1.1053
Apr 04, 2022 1.1056 1.096 1.097
Apr 05, 2022 1.099 1.0899 1.0903
Apr 06, 2022 1.0939 1.0874 1.0893
Apr 07, 2022 1.0939 1.0864 1.0878
Apr 08, 2022 1.0892 1.0836 1.0876
Apr 11, 2022 1.0951 1.0872 1.0883
Apr 12, 2022 1.0905 1.0821 1.0826
Apr 13, 2022 1.0896 1.0809 1.0885
Apr 14, 2022 1.0925 1.0757 1.0827
Apr 15, 2022 1.0832 1.0796 1.0806
Apr 18, 2022 1.0822 1.0769 1.078
Apr 19, 2022 1.0815 1.0761 1.0786
Apr 20, 2022 1.0868 1.0783 1.085
Apr 21, 2022 1.0937 1.0824 1.0836
Apr 22, 2022 1.0853 1.077 1.0794
Apr 25, 2022 1.0842 1.0697 1.0711
Apr 26, 2022 1.0738 1.0635 1.0643
Apr 27, 2022 1.0655 1.0586 1.0602

На основе этих данных шаг за шагом рассчитаем ATR.

1. Рассчитываем TR. Это наибольшее значение из следующих:

H-L

 absh-pc

 absl-pc

Итак, рассчитаем все три значения и найдем среди них наибольшее — это и будет TR (истинный диапазон),

TR

2. Рассчитываем средний истинный диапазон (ATR) за 14 периодов

ATR

Повторив все эти шаги, можно рассчитать индикатор Average True Range вручную. К счастью, сегодня нам не придется делать этого, поскольку в торговом терминале MetaTrader 5 уже есть встроенный готовый индикатор. Все, что нужно сделать, это выбрать его из списка других доступных индикаторов. Ниже показано, как это сделать.

В терминале выбираем меню "Вставка", далее выбираем в нем Индикаторы --> Осцилляторы --> Average True Range:

Вставка ATR

После выбора Average True Range откроется окно для настройки параметров индикатора:

Окно вставки ATR

1 - желаемый период индикатора.

Это значение периода может отличаться в зависимости от таймфрейма и от конкретного инструмента — все дело в волатильности каждого периода или инструмента. Чем длиннее ATR, тем лучше он для получения точных сигналов, потому что будет более плавное среднее значение.

2 - цвет линии ATR.

3 - стиль линии ATR.

4 - толщина линии ATR.

После настройки параметров ATR он запустится на графике и будет выглядеть следующим образом:

ATR на графике

На скриншоте видно, что индикатор запустился в дополнительном окне графика — в нем 14-периодный индикатор ATR представлен линией, измеряющей волатильность инструмента EURUSD на часовом таймфрейме.

Как я уже сказал, ATR измеряет волатильность. В соответствии с этим мы анализируем значения в окне ATR: чем ниже значение ATR, тем ниже волатильность инструмента. И наоборот, чем выше значение ATR, тем выше волатильность торгового символа.

Ниже показано, как интерпретировать график индикатора:

Интерпретация ATR

Когда на графике ATR образуется впадина, это указывает на низкую волатильность, и наоборот, когда индикатор ATR показывает высокие значения, это указывает на высокую волатильность.

Как может быть понятно из расчета, сам индикатор не подходит для генерации точных торговых сигналов. Он учитывает только величину диапазона, но в этом и его сила — это один из лучших инструментов, который может помочь определить подходящий размер позиции, стоп-лосс и тейк-профит.

Еще раз напомню, что ATR измеряет только волатильность и не определяет тренд или направление рынка. Поэтому не путайтесь: если кривая ATR движется вверх, это не значит, что тренд восходящий, и наоборот, если кривая ATR движется вниз, это не значит, что тренд нисходящий. Определить наличие или отсутствие тренда могут другие инструменты, например индикатор ADX.

Вы можете найти определение тренда в предыдущей статье из этой серии.

Рисунок ниже еще раз доказывает, что ATR не показывает направление тренда:

Интерпретация ATR 2

Видны участки, на которых индикатор движется вверх, а цена в это время движется вниз и наоборот: ATR движется вниз, а цена в это время растет. Поэтому очень важно это запомнить: ATR измеряет волатильность, но он не показывает направление движения рынка.


Стратегия по индикатору ATR

В этой части рассмотрим простые стратегии, основанные на концепции индикатора ATR. Суть индикатора ATR заключается в том, что он измеряет только волатильность рынка, а не направление цен.

1. Простая система ATR - Сила ATR:

По этой стратегии мы будем сравнивать текущее значение ATR с определенными значениями и определять, является ли ATR сильным или нет. Здесь важно отметить, что эти конкретные значения могут различаться у различных инструментов и на различных периодах. Итак, мы будем проверять значение индикатора ATR и по его значению определять его силу. Если текущее значение ATR больше 0,0024, это означает, что ATR сильный, а если текущее значение меньше 0,0014, это означает, что ATR слабый. Если значение ATR находится в диапазоне от 0,0014 до 0,0024, это означает, что показатель является нейтральным и будет возвращено только текущее значение.


2. Простая система ATR - Движение ATR:

В соответствии с этой стратегией мы будем сравнивать текущее значение ATR с предыдущим, а затем делать вывод о движении: или если линия ATR движется вверх, это означает, что текущее значение ATR больше, чем предыдущее, и, соответственно, ATR (и волатильность) растет. Движение вниз — это когда текущее значение ATR меньше предыдущего.


3. Простая система ATR - уровни Stop Loss и Take Profit:

В соответствии с этой стратегией мы будем использовать значения ATR для определения динамического уровня стоп-лосса и тейк-профита на основе текущего значения ATR и конкретного расчета стоп-лосса и тейк-профита для позиций на покупку и позиций на продажу.

В случае позиции на покупку на графике нужно выводить:

В случае позиции на продажу на графике нужно выводить:

Конечно, существует множество более продвинутых стратегий с использованием индикатора ATR, однако здесь мы рассмотрим только очень простые, которые помогут понять суть индикатора. И уже на основе этих данных можно научиться использовать ATR, в том числе в очень сложных стратегиях.


Схема стратегии по индикатору ATR

В этой части мы шаг за шагом узнаем, что же нам нужно для создания торговой системы по трем рассмотренным стратегиям с помощью подробного плана/схемы. Вообще это очень важный шаг, предшествующий программированию систем на основе торговых идей. Здесь мы рассмотрим схемы, которую помогут написать простую программу или советника, который будет показывать комментарии с текущим значением ATR. Собственно эти комментарии и будут отражать три рассмотренные ранее стратегии. Вот такой будет общая схема:

Схема простой системы по индикатору ATR

1. Простая система ATR - Сила ATR:

Желаемая программа должна сравнивать текущее значение ATR с референсным значением = 0,0024. Если ATR больше этого значения, значит, Средний истинный диапазон в данный момент сильный. Если ATR не больше 0,0024, программа должна проверить — может, ATR ниже другого значения = 0,0014. Это будет означать, что ATR слабый. Если значение ATR также не ниже 0,0014, оно находится в диапазоне от 0,0014 до 0,0024, и это будет означать, что показатель нейтральный. В таком случае программа должна просто вывести на экран текущее значение.

Ниже приведен план этой стратегии, отображающей силу ATR:

Простая система ATR - схема стратегии ATR Strength

2. Простая система ATR - Движение ATR:

Итак, в этот раз советник будет сравнивать текущее значение ATR с предыдущим, а затем делать вывод о движении: если текущее значение ATR больше предыдущего, значит, ATR растет. Если же текущее значение ATR меньше, чем предыдущее, это означает, что ATR падает.

Ниже приведен план этой стратегии, отображающей движение ATR:

Простая система ATR - схема стратегии ATR Movement

3. Простая система ATR - уровни Stop Loss и Take Profit:

В обоих случаях нужно выводить комментарий на график.

Это будут позиции на покупку и на продажу:


Вот как выглядит план этой стратегии с уровнями стоп-лосс и тейк-профит по ATR:

Простая система ATR - уровни Stop Loss и Take Profit:

Торговая система по ATR

Наконец, в этой части мы подходим к самой сути — будем писать код стратегий и создавать торговые системы на основе каждой из них. В итоге у нас должна получиться программа, которая будет автоматически выполнять нужные шаги. Начнем с кода советника, который будет автоматически выводить на график комментарии со значением ATR.

Рассмотрим по шагам, как написать код советника по первой простой стратегии по ATR.

double PriceArray[];
ArraySetAsSeries(PriceArray,true);
int ATRDef=iATR(_Symbol,_Period,14);
CopyBuffer(ATRDef,0,0,3,PriceArray);
double ATRValue=NormalizeDouble(PriceArray[0],5);
Comment("ATR Value = ",ATRValue);

Целиком код этой стратегии выглядит так. Можете копировать его и использовать в собственных проектах:

//+------------------------------------------------------------------+
//|                                                   Simple ATR.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //создание массива цен
   double PriceArray[];
   
   //Сортировка данных
   ArraySetAsSeries(PriceArray,true);

   //определение ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   // определяем данные и сохраняем результат
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //Получаем значения текущих данных
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //вывод комментария на графике
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

Компилируем код советника, и он появляется в окне Навигатора в терминале MetaTrader 5, откуда его можно запустить на графике:

ATR в Навигаторе

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

Окно простого ATR

Нажимаем OK, и программа (советник) запустится на графике, как показано на рисунке ниже:

Simple ATR на графике

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

Сигнал простого ATR

Далее напишем торговые системы по каждой рассмотренной стратегии.

1. Простая система ATR - Сила ATR:

Вот так будет выглядеть код этого советника на основе простой системы Simple ATR System - ATR Strength:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR strength.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //создание массива цен
   double PriceArray[];
   
   
   //Сортировка данных
   ArraySetAsSeries(PriceArray,true);
   
   //определение ATR
   int ATRDef=iATR(_Symbol,_Period,14);   
   
   // определяем данные и сохраняем результат
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //Получаем значения текущих данных
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //выводим на график комментарий со значением силы ATR:
   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
   
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
   
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);
  }
//+------------------------------------------------------------------+

Что изменилось в коде по сравнению с предыдущим:

   if(ATRValue>0.0024)
   Comment("Strong ATR","\n","ATR Value = ",ATRValue);
   if(ATRValue<0.0014)
   Comment("Weak ATR","\n","ATR Value = ",ATRValue);
   if((ATRValue>0.0014)&&(ATRValue<0.0024))
   Comment("ATR Value = ",ATRValue);

После компиляции программа советника появится в окне Навигатора в MetaTrader 5:

ATR в Навигаторе 1

Запускаем двойным кликом на файле или перетаскиваем на график. После этого появится окно советника (в окне всегда для советника разрешаем автоматическую торговлю):

Окно силы ATR

Нажимаем OK, и программа (советник) запустится на графике, как показано на рисунке ниже:

Система силы ATR на графике

На рисунке ниже показан пример сигналов, сгенерированных на основе этой стратегии.

Как видите, на графике есть комментарий: Strong ATR (сильный ATR) и отдельной строкой значение ATR:

Система силы ATR на графике - сильный ATR

А на этом графике есть комментарий: Weak ATR (слабый ATR) и отдельной строкой значение ATR:

Система силы ATR на графике - слабый ATR

А на этом примере только одна строка комментария с текущим значением ATR, потому что по силе своей он нейтральный:

Система силы ATR на графике - нейтральный

2. Простая система ATR - Движение ATR: 

Ниже показан код этого советника на основе простой системы Simple ATR System - ATR Movement, показывающий движение ATR:

//+------------------------------------------------------------------+
//|                             Simple ATR System - ATR movement.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //создание массивов
   double PriceArray0[];
   double PriceArray1[];
   
   //сортировка ценового массива начиная с текущих данных в прошлое
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
   
   //определение ATR
   int ATRDef=iATR(_Symbol,_Period,14); 
   
   // определяем данные и сохраняем результат
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
   
   //Получаем значения текущих данных
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);

   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
   
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
      
  }
//+------------------------------------------------------------------+


Что изменилось в коде по сравнению с предыдущим:

   double PriceArray0[];
   double PriceArray1[];
   ArraySetAsSeries(PriceArray0,true);
   ArraySetAsSeries(PriceArray1,true);
   CopyBuffer(ATRDef,0,0,3,PriceArray0);      
   CopyBuffer(ATRDef,0,0,3,PriceArray1);
   double ATRValue=NormalizeDouble(PriceArray0[0],5);
   double PreATRValue=NormalizeDouble(PriceArray1[1],5);
   if(ATRValue>PreATRValue)
   Comment("ATR is UP","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
   if(ATRValue<PreATRValue)
   Comment("ATR is Down","\n","ATR Value = ",ATRValue,"\n","ATR Previous Value = ",PreATRValue);
После компиляции программа советника появится в окне Навигатора в MetaTrader 5:

ATR в Навигаторе 2

Запускаем двойным кликом на файле или перетаскиваем на график. После этого снова появится окно советника:

Окно стратегии ATR Movement

Разрешаем алго-трейдинг ("Allow Algo Trading"), нажимаем OK, и программа (советник) запустится на графике, как показано на рисунке ниже:

Система ATR movement на графике

На рисунке ниже показан пример сигналов, сгенерированных на основе этой стратегии.

Когда ATR растет:

ATR movement - рост

Когда ATR снижается:

ATR movement - снижение


3. Простая система ATR - уровни Stop Loss и Take Profit:

В случае позиции на покупку на графике нужно выводить: 

В случае позиции на продажу на графике нужно выводить: 

Ниже показан код этого советника на основе простой системы Simple ATR System - уровни SL & TP:

//+------------------------------------------------------------------+
//|                             Simple ATR System - SL&TP levels.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //определяем цены Ask и Bid
   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   
   //создание массива цен
   double PriceArray[];
   
   //Сортировка данных
   ArraySetAsSeries(PriceArray,true);

   //определение ATR
   int ATRDef=iATR(_Symbol,_Period,14);
   
   
   // определяем данные и сохраняем результат
   CopyBuffer(ATRDef,0,0,3,PriceArray);
   
   //Получаем значения текущих данных
   double ATRValue=NormalizeDouble(PriceArray[0],5);
   
   //рассчитываем уровни SL и TP для позиции на покупку
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //рассчитываем уровни SL и TP для позиции на продажу
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
   
   //вывод комментария на графике
   Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
   "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
   "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
  }
//+------------------------------------------------------------------+

Какие здесь отличия:

   double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
   //рассчитываем уровни SL и TP для позиции на покупку
   double StopLossBuy=Bid-(ATRValue*2);
   double TakeProfitBuy=Ask+((ATRValue*2)*2);
   
   //рассчитываем уровни SL и TP для позиции на продажу
   double StopLossSell=Ask+(ATRValue*2);
   double TakeProfitSell=Bid-((ATRValue*2)*2);
  • Текущая цена Ask
  • Вторая строка — текущая цена Bid.
  • Третья строка — текущее значение ATR.
  • Четвертая строка — значение уровня Stop Loss.
  • Пятая строка — значение уровня Take Profit.
  •    Comment("BUY POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossBuy,"\n","Take Profit = ",TakeProfitBuy,"\n",
       "SELL POSITION","\n","Current Ask = ",Ask,"\n","Current Bid = ",Bid,"\n","ATR Value = ",ATRValue,
       "\n","Stop Loss = ",StopLossSell,"\n","Take Profit = ",TakeProfitSell);
    

    После компиляции программа советника появится в окне Навигатора в MetaTrader 5:

    ATR в Навигаторе 3

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

    Окно стратегии ATR SL_TP

    Нажимаем OK, и программа (советник) запустится на графике, как показано на рисунке ниже:

    ATR SL_TP на графике

    На рисунке ниже показан пример сигналов, сгенерированных на основе этой стратегии.

    ATR уровни SL-TP

    Заключение

    Предполагается, что к текущему моменту вы хорошо разбираетесь в понятии Среднего истинного диапазона, который измеряет индикатор ATR. Мы узнали, что такое ATR и что он измеряет, как его можно рассчитать вручную. Мы посмотрели пример расчета по реальным рыночным данным. Также мы изучили несколько простых стратегий, основанных на концепции ATR. Мы увидели, какие стратегии могут измерять силу ATR и движение, а также рассчитывать уровни стоп-лосс и тейк-профит позиций на основе ATR. Также, как и в других статьях из этой серии, мы разработали схему работы, которая позволит шаг за шагом разработать торговую систему по каждой стратегии. Затем, используя эту схему, мы написали код торговых систем по каждой стратегии на языке MetaQuotes Languages (MQL5). В итоге мы получили программы, которые можно запускать в платформе MetaTrader 5.

    Если вы поняли все эти темы и вместе со статьей практиковали все пройденное, вы к текущему моменту уже должны уметь использовать средний истинный диапазон (ATR) в соответствии с концепцией, лежащей в его основе. Кроме того, вы должны уметь читать показатели индикатора и на его основе определять волатильность торгового инструмента.

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

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