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

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

Просмотров:
2435
Рейтинг:
(19)
Опубликован:
2012.12.21 10:28
Обновлен:
2016.11.22 07:33
\MQL5\Include\IncOnRingBuffer\ \MQL5\Indicators\OnRingBuffer\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Описание

Класс CMomentumOnRingBuffer предназначен для расчета технического индикатора Темпа (Momentum) с использованием алгоритма  кольцевого буфера

Декларация

class CMomentumOnRingBuffer : public CArrayRing

Заголовок

#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>

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

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

//--- метод инициализации:
bool Init(                  // возвращает false при ошибке, при успехе - true
   int  period      = 14,   // период Momentum
   int  size_buffer = 256,  // размер кольцевого буфера
   bool as_series   = false // true, если таймсерия, иначе - false
   );
//--- метод расчета на основе таймсерии или индикаторного буфера:          
int MainOnArray(                  // возвращает количество обработанных элементов  
   const int     rates_total,     // размер массива array[]
   const int     prev_calculated, // обработано элементов на предыдущем вызове
   const double& array[],         // массив входных данных
   );
//--- метод расчета на основе отдельных последовательных элементов массива           
double MainOnValue(               // возвращает значение Momentum для заданного элемента
   const int    rates_total,      // размер массива
   const int    prev_calculated,  // обработано элементов массива
   const int    begin,            // откуда начинаются значимые данные массива
   const long   value,            // значение элемента массива
   const int    index             // индекс элемента
   );
//--- методы доступа к данным:
int                 BarsRequired(); // Возвращает необходимое количество баров для построения индикатора
string              Name();         // Возвращает имя индикатора
int                 Period();       // Возвращает период
int                 Size();         // Возвращает размер кольцевого буфера

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

//--- класс с методами расчета индикатора Momentum:
#include <IncOnRingBuffer\CMomentumOnRingBuffer.mqh>
CMomentumOnRingBuffer momentum;

...

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // размер массива price[]
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const int begin,            // откуда начинаются значимые данные
                 const double& price[])      // массив для расчета
  {
//--- расчет индикатора на основе таймсерии:
   momentum.MainOnArray(rates_total,prev_calculated,price);

...
 
//--- используем данные из кольцевого буфера "momentum",
//    например,скопируем данные в индикаторный буфер:
   for(int i=start;i<rates_total && !IsStopped();i++)
      Momentum_Buffer[i] = momentum[rates_total-1-i]; // линия индикатора

...

//--- return value of prev_calculated for next call:
   return(rates_total);
  }

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

Примеры

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


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



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

 

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

TrendEnvelopes TrendEnvelopes

Типичный, семафорный индикатор тренда.

ytg_Fractals_Price ytg_Fractals_Price

Индикатор ценовых уровней фракталов

Breakout Bars Trend EA Breakout Bars Trend EA

Эксперт на основе индикатора Breakout Bars Trend v2. В зависимости от настроек вход осуществляется как при развороте тренда, так и после пропуска указанного количества ложных сигналов.

Exp_ColorXADX Exp_ColorXADX

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