MQL5 при отрисовке индикатора.

 

При использовании функции 

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

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

По факту этого не происходит, и буфер остается инициализирован значением EMPTY_VALUE.

Инициализация буфера значением происходит только если удалить индикатор, а потом повторно его прикрепить к графику.

При переключении на другой таймфрейм буффер инициализируется значением EMPTY_VALUE.

В Метатрадер 4 индикатор работает отлично. Баг был обнаружен случайно при переделке индикатора из MT4 в MT5.

К сожалению не могу выложить код, т.к. код принадлежит заказчику.

 
Fedor Arkhipov:

При использовании функции 

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

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

По факту этого не происходит, и буфер остается инициализирован значением EMPTY_VALUE.

Инициализация буфера значением происходит только если удалить индикатор, а потом повторно его прикрепить к графику.

При переключении на другой таймфрейм буффер инициализируется значением EMPTY_VALUE.

В Метатрадер 4 индикатор работает отлично. Баг был обнаружен случайно при переделке индикатора из MT4 в MT5.

К сожалению не могу выложить код, т.к. код принадлежит заказчику.

А может сначала справку прочесть :) ? И тогда Вы уже не будете гадать на кофейной гуще и выдавать перлы вроде "... по идее ..."

 
Vladimir Karputov:

А может сначала справку прочесть :) ? И тогда Вы уже не будете гадать на кофейной гуще и выдавать перлы вроде "... по идее ..."

Уже читали. Я не претендую на знание всех функций MT5. Если знаете, то пожалуйста напишите где я не прав.

 
Fedor Arkhipov:

Уже читали.

Хорошо. Тогда начнём с начала. Покажите цитату, что означает 

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
 

Задает значение соответствующего свойства соответствующей линии индикатора. Свойство индикатора должно быть типа double.

Тоже что и в MT4
 
Fedor Arkhipov:

Задает значение соответствующего свойства соответствующей линии индикатора. Свойство индикатора должно быть типа double.

Тоже что и в MT4

Нет, так не пойдёт. Дайте URL справки по MQL5.

 
Vladimir Karputov:

Нет, так не пойдёт. Дайте URL справки по MQL5.

Для чего это все?

 
Fedor Arkhipov:

Для чего это все?

Для того, чтобы раз и навсегда Вы вычеркнули из своего лексикона слово "баг". Сначала научитесь работать со справкой.

 

PlotIndexSetDouble

Задает значение соответствующего свойства соответствующей линии индикатора. Свойство индикатора должно быть типа double.

bool  PlotIndexSetDouble( 
   int     plot_index,     // индекс графического стиля 
   int     prop_id,        // идентификатор свойства 
   double  prop_value      // устанавливаемое значение 
   );

Параметры

plot_index

[in]  Индекс графического построения

prop_id

[in]  Идентификатор свойства индикатора. Значение может быть одним из значений перечисления ENUM_PLOT_PROPERTY_DOUBLE.

prop_value

[in]  Значение свойства.

Возвращаемое значение

В случае успешного выполнения возвращает true, в противном случае false.

 
Vladimir Karputov:

Для того, чтобы раз и навсегда Вы вычеркнули из своего лексикона слово "баг". Сначала научитесь работать со справкой.

Вы мой профиль видели?
 

Вот смотрите такую же функцию в MT4

SetIndexEmptyValue

Устанавливает значение пустой величины для линии индикатора.

void  SetIndexEmptyValue(
   int     index,       // номер линии
   double  value        // новое значение
   );

Параметры

index

[in]  Порядковый номер линии. Должен быть от 0 до 7.

value

[in]  Новое "пустое" значение.

Возвращаемое значение

Нет.

Примечание

Пустые значения не рисуются и не показываются в DataWindow. По умолчанию значение пустой величины - EMPTY_VALUE.

Причина обращения: