Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1128

 
Alexey Viktorov:

А зачем модификатор туда вставили?

Какой, куда? Я посмотрел пример в документации MQL5 и сделал также. Напишите, как правильно?

 
The_Sheikh:

Какой, куда? Я посмотрел пример в документации MQL5 и сделал также. Напишите, как правильно?

Покажите весь код инициализации индикаторных буферов.
 
The_Sheikh:

Какой, куда? Я посмотрел пример в документации MQL5 и сделал также. Напишите, как правильно?

Посмотрел это

bool  PlotIndexSetInteger( 
   int  plot_index,        // индекс графического стиля 
   int  prop_id,           // идентификатор свойства 
   int  prop_value         // устанавливаемое значение 
   );

исделал так

bool  PlotIndexSetInteger( 
   int  2,                 // индекс графического стиля 
   int  PLOT_LINE_COLOR,   // идентификатор свойства 
   int  0,                 // модификатор свойства 
   int  clrGreen           // устанавливаемое значение 
   )

А там, в документации сказано

[in]  Модификатор указанного свойства. Только свойства индексов цветов требуют модификатора.


Это означает, что модификатор должен быть если назначаются разные цвета уровней подвального индикатора, уровней фибо и чего-то подобного
 
Artyom Trishkin:
Покажите весь код инициализации индикаторных буферов.

Как-то так

#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots 2

#define GreenC 0x00FF00
#define RedC 0x0000FF
#property indicator_type1 DRAW_NONE
#property indicator_type2 DRAW_COLOR_HISTOGRAM2
//#property indicator_color2 GreenC,RedC

double
Arr11[],
Arr21[],
Arr22[],
Arr23[];

void OnInit()
{
SetIndexBuffer(0,Arr11,INDICATOR_CALCULATIONS);
SetIndexBuffer(1,Arr21,INDICATOR_DATA);
SetIndexBuffer(2,Arr22,INDICATOR_DATA);
SetIndexBuffer(3,Arr23,INDICATOR_COLOR_INDEX);
IndicatorSetInteger(INDICATOR_DIGITS,Digits());
PlotIndexSetInteger(1,PLOT_LINE_WIDTH,4);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,0,GreenC);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,1,RedC);
//PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.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[]
)
{
ArraySetAsSeries(open,0);
ArraySetAsSeries(close,0);
ArraySetAsSeries(low,0);
ArraySetAsSeries(high,0);
ArrayInitialize(Arr11,0.0);
ArrayInitialize(Arr21,0.0);
ArrayInitialize(Arr22,0.0);
ArrayInitialize(Arr23,0.0);

for (int I=0;I<rates_total;I++)
{
Arr22[I]=low[I];
Arr23[I]=0.0;
//Arr23[I]=1.0;
}

return(rates_total);
}

Alexey Viktorov:

Посмотрел это

исделал так

А там, в документации сказано

Это означает, что модификатор должен быть если назначаются разные цвета уровней подвального индикатора, уровней фибо и чего-то подобного

Как раз мой случай.

Вот кусок из примера для DRAW_COLOR_HISTOGRAM2 в справочнике:

/--- для каждого цветового индекса зададим новый цвет случайным образом
   for(int plot_color_ind=0;plot_color_ind<plot_colors;plot_color_ind++)
     {
      //--- получим случайное число
      int number=MathRand();
      //--- получим индекс в массиве col[] как остаток от целочисленного деления
      int i=number%size;
      //--- установим цвет для каждого индекса как свойство PLOT_LINE_COLOR
      PlotIndexSetInteger(0,                    //  номер графического стиля
                          PLOT_LINE_COLOR,      //  идентификатор свойства
                          plot_color_ind,       //  индекс цвета, куда запишем цвет
                          cols[i]);             //  новый цвет

Здесь plot_colors = 8, cols[] - массив с разными цветами. Но терминал никакие цвета кроме первого не воспринимает.

 
The_Sheikh:

Как-то так


Как раз мой случай.

Вот кусок из примера для DRAW_COLOR_HISTOGRAM2 в справочнике:

Здесь plot_colors = 8, cols[] - массив с разными цветами. Но терминал никакие цвета кроме первого не воспринимает.

Вы первому назначаете гистограмму? А буфер цвета идёт за вторым. А должен идти за первым.

 
Artyom Trishkin:

Вы первому назначаете гистограмму? А буфер цвета идёт за вторым. А должен идти за первым.

Чему первому? За каким вторым? Каким первым? О чём речь?

Покажите пример, чтобы не ходить вокруг да около.

 
The_Sheikh:
Чему первому? За каким вторым? Каким первым? О чём речь?

Покажите пример, чтобы не ходить вокруг да около.

Сформулируйте свою задачу. Опишите ЧТО Вы хотите получить от индикатора.

 
Vladimir Karputov:

Сформулируйте свою задачу. Опишите ЧТО Вы хотите получить от индикатора.

Вы издеваетесь?

https://www.mql5.com/ru/forum/6343/page1129#comment_13439765

 
The_Sheikh:

Вы издеваетесь?

https://www.mql5.com/ru/forum/6343/page1129#comment_13439765

Это не годится. Вы даёте осколки фраз. В таких случаях универсальный ответ: Документация.


Когда перестанете надувать губы и обижаться - сформулируйте то, о чём я прошу:

То есть сейчас вообще не ясно, что Вы делаете, а самое главное не ясно ДЛЯ ЧЕГО. Не понятна конечная цель - а значит и никто не сможет угадать.
 
The_Sheikh:

Как-то так


Как раз мой случай.

Вот кусок из примера для DRAW_COLOR_HISTOGRAM2 в справочнике:

Здесь plot_colors = 8, cols[] - массив с разными цветами. Но терминал никакие цвета кроме первого не воспринимает.

Это как раз совсем не то. Это заполняется массив цветов которые будут присвоены в этой строке кода из документации

ColorHistogram_2Colors[i]=day;