Скачать MetaTrader 5

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

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

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

2012.12.20 06:20
Индикаторы

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

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

Просмотров:
1100
Рейтинг:
голосов: 14

Описание

Класс CAMAOnRingBuffer предназначен для расчета технического индикатора Адаптивное Скользящее Среднее (Adaptive Moving Average, AMA) с использованием алгоритма  кольцевого буфера

Декларация

class CAMAOnRingBuffer : public CArrayRing

Заголовок

#include <IncOnRingBuffer\CAMAOnRingBuffer.mqh>

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

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

//--- метод инициализации:
bool Init(                                  // возвращает false при ошибке, при успехе - true
   int            period        = 10,       // период AMA 
   int            fast_period   = 2,        // период быстрой EMA 
   int            slow_period   = 30,       // период медленной EMA
   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(              // возвращает значение AMA для заданного элемента
   const int    rates_total,     // размер массива
   const int    prev_calculated, // обработано элементов массива
   const int    begin,           // откуда начинаются значимые данные массива
   const double value,           // значение элемента массива
   const int    index            // индекс элемента
   );
//--- методы доступа к дынным:
int    BarsRequired();   // Возвращает необходимое количество баров для построения индикатора
string Name();           // Возвращает имя индикатора
int    FastPeriod();     // Возвращает период быстрой EMA
int    SlowPeriod();     // Возвращает период медленной EMA
int    Period();         // Возвращает период AMA
int    Size();           // Возвращает размер кольцевого буфера

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

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

...

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total, 
                const int    prev_calculated, 
                const int    begin, 
                const double &price[]) 
  {
//--- расчет индикатора на основе ценовой таймсерии:
   ama.MainOnArray(rates_total,prev_calculated,price);

...

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

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

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

Примеры

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


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



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

 

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

RD-TrendTrigger RD-TrendTrigger

Осциллятор с использованием T3 усреднения из журнала Technical Analysis of Stocks and Commodities (Dec. 2004).

WcciPatterns WcciPatterns

Индикатор Woodies CCI Paterns

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

Класс предназначен для расчета технического индикатора Индекс Денежных Потоков (Money Flow Index, MFI) с использованием алгоритма кольцевого буфера.

T3MACO T3MACO

Осциллятор с использованием T3 усреднения.