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

 
Дело ваше хотите исправляйте, хотите не исправляйте. Я нашел решение проблемы для себя. Всем пока!
 
Fedor Arkhipov:

И еще. В тестере стратегий MT5  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0) инициализирует буфер и проблем с отрисовкой нет.

Почему тогда в тестере стратегий работает?

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0)  никогда не был предназначен для ИНИЦИАЛИЗАЦИИ. Это только управление отрисовкой, если в буфере есть значение EMPTY_VALUE. Если что-то там инициализировалось - то это только случайное совпадение.

 
Fedor Arkhipov:

А если прикрепить просто индикатор на график, тоже инициализации буферов нет. А в МТ4 есть.

Кто еще из нас разводит цирк?

Пора бы уже показать ПРОСТОЙ индикатор MQL5. Там сразу и разберём пример применения и  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0) и инициализации при первом старте или при подкачке истории.

 
Vladimir Karputov:

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0)  никогда не был предназначен для ИНИЦИАЛИЗАЦИИ. Это только управление отрисовкой, если в буфере есть значение EMPTY_VALUE. Если что-то там инициализировалось - то это только случайное совпадение.

В программировании совпадений нет
 
Fedor Arkhipov:
В программировании совпадений нет

Когда Выделятся память под переменную или массив, эта память может содержать любой мусор. Иногда этот мусор может быть даже "0.0", а иногда какое-то случаное число. И задача писателя в индикаторе как раз отловить момент первого запуска или подкачки истории и проинициализировать индикаторный буфер.

 

Ладно если вы так не считаете, решение есть, можно тему закрыть.

Спасибо за ответы!

 
Fedor Arkhipov:

Ладно если вы так не считаете, решение есть, можно тему закрыть.

Спасибо за ответы!

Если не хотите публичности - позвоните по скайпу, покажу и научу.

 
Vladimir Karputov:

Если не хотите публичности - позвоните по скайпу, покажу и научу.

Я знаю как буферы инициализировать я кусок кода выложил. Но повторюсь, что в МТ4 аналогичная функция инициализировала буфер новым значением.

 
Fedor Arkhipov:
Это значит что в МТ4 было сделано не правильно?

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

 
Artyom Trishkin:

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

А вы всегда инициализируете буферы в функции OnCalculate() ? Скажу больше и никто не инициализирует в MT4 и в МТ5. Я много индикаторов за все время повидал. Откройте примеры МТ5 и МТ4 и посмотрите сначала.

При этом при вычислениях не обязательно также заполнять буфер значением EMPTY_VALUE  в MT4 и в МТ5. Нужно лишь заполнить нужные значения индикатора. А это значит, что буфер был инициализирован изначально.