Questions des débutants MQL5 MT5 MetaTrader 5 - page 1129

 
Alexey Viktorov:

Pourquoi dois-tu en faire tout un plat ? Quel est le problème d'assigner les tampons à afficher en premier, puis les tampons auxiliaires ?

Particularité de l'algorithme, les tampons auxiliaires sont toujours un nombre fixe, alors que le nombre de tampons à afficher varie. Veuillez répondre à la question du message précédent sur la manière de spécifier tout cela correctement...


Alexey Viktorov:

Pour DRAW_HISTOGRAM2, 3 tampons sont spécifiés et la séquence est obligatoire, 2 tampons de valeur d'abord, suivis d'un tampon de couleur. Mais il y a une différence entre DRAW_HISTOGRAM et DRAW_HISTOGRAM2 en ce sens que DRAW_HISTOGRAM est dessiné de zéro à la valeur du tampon, tandis que DRAW_HISTOGRAM2 est dessiné de la valeur d'un tampon à la valeur d'un autre tampon.

De la description de DRAW_HISTOGRAM2 à https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"Le nombre de tampons requis pour construire DRAW_HISTOGRAM2 est de 2."

D'où viendrait alors le troisième tampon ? Et dans l'exemple du même lien, il n'y a que deux tampons, mais il n'est pas précisé si les couleurs peuvent être entrelacées de la même manière qu'avec un DRAW_HISTOGRA normal ?
 
The_Sheikh:

Particularité de l'algorithme, les tampons auxiliaires sont toujours d'un nombre fixe, tandis que le nombre de tampons mappés varie. Veuillez répondre à la question du message précédent sur la façon de spécifier tout cela correctement...


De la description de DRAW_HISTOGRAM2 à https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2 :

"Le nombre de tampons requis pour construire DRAW_HISTOGRAM2 est de 2."

D'où viendrait alors le troisième tampon ? Et dans l'exemple du même lien, il n'y a que deux tampons, mais il n'est pas précisé si les couleurs peuvent être entrelacées de la même manière qu'avec un DRAW_HISTOGRA normal ?

Oui, désolé pour mon manque d'attention. Je voulais dire DRAW_COLOR_HISTOGRAM2 et DRAW_COLOR_HISTOGRAM.

 
The_Sheikh:

Particularité de l'algorithme, les tampons auxiliaires sont toujours d'un nombre fixe et les tampons affichés d'un nombre différent. Veuillez répondre à la question du post précédent sur la façon de spécifier correctement tout cela ?

Je ne me suis jamais moqué de moi comme ça avant. Si vous le souhaitez, faites des expériences.

 
Les commentaires non liés à ce sujet ont été déplacés vers "Questions des débutants de MQL4 MT4 MetaTrader 4".
 

Comment définir correctement les couleurs avec PlotIndexSetInteger()?

Quand j'ai mis

#property indicator_color3 clrRed,clrGreen

les couleurs sont définies correctement, mais lorsque j'utilise la fonction

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed) ;

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen) ;

alors la première couleur de la ligne est rouge, mais la deuxième (et les suivantes) est noire (par défaut) au lieu d'être verte pour une raison quelconque.

 
The_Sheikh:

Comment définir correctement les couleurs avec PlotIndexSetInteger()?

Lorsque je spécifie

#property indicator_color3 clrRed,clrGreen

les couleurs sont définies correctement, mais lorsque j'utilise la fonction

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed) ;

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen) ;

alors la première couleur de la ligne est rouge, mais la seconde est noire (par défaut) au lieu d'être verte pour une raison quelconque.

Pourquoi mettre un modificateur là-dedans ?

 
Alexey Viktorov:

Pourquoi mettre un modificateur là-dedans ?

Lequel, où ? J'ai regardé l'exemple dans la documentation de MQL5 et j'ai fait la même chose. Ecrivez-le, comment est-il correct ?

 
The_Sheikh:

Lequel, où ? J'ai regardé l'exemple dans la documentation de MQL5 et j'ai fait la même chose. Ecrivez-le, comment est-il correct ?

Montrer tout le code pour l'initialisation des tampons d'indicateurs.
 
The_Sheikh:

Lequel, où ? J'ai regardé l'exemple dans la documentation de MQL5 et j'ai fait la même chose. Comment le faire correctement ?

Je l'ai cherché.

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

et a fait ça.

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

Et il est dit dans la documentation

[Modificateur de la propriété spécifiée. Seules les propriétés de l'indice de couleur nécessitent un modificateur.


Cela signifie que le modificateur doit être si l'on veut attribuer des couleurs différentes aux niveaux de l'indicateur de sous-sol, aux niveaux de Fibo ou quelque chose de similaire.
 
Artyom Trishkin:
Montrer tout le code pour l'initialisation des tampons d'indicateurs.

Quelque chose comme ça

#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:

Je l'ai cherché.

et a fait ça.

Et là, dans la documentation, il est dit

Cela signifie que le modificateur devrait être si différentes couleurs des niveaux de l'indicateur de sous-sol, des niveaux de fibo et quelque chose de semblable sont assignés

Exactement mon cas.

Voici un morceau de l'exemple pour DRAW_COLOR_HISTOGRAM2 dans le manuel :

/--- для каждого цветового индекса зададим новый цвет случайным образом
   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]);             //  новый цвет

Ici, plot_colors = 8, cols[] - tableau avec différentes couleurs. Mais le terminal ne perçoit aucune couleur à l'exception de la première.