Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В МТ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.
Шикарное наставление. Спасибо.