В МТ5 инициализация буфера индикатора производится в тестере стратегий. Вот что самое интересное, а на реальном графике нет.
А должно быть одинаково. Раз там нет то и там нет.
Это не так. Только что проверил в Тестере МТ5 -- инициализация "пустым значением" не происходит. Тестер и реальный поток работают одинаково по части "пустого значения".
Это не так. Только что проверил в Тестере МТ5 -- инициализация "пустым значением" не происходит. Тестер и реальный поток работают одинаково по части "пустого значения".
Вот скрин Журнала тестера:
Странно тогда. У меня индикатор в тестера работал нормально, а на графике нет.
Вы путаете разные два понятия - 1. инициализацию переменных, которые видит компилятор, и о которых предупреждает в случае их не инициализации, и 2. логика программы, о которой компилятор ничего не знает, и правильное её составление лежит полностью на программисте. И инициализация массива пустым значением весьма актуальна для стрелочных индикаторов. При этом в самом цикле нужно предварительно очищать значения текущего бара таких буферов - присваивать пустое значение, а уже затем рассчитывать индикатор. Иначе будут артефакты на графике, и компилятор не обязан вас про это предупреждать - он ничего не знает про логику конкретного индикатора, и это задача программиста - писать правильно.
ArrayInitialize(Buffer, Value) - инициализация массива Buffer значением Value. Должна выполняться в индикаторах при прикреплении его к графику и при изменении исторических данных: когда rates_total-prev_calculated > 1, в редких случаях >0
PlotIndexSetDouble(BufferNum, PLOT_EMPTY_VALUE, Value) - указание индикатору что значение Value буфера BufferNum НЕ должно выводиться, т.е - назначение пустого значения буферу. И это НЕ инициализация массива, а лишь задание пустого нерисуемого значения конкретному буферу. Если задать Value равным 0, то нулевое значение, находящееся в буфере не будет рисоваться на графике. Если задать Value равным EMPTY_VALUE, то значение DBL_MAX не будет рисоваться на графике индикатора. При этом, если задать в качестве пустого значения любое число, например -256, то DBL_MAX будет рисоваться на графике индикатора, так как EMPTY_VALUE==DBL_MAX.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
В МТ5 инициализация буфера индикатора производится в тестере стратегий. Вот что самое интересное, а на реальном графике нет.
А должно быть одинаково. Раз там нет то и там нет.
Это не так. Только что проверил в Тестере МТ5 -- инициализация "пустым значением" не происходит. Тестер и реальный поток работают одинаково по части "пустого значения".
Вот скрин Журнала тестера:
Это не так. Только что проверил в Тестере МТ5 -- инициализация "пустым значением" не происходит. Тестер и реальный поток работают одинаково по части "пустого значения".
Вот скрин Журнала тестера:
крч раньше работало. сейчас все забивается или мусором, или нулями. и это прискорбно.
в тестере не проверял
То есть это не инициализация. Это всё го лишь управление отрисовкой.
как раз пустое значение для инициализации и используется. проблема в том что при смене ТФ нет инициализации буфера.
вот надо было на две страницы цирк разводить и задирать нос чтобы выяснить что вы не разбираетесь в предмете?
Вы путаете разные два понятия - 1. инициализацию переменных, которые видит компилятор, и о которых предупреждает в случае их не инициализации, и 2. логика программы, о которой компилятор ничего не знает, и правильное её составление лежит полностью на программисте. И инициализация массива пустым значением весьма актуальна для стрелочных индикаторов. При этом в самом цикле нужно предварительно очищать значения текущего бара таких буферов - присваивать пустое значение, а уже затем рассчитывать индикатор. Иначе будут артефакты на графике, и компилятор не обязан вас про это предупреждать - он ничего не знает про логику конкретного индикатора, и это задача программиста - писать правильно.
ArrayInitialize(Buffer, Value) - инициализация массива Buffer значением Value. Должна выполняться в индикаторах при прикреплении его к графику и при изменении исторических данных:
когда rates_total-prev_calculated > 1, в редких случаях >0
PlotIndexSetDouble(BufferNum, PLOT_EMPTY_VALUE, Value) - указание индикатору что значение Value буфера BufferNum НЕ должно выводиться, т.е - назначение пустого значения буферу. И это НЕ инициализация массива, а лишь задание пустого нерисуемого значения конкретному буферу. Если задать Value равным 0, то нулевое значение, находящееся в буфере не будет рисоваться на графике. Если задать Value равным EMPTY_VALUE, то значение DBL_MAX не будет рисоваться на графике индикатора. При этом, если задать в качестве пустого значения любое число, например -256, то DBL_MAX будет рисоваться на графике индикатора, так как EMPTY_VALUE==DBL_MAX.
Шикарное наставление. Спасибо.