Einzelne Array-Berechnung während der Optimierung

 

Es gibt ein Feld, das sich während der gesamten Optimierung nicht ändert. Ist es möglich, sie einmal zu berechnen und nur bei jedem Durchgang während der gesamten Optimierung auf sie zurückzugreifen, ohne sie erneut zu berechnen?

 
Berechnen Sie es also in OnInint()
 
Alexey Viktorov:
Berechnen Sie es also in OnInint()

In MQL4 habe ich Daten aus einer Datei in der Inite gelesen, aber das hat sehr lange gedauert. Ich weiß nicht, ob das Inite bei jedem neuen Durchgangverwendet wird oder nicht?

Ich habe im Forum gefunden, dass jedes Mal, wenn das Inite benutzt wird, d.h. das Array neu berechnet wird.

https://www.mql5.com/ru/forum/104222

 

Nein, natürlich nicht.

Ups... Ich habe nicht genau gelesen und die Frage missverstanden.

 
forexman77:

In MQL4 habe ich Daten aus einer Datei in der Inite gelesen, aber das hat sehr lange gedauert. Ich weiß nicht, ob das Inite bei jedem neuen Durchgangverwendet wird oder nicht?

Ich habe im Forum gefunden, dass jedes Mal, wenn das Inite verwendet wird, d.h. das Array neu errechnet wird.

https://www.mql5.com/ru/forum/104222

Es ist elementar. Sie überprüfen die Größe des Arrays bei jedem Durchlauf. Wenn das Feld leer ist oder das Berechnungsflag falsch ist, wird es neu berechnet:

if(ArraySize(optimize_array) == 0)
   CalculateArray();
 
Vasiliy Sokolov:

Es ist elementar. Sie überprüfen die Größe des Arrays bei jeder Ausführung. Wenn das Feld leer ist oder das Berechnungsflag falsch ist, wird es neu berechnet:

Ich habe es aber noch nicht überprüft. Aber ich frage, und dass das Array aus dem ersten Durchgang gespeichert werden (wo es berechnet wird) und wird in den nachfolgenden Durchgängen zur Verfügung stehen?

 
forexman77:

Ich habe es aber noch nicht getestet. Aber ich werde fragen, und dass das Array wird aus dem ersten Durchgang (wo es berechnet wird) gespeichert werden und wird für die nachfolgenden Durchgänge zur Verfügung stehen?

Das wird sie nicht. Sie müssen sie neu berechnen oder in einer Datei speichern und auslesen.
 
Dmitry Fedoseev:
Das wird es nicht. Sie müssen sie neu berechnen oder in einer Datei speichern und auslesen.

Ich stehe also vor einem Dilemma: Wie kann man es möglich machen, einmal aus einer Datei zu lesen, ein Array damit zu füllen und dieses Array bei allen Durchläufen zu verwenden.

Ich brauche es, um die Optimierungszeit zu reduzieren, weil das Array immer unverändert bleibt und es teuer ist, es jedes Mal zu lesen.

 
forexman77:

Ich stehe also vor einem Dilemma: Wie kann man es möglich machen, einmal aus einer Datei zu lesen, ein Array damit zu füllen und dieses Array bei allen Durchläufen zu verwenden.

Ich brauche dies, um die Optimierungszeit zu reduzieren, weil das Array immer unverändert bleibt und es teuer ist, es jedes Mal zu lesen.

In MT5 gibt es ein Ereignis , um die Optimierung zu starten, das Array darin zu berechnen, es in einer Datei zu speichern und es in der EA-Init zu lesen.
 

Anhang zu den Ressourcen. Fragen Sie nicht, wie. Ich habe den Quellcode nicht geschrieben.

Sie muss in der Einleitung gelesen werden. Sie wird aber nicht von der Festplatte, sondern aus dem Speicher gelesen. Das Array befindet sich also in der Tat im Speicher.

 
Dmitry Fedoseev:
In MT5 gibt es ein Ereignis zum Starten der Optimierung, in dem das Array berechnet, in einer Datei gespeichert und im Init des EAs gelesen wird.
Muss ich sie bei jedem Durchgang im Init lesen?