Скачать MetaTrader 5

Смотри, как бесплатно скачать роботов

Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят

Понравился скрипт?
Оцени его работу в терминале MetaTrader 5

2012.12.11 06:11
Индикаторы

Класс для построения ADX с использованием кольцевого буфера - индикатор для MetaTrader 5

| Russian English 中文 Español Deutsch 日本語 Português

Просмотров:
1694
Рейтинг:
голосов: 16
\MQL5\Include\IncOnRingBuffer\\MQL5\Indicators\OnRingBuffer\

Описание

Класс CADXOnRingBuffer предназначен для расчета технического индикатора Индекс Среднего Направления Движения (Average Directional Movement Index, ADX) с использованием алгоритма  кольцевого буфера

Декларация

class CADXOnRingBuffer

Заголовок

#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>

Файл класса CADXOnRingBuffer.mqh нужно поместить в папку IncOnRingBuffer, которую необходимо создать в MQL5\Include\. К описанию прикреплены два файла с примерами, которые используют класс из этой папки. Файл с классом кольцевого буфера и с классом Moving Average тоже должен быть в этой папке.

Методы класса

//--- метод инициализации:
bool Init(                                // возвращает false при ошибке, при успехе - true
   int            ma_period   = 14,       // период сглаживания скользящей средней 
   ENUM_MA_METHOD ma_method   = MODE_EMA, // метод сглаживания скользящей средней
   int            size_buffer = 256,      // размер кольцевого буфера, количество хранимых данных
   bool           as_series   = false     // true, если таймсерия, false - обычная индексация входных данных
   );             
//--- метод расчета на основе таймсерий или индикаторных буферов:          
int MainOnArray(                  // возвращает количество обработанных элементов  
   const int     rates_total,     // размер массивов
   const int     prev_calculated, // обработано элементов на предыдущем вызове
   const double &high[]           // массив максимальных значений
   const double &low[]            // массив минимальных значений
   const double &close[]          // массив цен закрытия
   );
//--- метод расчета на основе отдельных последовательных элементов массива           
double MainOnValue(              // возвращает значение ADX для заданного элемента
   const int    rates_total,     // размер массива
   const int    prev_calculated, // обработано элементов массива
   const int    begin,           // откуда начинаются значимые данные массива
   const double high,            // максимальное значение 
   const double low,             // минимальное значение 
   const double close,           // цена закрытия 
   const int    index            // индекс элемента
   );
//--- методы доступа к дынным:
int    BarsRequired();   // Возвращает необходимое количество баров для построения индикатора
string NameADX();        // Возвращает имя индикатора
string NameNDI();        // Возвращает имя линии индикатора негативного направления движения
string NamePDI();        // Возвращает имя линии индикатора позитивного направления движения
string MAMethod();       // Возвращает метод сглаживания в виде текстовой строки  
int    MAPeriod();       // Возвращает период сглаживания
int    Size();           // Возвращает размер кольцевого буфера

Получать рассчитанные данные  индикатора из кольцевого буфера можно как из обычного массива. Например:

#include <IncOnRingBuffer\CADXOnRingBuffer.mqh>
CADXOnRingBuffer adx;

...

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
  {
//--- расчет индикатора:
   adx.MainOnArray(rates_total,prev_calculated,high,low,close);

   ...
     
//--- скопируем данные из кольцевых буферов "adx" в индикаторные:
   for(int i=start;i<rates_total;i++)
     {
      ADX_Buffer[i]=adx[rates_total-1-i];      // average directional movement index
      PDI_Buffer[i]=adx.pdi[rates_total-1-i];  // positive directional index
      NDI_Buffer[i]=adx.ndi[rates_total-1-i];  // negative directional index
     }

   ...
  }

Обратите внимание, что индексация в кольцевом буфере как в таймсерии.

Примеры

  1. Файл Test_ADX_OnArrayRB.mq5 - рассчитывает индикатор на основе ценовых таймсерий. Демонстрируется применение метода MainOnArray()
  2. Файл  Test_ADX_OnValueRB.mq5 демонстрирует использование метода MainOnValue(). Сначала рассчитывается и строится индикатор ADX. Затем на основе кольцевого буфера этого индикатора строится еще три линии ADX. 


Результат работы Test_ADX_OnArrayRB.mq5 с размером кольцевого буфера в 256 элементов



Результат работы Test_ADX_OnValueRB.mq5 с размером кольцевого буфера в 256 элементов

 

При написании кода использовались наработки MetaQuotes Software Corp.Integer и GODZILLA

Класс для построения ATR с использованием  кольцевого буфера Класс для построения ATR с использованием кольцевого буфера

Класс предназначен для расчета индикатора Среднего Истинного Диапазона (Average True Range, ATR) с использованием алгоритма кольцевого буфера.

Exp_ColorTrend_CF Exp_ColorTrend_CF

Торговая система Exp_ColorTrend_CF построена на основе изменения направления тренда, отображаемого индикатором ColorTrend_CF

VininI_Trend_XMA_WPR VininI_Trend_XMA_WPR

Трендовый индикатор, определяющий свои значения на основании сигналов с индикатора Williams' Percent Range и совокупности его сигнальных линий, периоды которых меняются в арифметической прогрессии.

Pivot Points to Html Pivot Points to Html

Скрипт рассчитывает Pivot Point по всем символам из обзора рынка и выводит результаты в html-файл.