#property indicator_chart_window#property indicator_buffers3#property indicator_plots1#property indicator_label1"Noname"#property indicator_type1DRAW_COLOR_ZIGZAG#property indicator_color1clrBlue,clrRed#property indicator_style1STYLE_SOLID#property indicator_width11//+------------------------------------------------------------------+double zzH[],zzL[],zzC[];
int last;
//+------------------------------------------------------------------+voidOnInit()
{
SetIndexBuffer(0,zzH,INDICATOR_DATA);
SetIndexBuffer(1,zzL,INDICATOR_DATA);
SetIndexBuffer(2,zzC,INDICATOR_COLOR_INDEX);
IndicatorSetInteger(INDICATOR_DIGITS,Digits());
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
}
//+------------------------------------------------------------------+intOnCalculate(constint total,
constint calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick[],
constlong &real[],
constint &spread[])
{
for(int i=calculated>0?calculated-1:0; i<total-1; i++)
{
zzL[i]=0;
zzH[i]=0;
//---// Упускаем алгоритм поиска экстремумов// Рассмотри случай движения вверх// элемент zzH[last] имел какое-то значение, zzC[last] имел значение индекса цвета 0// Нашли новый экстремум вниз, при этом last == i (на одном баре)// Что делаем?
zzL[i] == Low[i];
zzC[i] == 1;
// Так как last == i, то предыдущий отрезок окрасится в цвет с индексом 1 // Даже если мы будем использовать два зигзага (один будет окрашивать отрезка "вверх",// второй отрезки "вниз", то предыдущий отрезок всегда будет менять свой цвет.
last=i;
}
return(total);
}
Я хочу получить двухцветный зигзаг, который будет рисовать движение "вверх" одним цветом, а движение "вниз" другим. Все работает нормально до тех пор, пока не возникает ситуация с появлением экстремумов на одном баре. Вот что должно получается (и получается пока не появляется описанная выше ситуация).
А вот что получается когда возникает описанная ситуация.
Я хочу получить двухцветный зигзаг, который будет рисовать движение "вверх" одним цветом, а движение "вниз" другим. Все работает нормально до тех пор, пока не возникает ситуация с появлением экстремумов на одном баре. Вот что должно получается (и получается пока не появляется описанная выше ситуация).
А вот что получается когда возникает описанная ситуация.
Так, я сейчас в примере из DRAW_COLOR_ZIGZAG поменял одну строчку и получил 8 цветов (вместо двух):
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,Color_ZigzagBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,Color_ZigzagBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,Color_ZigzagColors,INDICATOR_COLOR_INDEX);
//---- количество цветов для раскраски зигзагаcolor_sections=ArraySize(colors); // см. комментарий к свойству #property indicator_color1//---return(INIT_SUCCEEDED);
}
Чего вам не хватает для реализации? Сделайте массив из 4 цветов - Красный, Синий, Красны , Синий и заполняйте как хотите. Чего я не понимаю?
Попробуйте сделать два ZZ в одном индикаторе. И в такой ситуации основному назначить clrNone а дополнительному нужный цвет.
Если пики одного отрезка будут оставаться на одном баре, то ситуация не изменится.
Если пики одного отрезка будут оставаться на одном баре, то ситуация не изменится.
Пока всё идет на уровне теории. Сделайте пример с проблемой и покажите.
Например:
Где я ошибаюсь?
Например:
Где я ошибаюсь?
В том, что я кто-то будет пытаться по коду понять логику. Логику опишите, чтобы понять - "я хочу седлать то-то"
PS Код не смотрел, как и 99.99% пользователей
PPS Ну и два варинта варианта картинки:
Я хочу получить двухцветный зигзаг, который будет рисовать движение "вверх" одним цветом, а движение "вниз" другим. Все работает нормально до тех пор, пока не возникает ситуация с появлением экстремумов на одном баре.

Вот что должно получается (и получается пока не появляется описанная выше ситуация).
А вот что получается когда возникает описанная ситуация.
Я хочу получить двухцветный зигзаг, который будет рисовать движение "вверх" одним цветом, а движение "вниз" другим. Все работает нормально до тех пор, пока не возникает ситуация с появлением экстремумов на одном баре.
Вот что должно получается (и получается пока не появляется описанная выше ситуация).
А вот что получается когда возникает описанная ситуация.
Так, я сейчас в примере из DRAW_COLOR_ZIGZAG поменял одну строчку и получил 8 цветов (вместо двух):
Чего вам не хватает для реализации? Сделайте массив из 4 цветов - Красный, Синий, Красны , Синий и заполняйте как хотите. Чего я не понимаю?
дайте исходник того что на картинке
Похоже, там логика простая:
Похоже, там логика простая: