Простейший способ построить вертикальную линию на окнах индикаторов с помощью советника MQL5

Я пытаюсь построить вертикальную линию в окне индикатора с его значениями. Я наткнулся на OBJ_VLINE при чтении документации. Но этот пример слишком сложен для понимания.
Я нанес рекламное объявление на график с помощью следующего эксперта:
input int Candles_for_adx = 5; входной цвет maincolor_adx = желтый, dpluscolor_adx = салатовый, dminuscolor_adx = красный;

 void OnInit()
    {
    ChartIndicatorAdd(0,(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL), 
 iCustom(_Symbol,PERIOD_M1,"ADX",Candles_for_adx,maincolor_adx,dpluscolor_adx,dminuscolor_adx) );
    }

На выходе я получил следующее:
выходное изображение

Чего я ожидаю достичь:

ожидаемое изображение

Как написать простые операторы с координатами, а затем построить линию?


person Jaffer Wilson    schedule 19.03.2018    source источник


Ответы (1)


а в чем проблема? вертикальная линия бесконечна, имеет один параметр (OBJPROP_TIME или OBJPROP_TIME1) и не имеет параметров PRICE. На графике у вас есть TREND_LINE, это линия, которая имеет начало (OBJPROP_TIME1, OBJPROP_PRICE1) и конец (OBJPROP_TIME2, OBJPROP_PRICE2) и ObjectSetInteger(0,name,OBJPROP_RAY,false);.

Итак, после добавления на график ADX (кстати, почему у него так много параметров? это пользовательский ADX? если да, то убедитесь, что вы его правильно назвали), нарисуйте линии с помощью ObjectCreate(0,name,subwindow,0,0) и задайте все его параметры (цвет, начальная и конечная точка, RAY=false, ширина и некоторые другие параметры) после проверки того, что объект успешно создан. Возможно, вам понадобится специальная функция ObjDrawTrendLine(const string name,const int subwindow,const datetime dtStart,const double dStart,const datetime dtEnd,const double dEnd,const color clr), которая будет рисовать такие объекты или перемещать их, если имя такое же. Подокно должно быть получено от CHART_WINDOWS_TOTAL или извне.

person Daniel Kniaz    schedule 19.03.2018
comment
Вы видели изображение, которое я упомянул в своем вопросе? Если вы можете сказать мне решение для этого условия, то это будет превосходно... - person Jaffer Wilson; 19.03.2018
comment
да, я видел диаграммы, которые вы приложили. и, как я уже говорил, вы нарисовали линии тренда, а не вертикальные, поэтому, пожалуйста, решите, что вам действительно нужно - сначала вертикальные или линии тренда, а затем создайте функцию objDrawTrendLine(), если у вас есть проблемы с этим - пожалуйста, покажите, что вы сделали и в чем проблема - person Daniel Kniaz; 19.03.2018