Wie erhalte ich Open, Low, High, Close Parameter in MQL5? - Seite 10

 
//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   int q = rates_total;
   static datetime w = 0;
   
   if(w != time[q-1])
    { 
     w = time[q-1];
     Print("-------------------------------------------------------------------------------");
     Print("  time[q-1]  ",time[q-1],"  time[q-2]  ",time[q-2],"  time[q-3]  ",time[q-3],"  time[q-4]  ",time[q-4],"  time[q-5]  ",time[q-5]);
     Print("  open[q-1]  ",open[q-1],"  open[q-2]  ",open[q-2],"  open[q-3]  ",open[q-3],"  open[q-4]  ",open[q-4],"  open[q-5]  ",open[q-5]);
     Print("  high[q-1]  ",high[q-1],"  high[q-2]  ",high[q-2],"  high[q-3]  ",high[q-3],"  high[q-4]  ",high[q-4],"  high[q-5]  ",high[q-5]);
     Print("  low[q-1]  ",low[q-1],"  low[q-2]  ",low[q-2],"  low[q-3]  ",low[q-3],"  low[q-4]  ",low[q-4],"  low[q-5]  ",low[q-5]);
     Print("  close[q-1]  ",close[q-1],"  close[q-2]  ",close[q-2],"  close[q-3]  ",close[q-3],"  close[q-4]  ",close[q-4],"  close[q-5]  ",close[q-5]);
    }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Ich frage mich, warum bei einem Balken mit dem Index [rates_total - 1] immer alle Werte für Open, Close, High und Low gleich sind? Entspricht der Index open[rates_total - 1] nicht dem Index 1 in der Zeitreihe? Das heißt, es ist dasselbe wie Open[1], Close[1],... im MT4.

Obwohl, vielleicht entspricht der Index [rates_total - 1] dem Index 0 in der Zeitreihe? Dann bedeutet dies, dass [rates_total - 1] der aktuelle Balken ist, und da er sich noch nicht gebildet hat, sind seine OCHL-Parameter gleich?

 
Реter Konow:

Ich frage mich, warum bei einem Balken mit dem Index [rates_total - 1] immer alle Werte für Open, Close, High und Low gleich sind? Entspricht der Index open[rates_total - 1] nicht dem Index 1 in der Zeitreihe? Das heißt, es ist dasselbe wie Open[1], Close[1],... im MT4.

Aber vielleicht entspricht der Index [rates_total - 1] dem Index 0 in der Zeitreihe? Dann bedeutet dies, dass [rates_total - 1] der aktuelle Balken ist, und da er sich noch nicht gebildet hat, sind seine OCHL-Parameter gleich?

Standardmäßig haben die MQL5-Indikatoren die folgende Indizierung (am Beispiel von "0" und "rates_total-1")

/*
   time[0]              -> D'2018.01.02 00:00:00'
   time[rates_total-1]  -> D'2018.12.31 22:00:00'
*/

Wie Sie sehen können, hat der Balken ganz rechts im Diagramm den Index "rates_total-1". Der Index "0" entspricht jedoch dem ganz linken Balken im Diagramm.

 
Vladimir Karputov:

Standardmäßig haben die MQL5-Indikatoren die folgende Indizierung (mit "0" und "rates_total-1" als Beispiel)

Wie Sie sehen können, hat der Balken ganz rechts im Diagramm den Index "rates_total-1". Der Index "0" entspricht dem ganz linken Balken im Diagramm.

Die rechte Seite - also die aktuelle Seite? Diejenige, die sich nicht gebildet hat?

Im Allgemeinen, so wie ich es verstehe, zeigt rates_total-1 auf den aktuellen Balken, und da er sich nicht gebildet hat, sind seine OHCL-Parameter in den Timern gleich.

 
Реter Konow:
Der ganz rechts - das ist der aktuelle? Diejenige, die sich nicht gebildet hat?

Schauen Sie sich ein beliebiges Diagramm an - der Balken ganz rechts auf dem GUIDE ist der aktuelle Balken, der sich gerade bildet (d.h. alle seine Preise und sein Volumen können jederzeit geändert werden).

 
Vladimir Karputov:

Schauen Sie sich ein beliebiges Diagramm an - der Balken ganz rechts auf dem GUIDE ist der aktuelle Balken, der sich gerade bildet (d.h. alle seine Preise und sein Volumen können jederzeit geändert werden).

Ja, ich verstehe das. Mir war nur nicht klar, dass alle Werte in der Zeitreihe gleich sind, bevor sie einen Index von 1 erhalten. Das heißt, sie ist nicht mehr aktuell.
 
Реter Konow:
Ja, ich verstehe das. Ich war nur überrascht, dass alle Werte gleich sind, bevor sie den Index 1 in der Zeitreihe erreichen. Das heißt, sie ist nicht mehr aktuell.

Was ist der andere Index? Der Balken ganz rechts im Diagramm in den MQL5-Indikatoren hat einen Index von "rates_total-1".

 
Vladimir Karputov:

Was ist der andere Index? Der Balken ganz rechts im Diagramm in den MQL5-Indikatoren hat einen Index von "rates_total-1".

Du verstehst nicht, wovon ich spreche. rates_total-1 ist der aktuelle Balken. Ich weiß das. ABER. DIE OCHL-WERTE IN DEN ZEITREIHEN GLEICH SIND. Prüfen Sie den von mir geposteten Code. Das ist genau das, was ich nicht wusste.
 
Реter Konow:
Du verstehst nicht, wovon ich spreche. rates_total-1 DIES IST der aktuelle Balken. Ich weiß das. ABER. DIE OCHL-WERTE IN DEN ZEITREIHEN GLEICH SIND. Prüfen Sie den von mir geposteten Code. Das ist genau das, was ich nicht wusste.
Ihr Code übernimmt die Werte nur in dem Moment, in dem die Leiste geöffnet wird
 
Реter Konow:
Sie verstehen nicht, wovon ich spreche. rates_total-1 DIES ist der aktuelle Balken. Ich weiß das. ABER. DIE OCHL-WERTE IN DEN ZEITREIHEN GLEICH SIND. Prüfen Sie den von mir geposteten Code. Das ist genau das, was ich nicht wusste.

Der aktuelle Balken (der ganz rechts im Diagramm) hat zum Zeitpunkt der Entstehung des Balkens GLEICHE Preise - das ist die Grundlage: Der Balken ist gerade erst entstanden und alle Preise sind gleich hoch. Mit dem Eintreffen neuer Ticks beginnen sich die Preise des aktuellen Balkens (des Balkens ganz rechts im Diagramm) zu verändern.


Ich hoffe, das ist klar? Zum Zeitpunkt der Geburt des Barrens sind sein OHLC und der des Barrens gleich.

 
Andrey Barinov:
Ihr Code nimmt nur Werte an, wenn die Leiste geöffnet wird

Autsch, voreilig, das hätte der Mann selbst merken müssen ...