Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1129

 
Alexey Viktorov:

Warum müssen Sie so eine große Sache aus sich machen? Wo liegt das Problem, wenn zuerst die anzuzeigenden Puffer und dann die Hilfspuffer zugewiesen werden?

Eine Besonderheit des Algorithmus ist, dass die Hilfspuffer immer eine feste Anzahl sind, während die Anzahl der anzuzeigenden Puffer variiert. Beantworten Sie bitte die Frage aus dem vorherigen Beitrag, wie man das alles richtig angibt?


Alexey Viktorov:

Für DRAW_HISTOGRAM2 werden 3 Puffer angegeben, und die Reihenfolge ist zwingend vorgeschrieben: zuerst 2 Wertepuffer, dann ein Farbpuffer. Der Unterschied zwischen DRAW_HISTOGRAM und DRAW_HISTOGRAM2 besteht jedoch darin, dass DRAW_HISTOGRAM von Null bis zum Wert im Puffer gezeichnet wird, während DRAW_HISTOGRAM2 vom Wert eines Puffers bis zum Wert eines anderen Puffers gezeichnet wird.

Aus der Beschreibung von DRAW_HISTOGRAM2 auf https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2:

"Die Anzahl der für die Erstellung von DRAW_HISTOGRAM2 erforderlichen Puffer beträgt 2.

Woher käme dann der dritte Puffer? Und in dem Beispiel im gleichen Link gibt es nur zwei Puffer, aber es ist nicht angegeben, ob die Farben in der gleichen Weise wie mit einem normalen DRAW_HISTOGRA verschachtelt werden können?
 
The_Sheikh:

Eine Besonderheit des Algorithmus besteht darin, dass die Anzahl der Hilfspuffer immer gleich bleibt, während die Anzahl der zugeordneten Puffer variiert. Beantworten Sie bitte die Frage aus dem vorherigen Beitrag, wie man das alles richtig angibt?


Aus der Beschreibung von DRAW_HISTOGRAM2 auf https://www.mql5.com/ru/docs/customind/indicators_examples/draw_histogram2:

"Die Anzahl der für die Erstellung von DRAW_HISTOGRAM2 erforderlichen Puffer beträgt 2.

Woher käme dann der dritte Puffer? Und in dem Beispiel im gleichen Link gibt es nur zwei Puffer, aber es ist nicht angegeben, ob die Farben in der gleichen Weise wie mit einem normalen DRAW_HISTOGRA verschachtelt werden können?

Ja, entschuldigen Sie meine Unaufmerksamkeit. Ich meinte DRAW_COLOR_HISTOGRAM2 und DRAW_COLOR_HISTOGRAM

 
The_Sheikh:

Eine Besonderheit des Algorithmus ist, dass die Hilfspuffer immer eine feste Zahl und die angezeigten Puffer eine andere Zahl haben. Beantworten Sie bitte die Frage aus dem vorherigen Beitrag, wie man all dies korrekt angibt?

Ich habe mich noch nie so über mich selbst lustig gemacht. Wenn Sie wollen, experimentieren Sie.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von MQL4 MT4 MetaTrader 4 Anfängern" verschoben.
 

Wie setze ich die Farben richtig mit PlotIndexSetInteger()?

Wenn ich festlege

#property indicator_color3 clrRed,clrGreen

sind die Farben richtig eingestellt, aber wenn ich die

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

dann ist die erste Farbe der Linie rot, aber die zweite (und die folgenden) sind aus irgendeinem Grund schwarz (standardmäßig) anstelle von grün.

 
The_Sheikh:

Wie setze ich die Farben richtig mit PlotIndexSetInteger()?

Wenn ich festlege

#property indicator_color3 clrRed,clrGreen

sind die Farben richtig eingestellt, aber wenn ich die

PlotIndexSetInteger(2,PLOT_LINE_COLOR,0,clrRed);

PlotIndexSetInteger(2,PLOT_LINE_COLOR,1,clrGreen);

dann ist die erste Farbe der Linie rot, aber die zweite ist aus irgendeinem Grund schwarz (standardmäßig) anstelle von grün.

Warum einen Modifikator einfügen?

 
Alexey Viktorov:

Warum einen Modifikator einfügen?

Welche, wo? Ich habe mir das Beispiel in der MQL5-Dokumentation angesehen und das Gleiche getan. Schreiben Sie es auf, wie ist es richtig?

 
The_Sheikh:

Welche, wo? Ich habe mir das Beispiel in der MQL5-Dokumentation angesehen und das Gleiche getan. Schreiben Sie es auf, wie ist es richtig?

Den gesamten Code für die Initialisierung der Indikatorpuffer anzeigen.
 
The_Sheikh:

Welche, wo? Ich habe mir das Beispiel in der MQL5-Dokumentation angesehen und das Gleiche getan. Wie macht man es richtig?

Nachgeschlagen

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

und tat dies.

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

Und in der Dokumentation heißt es

[in] Modifikator der angegebenen Eigenschaft. Nur Farbindexeigenschaften erfordern einen Modifikator.


Das bedeutet, dass der Modifikator sein muss, wenn unterschiedliche Farben von Basisindikatorstufen, Fibo-Stufen oder Ähnlichem zugewiesen werden sollen
 
Artyom Trishkin:
Den gesamten Code für die Initialisierung der Indikatorpuffer anzeigen.

Etwa so

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

Nachgeschlagen

und tat dies.

Und dort heißt es in der Dokumentation

Das bedeutet, dass der Modifikator sein sollte, wenn verschiedene Farben von Basisindikatorstufen, Fibo-Stufen und Ähnlichem zugewiesen werden

Das ist genau mein Fall.

Hier ist ein Ausschnitt aus dem Beispiel für DRAW_COLOR_HISTOGRAM2 im Handbuch:

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

Hier plot_colors = 8, cols[] - Array mit verschiedenen Farben. Aber das Terminal nimmt außer der ersten Farbe keine weiteren Farben wahr.

Grund der Beschwerde: