Хочу сделать в индикаторе регулируемой толщину вертикальной линии. Индикатор строится с типом DRAW_FILLING.
Набросал простой тестовый индикатор. Подскажите, каким образом можно задавать ширину?
Код индикатора:
#property indicator_chart_window #property indicator_buffers 4 #property indicator_plots 2 //--- plot1 #property indicator_label1 "Bullish" #property indicator_type1 DRAW_FILLING #property indicator_style1 STYLE_SOLID #property indicator_color1 clrBlue #property indicator_width1 2 //--- plot2 #property indicator_label2 "Bearish" #property indicator_type2 DRAW_FILLING #property indicator_style2 STYLE_SOLID #property indicator_color2 clrRed #property indicator_width2 2 double BullUp[]; double BullDn[]; double BearUp[]; double BearDn[]; //+-------------------------------------------------------------------------------------------------------------------+ //| | //+-------------------------------------------------------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0, BullUp, INDICATOR_DATA); SetIndexBuffer(1, BullDn, INDICATOR_DATA); SetIndexBuffer(2, BearUp, INDICATOR_DATA); SetIndexBuffer(3, BearDn, INDICATOR_DATA); ArraySetAsSeries(BullUp, true); ArraySetAsSeries(BullDn, true); ArraySetAsSeries(BearUp, true); ArraySetAsSeries(BearDn, true); } //+-------------------------------------------------------------------------------------------------------------------+ //| | //+-------------------------------------------------------------------------------------------------------------------+ 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[]) { ArraySetAsSeries(open, true); ArraySetAsSeries(close, true); ArraySetAsSeries(high, true); ArraySetAsSeries(low, true); int needForCount = rates_total - prev_calculated; if(prev_calculated == 0 ) needForCount = rates_total - 1; for(int i = needForCount; i >= 0; --i) { BullUp[i] = (open[i] < close[i]) ? high[i] : 0; BullDn[i] = (open[i] < close[i]) ? low[i] : 0; BearUp[i] = (open[i] > close[i]) ? high[i] : 0; BearDn[i] = (open[i] > close[i]) ? low[i] : 0; } return rates_total; }
Хочу сделать в индикаторе регулируемой толщину вертикальной линии. Индикатор строится с типом DRAW_FILLING.
Набросал простой тестовый индикатор. Подскажите, каким образом можно задавать ширину?
Код индикатора:
Начните со чтения справки https://www.mql5.com/ru/docs/customind/indicators_examples/draw_filling
![Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_FILLING Документация по MQL5: Пользовательские индикаторы / Стили индикаторов в примерах / DRAW_FILLING](https://c.mql5.com/36/48/dokumentaciya-po-mql5-polzovatelskie.png)
- www.mql5.com
Начните со чтения справки https://www.mql5.com/ru/docs/customind/indicators_examples/draw_filling
рисует цветную область между значениями двух индикаторных буферов. Два индикаторных буфера - насколько я понял, один верхний и один нижний. Получается, что это ширина по вертикали, отдельно для верхнего массива, отдельно для нижнего. Теперь сообразил.
Мне нужны прямоугольные области, которые могут закрашивать один или несколько баров в ширину. Подумал, что этот тип отрисовки то, что нужно. А какой-то тип индикатора так умеет, чтобы регулировалась ширина вправо/влево на протяжении одного бара и захватывать несколько баров? Или придется добавлять графические объекты?
рисует цветную область между значениями двух индикаторных буферов. Два индикаторных буфера - насколько я понял, один верхний и один нижний. Получается, что это ширина по вертикали, отдельно для верхнего массива, отдельно для нижнего. Теперь сообразил.
Мне нужны прямоугольные области, которые могут закрашивать один или несколько баров в ширину. Подумал, что этот тип отрисовки то, что нужно. А какой-то тип индикатора так умеет, чтобы регулировалась ширина вправо/влево на протяжении одного бара и захватывать несколько баров? Или придется добавлять графические объекты?
В справке есть картинка:
Можно хоть два бара, хоть десять закрашивать в прямоугольники...
В справке есть картинка:
Можно хоть два бара, хоть десять закрашивать в прямоугольники...
Мне нужны прямоугольные области, которые могут закрашивать один или несколько баров в ширину. Подумал, что этот тип отрисовки то, что нужно. А какой-то тип индикатора так умеет, чтобы регулировалась ширина вправо/влево на протяжении одного бара и захватывать несколько баров? Или придется добавлять графические объекты?
С несколькими - понятно. Мне нужно, чтобы при этом и на одном тоже можно было бы регулировать вширь. Как у гистограмм.
С несколькими - понятно. Мне нужно, чтобы при этом и на одном тоже можно было бы регулировать вширь. Как у гистограмм.
В смысле "на одном"? Это будет вертикальная линия (если вообще будет)
Хочу сделать индикатор, чтобы визуально выглядел как на рис.2 в этой статье. Без подвального окна, только заливка на главном графике. Но потом нужны будут Open/Close ренко-баров в советнике. Поэтому нужно, чтобы расчеты попадали в буферы. Иногда такой цветной ренко-бар может проходить через один стандартный бар. Тонкая линия - визуально плохо выделяет.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
OFF: отчего-то не могу найти в индикаторном разделе тему для вопросов от чайников..
ON: на картинке один и тот же индикатор, нарисованный гистограммой и цветными областями (DRAW_HISTOGRAM и DRAW_FILLING) с одинаковыми цветами в настройках. У 1го не получается сделать ширину баров больше 2, у 2го - получить заданные цвета. Как порешить 1ю или 2ю, а лучше обе траблемы ??
Chart EURUSD, M15