Те индикатор в виде гистограммы и вы хотите перекрашивать последний, нулевой бар?
Или, например, в правом углу экрана мигал многоцветный светофор?
Т.е. индикатор исторически отражается одним цветом (скажем белым) а текущее его состояние изменят цвет
В зависимости от его текущего значения (положение относительно оси – 0 не учитывается)
Замечание в скобках вообще не понятно. Если хотите, чтобы вам подсказали, приведите схематический рисунок.
Те индикатор в виде гистограммы и вы хотите перекрашивать последний, нулевой бар?
Или, например, в правом углу экрана мигал многоцветный светофор?
Замечание в скобках вообще не понятно. Если хотите, чтобы вам подсказали, приведите схематический рисунок.
я Вам в личку скрин отправил
Я такое делал.
Агоритм расчёта того, что я делал, не дам, а как построить скажу. Мне самому тогда здесь помогли.
1. Допустим, что есть 8 градаций цвета. Определяете 8 буферов. Названия в данном случае неважны.
#property indicator_separate_window #property indicator_buffers 8 #property indicator_color1 DarkGreen #property indicator_color2 Green #property indicator_color3 MediumSeaGreen #property indicator_color4 LightGreen #property indicator_color5 Red #property indicator_color6 Tomato #property indicator_color7 LightCoral #property indicator_color8 LightPink
2. Названия массивов для расчётов.
double BufferUpStrong[]; // Up Strong double BufferUpMedium[]; // Up Medium double BufferUpWeak[]; // Up Weak double BufferUpVeryWeak[]; // Up Very Weak double BufferDownStrong[]; // Down Strong double BufferDownMedium[]; // Down Medium double BufferDownWeak[]; // Down Weak double BufferDownVeryWeak[]; // Down Very Weak
3. В init() определяете соответствие буферов, цветов и линий.
int init() { //---- drawing settings and buffers mapping SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for UpStrong SetIndexBuffer(0,BufferUpStrong); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for UpMedium SetIndexBuffer(1,BufferUpMedium); SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for UpWeak SetIndexBuffer(2,BufferUpWeak); SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for UpVeryWeak SetIndexBuffer(3,BufferUpVeryWeak); SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for DownStrong SetIndexBuffer(4,BufferDownStrong); SetIndexStyle(5,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for DownMedium SetIndexBuffer(5,BufferDownMedium); SetIndexStyle(6,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for DownWeak SetIndexBuffer(6,BufferDownWeak); SetIndexStyle(7,DRAW_HISTOGRAM,STYLE_SOLID,3); // Stile for DownVeryWeak SetIndexBuffer(7,BufferDownVeryWeak); IndicatorDigits(Digits+1); //---- initialization done return(0); }
4. Start() начинаете со стандартных определений.
int start() { int limit; int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- counted in the 1-st buffer for(int i=0; i<limit; i++) { . . .
5. Далее идёт расчёт значений буферов по вашим критериям, а также (до того) обнуление буферов, отдельной функцией.
if(... ClearAllBuffers(i); BufferUpStrong[i]=.........; else if(... ClearAllBuffers(i); BufferUpMedium[i]=.........; . . .
void ClearAllBuffers(int index) { BufferUpStrong[index]=0; BufferUpMedium[index]=0; BufferUpWeak[index]=0; BufferUpVeryWeak[index]=0; BufferDownStrong[index]=0; BufferDownMedium[index]=0; BufferDownWeak[index]=0; BufferDownVeryWeak[index]=0; }
Идея понятна?
Вот, что у меня тогда получилось:
![](https://c.mql5.com/mql4/forum/2009/08/image1_small.jpg)
Последний бар динамично меняется в зависимости от цены.
Спасибо!
Буду разбираться, а за одно вспоминать программирование.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уткнулся в написании пользовательского индикатора.
Сам индикатор создать получилось, а вот немного доработать не хватает опыта
Программирования.
Суть проблемы в том что необходимо отражать в цвете текущее значение.
А именно – открытие – 1.0 (как пример), происходит его изменение – 1.1 (т.е. увеличение – отражение – зеленым)
Дальше – 1.0 ( возврат к первоначальному – белый) 0.99 ( уменьшение – красный).
Т.е. индикатор исторически отражается одним цветом (скажем белым) а текущее его состояние изменят цвет
В зависимости от его текущего значения (положение относительно оси – 0 не учитывается)
Если у Вас есть минутка, подскажите как решить эту проблему.
Спасибо