Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - Тимур Машнин страница 7

СКАЧАТЬ MACD.

      Индикатор MACD имеет включаемый файл MovingAverages:

      #include <MovingAverages.mqh>

      расположенный в папке Include.

      Если в файле MovingAverages и файле MACD одновременно объявить Extern-переменную:

      extern int a=0;

      то при компиляции обоих файлов все пройдет удачно, и переменную можно будет использовать.

      Если же в файле MovingAverages и файле MACD одновременно объявить статическую глобальную переменную:

      static int a=0;

      то при компиляции обоих файлов возникнет ошибка:

      Помимо команды #include полезной является также директива #define, которая позволяет делать подстановку выражения вместо идентификатора, например:

      #define PI 3.14

      Хэндл индикатора

      Начнем с цитаты:

      HANDLE идентифицирует объект, которым Вы можете манипулировать. Джеффри РИХТЕР «Windows для профессионалов».

      Переменные типа handle представляют собой указатель на некоторую системную структуру или индекс в некоторой системной таблице, которая содержит адрес структуры.

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

      Хэндл индикатора представляет собой переменную типа int и объявляется, как правило, после объявления массивов буферов индикатора, вместе с глобальными переменными, например в индикаторе MACD:

      // – - indicator buffers

      double ExtMacdBuffer [];

      double ExtSignalBuffer [];

      double ExtFastMaBuffer [];

      double ExtSlowMaBuffer [];

      // – - MA handles

      int ExtFastMaHandle;

      int ExtSlowMaHandle;

      Здесь хэндлы индикаторов – это указатели на индикатор скользящего среднего с разными периодами 12 и 26.

      Объявив эти переменные, мы естественно реально ничего не получаем, так как объекта индикатора, данные которого мы хотим использовать, еще не существует.

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

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

      Стандартная функция для индикатора скользящего среднего это:

      int iMA (

      string symbol, // имя символа

      ENUM_TIMEFRAMES period, // период

      int ma_period, // период усреднения

      int ma_shift, // смещение индикатора по горизонтали

      ENUM_MA_METHOD ma_method, // тип сглаживания

      ENUM_APPLIED_PRICE applied_price // тип цены или handle

      );

      И в индикаторе MACD хэндлы индикатора скользящего среднего получаются с помощью вызова функции iMA в функции OnInit ():

      // – - get MA handles

      ExtFastMaHandle=iMA (NULL,0,InpFastEMA,0,MODE_EMA, InpAppliedPrice);

      ExtSlowMaHandle=iMA (NULL,0,InpSlowEMA,0,MODE_EMA, InpAppliedPrice);

      где используются свойства индикатора:

      // – СКАЧАТЬ