Есть такой код:
Задача просто нарисовать линии по последним 25-ти свечкам.
Все как бы хорошо - но вопрос:
Почему после последнего 25-го значения - линия начинает прорисовываться в никуда?
(стремится в низ до бесконечности.)
DRAW_SECTION
#property indicator_type1 DRAW_SECTION // тип графического построения - линияНичего не изменилось в плане отображения на графике.
в MQL5 буферный массив нужно инициализировать значением по умолчанию ( EMPTY_VALUE )
линия уходит вниз, т.к. там находится какое то значение из памяти ПК (мусор)
Поменял вот эту строчку кода у себя:
Ничего не изменилось в плане отображения на графике.
Извините, не правильно прочитал, проблему.
Но вам уже написали правильный ответ )))
в MQL5 буферный массив нужно инициализировать значением по умолчанию ( EMPTY_VALUE )
линия уходит вниз, т.к. там находится какое то значение из памяти ПК (мусор)
Как синтаксически корректно(и проще всего) организовать данную инициализацию?
(гайд на сайте предлагает создавать допольнительную сущность в виде PlotIndexSetDouble() - необходимо ли это?)
- www.mql5.com
для Вашей задачи, возможно достаточно выполнить инициализации в секции OnInit()
примерно так:
int OnInit() { //--- связывание массива и индикаторного буфера SetIndexBuffer(0,LineBuffer,INDICATOR_DATA); ArrayInitialize(LineBuffer, EMPTY_VALUE); return(INIT_SUCCEEDED); }
для Вашей задачи, возможно достаточно выполнить инициализации в секции OnInit()
примерно так:
В чем может быть причина?
- www.mql5.com
Не помогло - индикатор на графике имеет прежний вид.
не хотел ПК включать... )))
проверил, действительно в секции инициализации индикатора размер буферного массива равен 0
тогда здесь проинициализируйте индикаторный буфер:
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { if(prev_calculated == 0) ArrayInitialize(LineBuffer, EMPTY_VALUE);
не хотел ПК включать... )))
))
Ok - теперь все работает - здорово!
))
Ok - теперь все работает - здорово!
Потому что линия строится по точкам и в последней линии крайнее значение отрезка равно нулю. Решение уже есть и есть еще одно, не строить последнюю линию.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Задача просто нарисовать линии по последним 25-ти свечкам.
Все как бы хорошо - но вопрос:
Почему после последнего 25-го значения - линия начинает прорисовываться в никуда?
(стремится в низ до бесконечности.)
Скриншоты торговой платформы MetaTrader
EURUSD, M15, 2020.10.25
RoboForex Ltd, MetaTrader 5, Demo