Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Класс для построения ATR с использованием кольцевого буфера - индикатор для MetaTrader 5
- Просмотров:
- 3054
- Рейтинг:
- Опубликован:
- 2012.12.11 06:09
- Обновлен:
- 2016.11.22 07:33
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Описание
Класс CATROnRingBuffer предназначен для расчета индикатора Среднего Истинного Диапазона (Average True Range, ATR) с использованием алгоритма кольцевого буфера.
Декларация
class CATROnRingBuffer
Заголовок
#include <IncOnRingBuffer\CATROnRingBuffer.mqh>
Файл класса CATROnRingBuffer.mqh нужно поместить в папку IncOnRingBuffer, которую необходимо создать в MQL5\Include\. К описанию прикреплены два файла с примерами, которые используют класс из этой папки. Файл с классом кольцевого буфера и с классом Moving Average тоже должен быть в этой папке.
Методы класса
//--- метод инициализации: bool Init( // возвращает false при ошибке, при успехе - true int ma_period = 14, // период сглаживания скользящей средней ENUM_MA_METHOD ma_method = MODE_SMA, // метод сглаживания скользящей средней 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( // возвращает значение ATR для заданного элемента 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 Name(); // Возвращает имя индикатора string MAMethod(); // Возвращает метод сглаживания в виде текстовой строки int MAPeriod(); // Возвращает период сглаживания int Size(); // Возвращает размер кольцевого буфера
Получать рассчитанные данные индикатора из кольцевого буфера можно как из обычного массива. Например:
#include <IncOnRingBuffer\CATROnRingBuffer.mqh> CATROnRingBuffer atr; ... //+------------------------------------------------------------------+ //| 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[]) { //--- расчет индикатора: atr.MainOnArray(rates_total,prev_calculated,high,low,close); ... //--- скопируем данные из кольцевого буфера "atr" в индикаторный: for(int i=start;i<rates_total;i++) { ATR_Buffer[i]=atr[rates_total-1-i]; } return(rates_total); }
Обратите внимание, что индексация в кольцевом буфере как в таймсерии.
Примеры
- Файл Test_ATR_OnArrayRB.mq5 - рассчитывает индикатор на основе ценовых таймсерий. Демонстрируется применение метода MainOnArray()
- Файл Test_ATR_OnValueRB.mq5 демонстрирует использование метода MainOnValue(). Сначала рассчитывается и строится индикатор ATR. Затем на основе кольцевого буфера этого индикатора строится еще одна индикаторная линия ATR.
Результат работы Test_ATR_OnArrayRB.mq5 с размером кольцевого буфера в 256 элементов При написании кода использовались наработки MetaQuotes Software Corp., Integer и GODZILLA
Результат работы Test_ATR_OnValueRB.mq5 с размером кольцевого буфера в 256 элементов
Торговая система Exp_ColorTrend_CF построена на основе изменения направления тренда, отображаемого индикатором ColorTrend_CF
CombinatoricsНачальная библиотека по функциям комбинаторики.
Класс предназначен для расчета технического индикатора Индекс Среднего Направления Движения (Average Directional Movement Index, ADX) с использованием алгоритма кольцевого буфера.
VininI_Trend_XMA_WPRТрендовый индикатор, определяющий свои значения на основании сигналов с индикатора Williams' Percent Range и совокупности его сигнальных линий, периоды которых меняются в арифметической прогрессии.