Einzelne Array-Berechnung während der Optimierung - Seite 2

 
fxsaber:
Anhang zu den Ressourcen. Fragen Sie nicht, wie. Ich habe den Quellcode nicht geschrieben.
Benötigen Sie eine Software eines Drittanbieters, um ein Array zu erstellen?
 
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.

Schreiben Sie zum Beispiel ein Skript, das alle Daten in einem Array vorbereitet und sammelt und dann das fertige Array in eine Datei schreibt. Und dann lesen Sie dieses Array aus der Datei während der Initialisierung im Expert Advisor. Die Datei kann bei jedem Durchlauf des EA so oft wie nötig verwendet werden.
Ich denke, dass Ihnen diese Lösung bereits vorgeschlagen wurde. Passt Ihnen das nicht?
 
forexman77:
Verwenden Sie Software von Drittanbietern, um ein Array zu erstellen?
Ja, mit demselben MQL5 mit einem separaten Durchgang vor der Optimierung.
 
BlackTomcat:
Schreiben Sie zum Beispiel ein Skript, das alle Daten in einem Array vorbereitet und sammelt und das fertige Array dann in eine Datei schreibt. Und dann lesen Sie dieses Array aus der Datei während der Initialisierung im EA. Die Datei kann bei jedem Durchlauf des EA so oft wie nötig verwendet werden.
Ich denke, dass Ihnen diese Lösung bereits vorgeschlagen wurde. Passt Ihnen das nicht?

Ja, das ist das Problem, es passt nicht. Es gibt 15.000 Pässe in der Optimierung. Und ich muss nur einmal rechnen und bei den folgenden Durchgängen nur ein Array ansprechen.

Das heißt, ich habe bereits Daten in der Datei, die im Voraus berechnet werden und deren Höhe mir im Voraus bekannt ist. Und selbst das Lesen der Datei jedes Mal im Init ist sehr aufwendig (es gibt Tausende von Zeilen). Ich weiß nicht, wie es bei MQL5 ist, aber in MQL4 wurde im Forum geschrieben, dass das Programm bei jedem Durchlauf den Init durchläuft.

 
forexman77:
Ist es notwendig, bei jedem Durchgang das Inite einzulesen?
Ja. Es ist weder schwierig noch kostspielig. Verwenden Sie den Binärmodus. Sie müssen nicht die gesamte Datei lesen, sondern können an der gewünschten Stelle beginnen.
 
forexman77: Und selbst das Einlesen der Datei bei jedem Durchlauf ist sehr kostspielig (mehrere tausend Zeilen). Ich weiß nicht, wie es mit MQL5 aussieht, aber in MQL4 wurde im Forum geschrieben, dass das Programm bei jedem Durchlauf ein Init ausführt.
Ich glaube, Sie übertreiben, was die Kosten für das Lesen des Arrays aus der Datei betrifft. Jedes Mal, wenn Windows aus dem Ruhezustand erwacht, wird von der Festplatte das Abbild des Zustands wiederhergestellt, den es zum Zeitpunkt des Einschlafens hatte, einschließlich des Zustands aller Anwendungen. Glauben Sie, dass es dort nicht genügend Objekte und Informationen gibt? Und wie lange dauert es, bis man so aus dem Schlaf erwacht?
Sie übertreiben, IMHO.
 
forexman77:

Ja, das ist das Problem, es passt nicht. Es gibt 15.000 Pässe in der Optimierung. Und ich muss nur einmal rechnen und bei den folgenden Durchgängen nur ein Array ansprechen.

Das heißt, ich habe bereits Daten in der Datei, die im Voraus berechnet werden und deren Höhe mir im Voraus bekannt ist. Und selbst das Lesen der Datei jedes Mal im Init ist sehr aufwendig (es gibt Tausende von Zeilen). Ich weiß nicht, wie es bei MQL5 ist, aber in MQL4 wurde im Forum geschrieben, dass das Programm bei jedem Durchlauf den Init durchläuft.

Ein klassischer Trick aus der C/C++-Welt: Sie können ein statisches Array aus Ihrer Datei erstellen/konvertieren (nur Text: double arr[100500]={1,2,3....} ) und es einfach über #include einbinden.

 
BlackTomcat:
Ich glaube, Sie übertreiben mit den Kosten für das Lesen eines Arrays aus einer Datei. Jedes Mal, wenn Windows aus dem Ruhezustand aufwacht, wird von der Festplatte ein Abbild des Zustands wiederhergestellt, den es zum Zeitpunkt des Einschlafens hatte, einschließlich des Zustands aller Anwendungen. Glauben Sie, dass es dort nicht genügend Objekte und Informationen gibt? Und wie lange dauert es, bis man so aus dem Schlaf erwacht?
Sie übertreiben, IMHO.

Die Kosten sind eindeutig höher. Es gibt zwei Varianten mit unveränderten Indikatoreinstellungen und mit denselben Werten, die jedoch bereits in eine Datei geschrieben wurden, die in ein Array gedumpt wird.

Die Variante mit der Datei dauert um ein Vielfaches länger als die Variante mit Indikatorberechnung im Expert Advisor.

Ich dachte nur, dass es vielleicht eine Möglichkeit gibt, das Array einmal zu speichern und es für alle Optimierungsdurchläufe zu verwenden, wodurch der Algorithmus entlastet wird.

 
Maxim Kuznetsov:

Ein klassischer Trick aus der C/C++-Welt: Sie können ein statisches Array aus Ihrer Datei erstellen/konvertieren (nur Text: double arr[100500]={1,2,3....} ) und es einfach über #include einbinden.

Wenn Sie das tun, wird das Array dann gespeichert, wenn Sie zu einem neuen Pass wechseln?
 
forexman77:

Die Kosten sind eindeutig höher. Es gibt zwei Varianten mit unveränderten Indikatoreinstellungen und mit denselben Werten, die jedoch bereits in eine Datei geschrieben wurden, die in ein Array gedumpt wird.

Die Variante mit der Datei dauert um ein Vielfaches länger als die Variante mit Indikatorberechnung im Expert Advisor.

Ich dachte nur, dass es vielleicht eine Möglichkeit gibt, das Array einmal zu speichern und es für alle Optimierungsdurchläufe zu verwenden, wodurch der Algorithmus entlastet wird.

Berechnen Sie EINE Zeit und speichern Sie das Array mit den Ergebnissen in einer Datei. Und dann lesen Sie das fertige Array während der Initialisierung aus der Datei und verwenden es sofort. Eine Neuberechnung ist nicht erforderlich. Sie haben bereits alles vorher berechnet und gespeichert. Warum noch einmal zählen? :)