Несколько индикаторных буферов

 

Есть перегрузка функции  CopyBuffer

int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );

у которой 2й параметр это номер буфера индикатора.

Возникает вопрос как правильно понимать что это за номер и как с ним правильно работать?

Вот пример где создаются 2 буфера и 2 обработчика для 2х разных индикаторов: 

int    ExtMa2Handle;
double ExtMa2Buffer[];

int    ExtMa4Handle;
double ExtMa4Buffer[];


SetIndexBuffer(0, ExtMa2Buffer, INDICATOR_CALCULATIONS);
ExtMa2Handle = iMA(Symbol(), ma_2_timeframe, ma_2_period, ma_2_shift, ma_2_method, ma_2_price);

SetIndexBuffer(0, ExtMa4Buffer, INDICATOR_CALCULATIONS);
ExtMa4Handle = iMA(Symbol(), ma_4_timeframe, ma_4_period, ma_4_shift, ma_4_method, ma_4_price);


CopyBuffer(ExtMa2Handle, 0, 0, 1, ExtMa2Buffer);
CopyBuffer(ExtMa4Handle, 0, 0, 1, ExtMa4Buffer);

bool someLogic = ExtMa2Buffer[0] > ExtMa4Buffer[0];

Номер буфера индикатора у них указан один и тот же, вызовет ли проблемы использование одинаковых номеров в данной ситуации или нет и почему? Возможно есть рекомендации как работать с этим номером если индикаторов много 10 или 20 разных к чему приведет их инициализация с одинаковым номером?

И как должен выглядеть этот фрагмент кода что бы работать верно?

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Перегрузка функций - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

У индикатора вкладку "Цвета" смотрите - вот это они. 

И в справке читайте про каждый индикатор, если у него больше одного буфера, там указаны константы.

 
Dmitry Fedoseev #:

У индикатора вкладку "Цвета" смотрите - вот это они. 

И в справке читайте про каждый индикатор, если у него больше одного буфера, там указаны константы.

Что значит вкладка у индикатора?

Вот ссылка на доку по MA https://www.mql5.com/ru/docs/indicators/ima

Где там какие вкладки? О чем вы говорите?

В примере из документации

//--- привязка массива к индикаторному буферу
   SetIndexBuffer(0,iMABuffer,INDICATOR_DATA);

что делать с первым параметром если индикаторов несколько не понятно


Или вы имеете в виду что параметр регулирует цвет отображения индикатора на графике?

Документация по MQL5: Технические индикаторы / iMA
Документация по MQL5: Технические индикаторы / iMA
  • www.mql5.com
iMA - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Ах да, вкладка "Цвета" есть только у пользовательских индикаторов

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

У iMA() - только одна линия, то есть 1 буфер, значит, второй параметр функции CopyBuffer() - 0. Хоть сколько их, всегда 0,

Первый параметр определяет к какому индикатор выполняется обращение - это хэндл индикатора (то число, которое возвращает функция iMA()).

Первый параметр - это номер дома (собственно индикатор), а второй  - номер квартиры (номер буфера). Как бы.

--

Непонятно, что вы делаете? Индикатор? 

С индикатором немного не так. Надо вычислять количество копируемых элементов.

Почитайте, здесь статья есть "Индикатор от другого индикатора"

https://www.mql5.com/ru/articles/15

https://www.mql5.com/ru/articles/127