Помогите разобраться с сдвигом линий в индикаторе.

 

Хочу перенести индикатор с МТ4 на МТ5, но проблема в том что в одной из индикаторных линий присутствует двойной сдвиг.

Первый сдвиг функцией.

PlotIndexSetInteger(2,PLOT_SHIFT,shift);

Второй сдвиг при создании индикатора МА .

Hendle = iMA(_Symbol,PERIOD_CURRENT,Period,shift,MODE_SMA,PRICE_MEDIAN);

После всех проделаных манипуляций выдает ошибку   array out of range in 'indicator.mq5'( выход за пределы массива ).

Все манипуляции с сдвигом в плюс и минус как описано в документации результата не принесли.

Ещё один вопрос почему все данные в примерах индикаторов, в функции

 CopyBuffer(Hendle,0,0,to_copy,array);

копируются в нулевой буффер?

 
SERGEI ABRAMOV:

Хочу перенести индикатор с МТ4 на МТ5, но проблема в том что в одной из индикаторных линий присутствует двойной сдвиг.

Первый сдвиг функцией.

Второй сдвиг при создании индикатора МА .

После всех проделаных манипуляций выдает ошибку   array out of range in 'indicator.mq5'( выход за пределы массива ).

Все манипуляции с сдвигом в плюс и минус как описано в документации результата не принесли.

Ещё один вопрос почему все данные в примерах индикаторов, в функции

копируются в нулевой буффер?

В МТ4 и в МТ5 разное направление нумерации таймсерий по умолчанию. В МТ4 элемент с индексом 0  имеет наибольшее время из всех остальных элементов таймсерии, а в МТ5 - наименьшее. Нужно либо разворачивать нумерацию каждой таймсерии (функция ArraySetAsSeries), либо полностью изменять логику работы индикатора.

 
Ihor Herasko #:

В МТ4 и в МТ5 разное направление нумерации таймсерий по умолчанию. В МТ4 элемент с индексом 0  имеет наибольшее время из всех остальных элементов таймсерии, а в МТ5 - наименьшее. Нужно либо разворачивать нумерацию каждой таймсерии (функция ArraySetAsSeries), либо полностью изменять логику работы индикатора.

Спасибо разобрался, если в кратце то есть два варианта решения проблемы. Первый ваш, задаёт направление как в таймсессии.
SetIndexBuffer(0,Buffer,INDICATOR_CALCULATIONS);

Второй через включаемый фай,

#include <Indicators\Trend.mqh>

Там набор трендовых индикаторов которые можно создать в виде объекта, потом можно обращатся по индексу через функцию Main(index).

 
SERGEI ABRAMOV #:
Первый ваш, задаёт направление как в таймсессии.

Это не изменение направление индексации, а указание свойств буфера - буфер используется только для расчетов, без отображения.