Was RefreshRates() aktualisiert

 
Ich wollte genau wissen, welche Daten und Zeitreihen RefreshRates() aktualisiert und wann es wahr ist?
 
Eine so geheime Funktion, dass nicht einmal die Entwickler davon wissen.)))
 

Ich habe einfach nicht die Geduld, solche Fragen zu beantworten.

RefreshRates

Осуществляет обновление данных в предопределенных переменных и массивах-таймсериях.


Was vordefinierte Variablen und Zeitreihen-Arrays sind, können Sie in der Dokumentation nachlesen.

Предопределенные переменные - Справочник MQL4
Предопределенные переменные - Справочник MQL4
  • docs.mql4.com
Предопределенные переменные - Справочник MQL4
 
Alexey Viktorov:

Ich habe einfach nicht die Geduld, solche Fragen zu beantworten.


Außerdem können Sie in der Dokumentation über vordefinierte Variablen und Zeitreihen-Arrays nachlesen.

D.h. die Daten der Funktion iClose() werden von RefreshRates() in keiner Weise beeinflusst. Wie können wir dann erreichen, dass die FunktioniClose() aktualisierte Informationen ausgibt?

 
Mikhail Nazarenko:

Die Daten in iClose() werden also nicht von RefreshRates() beeinflusst. Wie kann ich dann erreichen, dass die FunktioniClose() aktualisierte Informationen ausgibt?

Welcher Takt istiClose()?

 
Alexey Viktorov:

iClose() welcher Takt?

Null. Beliebiger Zeitrahmen.

 
Mikhail Nazarenko:

Null. Ein willkürlicher Zeitrahmen.

Ehrlich gesagt, bin ich überrascht... und das ist noch milde ausgedrückt. Ich dachte, iClose() holt sich Werte vom Server des Brokers, aber nein... RefreshRates(); aktualisiert die von iClose() erhaltenen Werte

/********************Script program start function*******************/
void OnStart()
 {
  for(int i = 0; i < 10; i++)
   {
    Print(Bid, " *** ", iClose(_Symbol, PERIOD_CURRENT, 0));
    Sleep(1000);
    RefreshRates();// Без RefreshRates(); значения iClose(_Symbol, PERIOD_CURRENT, 0) не меняются…
                   // То, что без RefreshRates(); не меняются значения Bid, это понятно и нормально…
   }
 }/******************************************************************/

Hier ist das Ergebnis der Skriptausführung

2021.02.15 11:39:35.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:34.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:33.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:32.559 00 EURUSD,M5: 1.21375 *** 1.21375
2021.02.15 11:39:31.559 00 EURUSD,M5: 1.2138 *** 1.2138
2021.02.15 11:39:30.559 00 EURUSD,M5: 1.21378 *** 1.21378
2021.02.15 11:39:29.559 00 EURUSD,M5: 1.21379 *** 1.21379
2021.02.15 11:39:28.559 00 EURUSD,M5: 1.21378 *** 1.21378
2021.02.15 11:39:27.559 00 EURUSD,M5: 1.21379 *** 1.21379
2021.02.15 11:39:26.559 00 EURUSD,M5: 1.21379 *** 1.21379

Nun, ok... Ich werde diese Funktion einfach im Hinterkopf behalten und RefreshRates() einfügen, wenn nötig;


ps; Und iClose(_Symbol, PERIOD_CURRENT, 0) ändert sich in MT5.

 
Alexey Viktorov:

Ehrlich gesagt, bin ich überrascht... und das ist noch milde ausgedrückt. Ich dachte, iClose() erhält Werte vom Server des Brokers, aber nein... RefreshRates(); aktualisiert die von iClose() erhaltenen Werte

Hier ist das Ergebnis der Skriptausführung

Nun, OK... Ich persönlich werde diese Funktion einfach im Hinterkopf behalten und RefreshRates() bei Bedarf einfügen;

Wenn ich den Zeitrahmen auf einen anderen als den aktuellen ändere, werden die Daten auch mit RefreshRates() nicht mehr rechtzeitig aufgefrischt. So produzieren iClose und andere grundlegende Funktionen in MT4 einen irrelevanten Unsinn. Ich bin mir sicher, dass 80% der Infos diese einzigartigen Eigenschaften von MT4 nicht berücksichtigen. Wie soll man leben?)))

 
Alexey Viktorov:

Ehrlich gesagt, bin ich überrascht... und das ist noch milde ausgedrückt. Ich dachte, iClose() erhält Werte vom Server des Brokers, aber nein... RefreshRates(); aktualisiert die von iClose() erhaltenen Werte

Hier ist das Ergebnis der Skriptausführung

Nun, ok... Ich werde diese Funktion einfach im Hinterkopf behalten und RefreshRates() einfügen, wenn nötig;


ps; Und iClose(_Symbol, PERIOD_CURRENT, 0) ändert sich in MT5.

Die iXXXXXX-Werte im Vierfachen haben sich immer als richtig erwiesen. Sie überprüfen das Ergebnis der Funktion nicht. Vier erfordert es auch (so seltsam es manchen Anhängern der absoluten Einfachheit erscheinen mag)
 
Was ist die Lösung? Noch mehr Krücken? Z.B. eine Tick-Historie führen und alle Zeitrahmen in EAs selbständig neu berechnen. Das ist jenseits von Gut und Böse.))
 
Mikhail Nazarenko:
Was ist die Lösung? Noch mehr Krücken? Z.B. eine Tick-Historie führen und alle Zeitrahmen in EAs selbständig neu berechnen. Das ist jenseits von Gut und Böse))).
Nein, das ist es nicht. Was steht in der Funktionshilfe über den Rückgabewert?