MT5-Terminal wurde heute aktualisiert und das Fenster "Optimierung" wird während des Tests nicht angezeigt - Seite 5

 
Texnolog:

Warum einen guten alten Algorithmus zerstören und durch einen neuen ersetzen, der dreimal langsamer ist?

Der Algorithmus des genetischen Testers hat sich nicht geändert. Und die Behauptungen über 3 Mal sind absolut unbegründet.

Die Arbeitsweise eines Caches für frühere Ergebnisse wurde geändert. Und sie wurde viel besser und vollständiger als die vorherige.

Wenn Sie einen neuen Ansatz für die genetische Methode einführen möchten, fügen Sie auf der Registerkarte "Optimierung" ein neues Element hinzu,

Erstellen Sie eine Beschreibung und Techniken für die Arbeit damit.

Schauen Sie sich die Links oben an - alle diese Artikel stammen von unserer Website. Die genetische Optimierung ist seit vielen Jahren in aller Munde.

Suchen Sie bitte nach "strategy tester", "genetic optimizer" in der Suche.

Und nehmen Sie meinen wiederholten Ratschlag an - die Optimierung einzelner Erholungsfaktoren in der Genetik ist kontraindiziert. Sie täuschen den Algorithmus einfach mit einem völlig instabilen und trügerischen (für die Automatik)"Gewinn/Maximum Drawdown"-Verhältnis, das leicht riesige Werte erzeugt. Überlegen Sie, wie und warum.


Wir werden die Zeichnung des Optimierungsgraphen am Montag korrigieren.

 
Wird es je nach Marktvolumen eine teilweise Ausführung von Limit-Aufträgen geben?
 
pivomoe:
Wird es eine teilweise Ausführung von Limit-Aufträgen geben, je nachdem, welche Volumina den Markt passieren?

Haben Sie in der Geschichte schon einmal Volumen in einem Glas gesehen? Es ist unrealistisch, dies ohne eine Momentaufnahme des Marktes umzusetzen.

 
Aleksey Vyazmikin:

Haben Sie in der Geschichte schon einmal Volumen in einem Glas gesehen? Ohne einen Abdruck des Glases ist das nicht machbar.

Das würde ich mir nicht träumen lassen. Ich möchte, dass Buy Limit mit Preis 90 und Lot 10 teilweise ausgelöst wird, wenn es z.B. einen SELL-Tick mit Preis 89 und Volumen 1 gibt. Es ist jetzt sehr traurig. Die Order würde ausgelöst werden, wenn es einen BUY-Tick mit dem Preis 90 und Lot 1 gibt... und in voller Lautstärke.

 
Renat Fatkhullin:

Der Algorithmus des genetischen Testers wurde nicht verändert. Die Behauptungen über die dreimalige Teilnahme sind absolut unbegründet.

Was sich geändert hat, ist die Art und Weise, wie der Zwischenspeicher für frühere Ergebnisse funktioniert. Und sie wurde radikal besser und vollständiger als die vorherige.


Ich habe einige vergleichende Tests mit den neuen und alten Builds des Testers durchgeführt.

Hier sind die Ergebnisse. Logs und Beschreibung in Beitrag #34.

11

 

Hier ist mein Test mit den vorgeschlagenen Bedingungen:

  • Einstellungen von https://www.mql5.com/ru/forum/241285/page4#comment_7271206
  • alle Zwischenspeicher der Testerdateien werden vor Beginn der Tests von der Festplatte entfernt
  • Windows 10, Intel Xeon E5-2630 v4 @ 2.20GHz, 8 Kerne für Agenten verwendet

Vollständiger Durchlauf bis zum Ende, dann Neustart des Terminals
mit Stopp bei 1000 (ca.) Durchgängen
Nach dem Stopp weiterfahren
Metatrader 5 bauen 1755
38 Sekunden, 4780 Durchgänge
15 Sekunden, 1105 Durchgänge
25 Sekunden, 3487 Durchgänge
Metatrader 5 bauen 180933 Sekunden, 5.549 Durchgänge
9 Sekunden, 1126 Durchgänge
36 Sekunden, 5863 Durchgänge


Metatrader 5 Build 1755:

  • Bild 1755 voller Durchlauf, insgesamt 8960 Varianten, von denen 4780 tatsächlich berechnet wurden und 4180 aus dem in derselben Sitzung angehäuften Cache entnommen wurden

    , nach dem das Terminal neu gestartet wird, um einen direkten Einfluss von Hot Caches im Speicher zu vermeiden
    2018.04.30 11:20:46.867	Tester	Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 11:20:47.118	Tester	genetic calculation is over
    2018.04.30 11:20:47.126	Tester	4697 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:20:47.338	Tester	result cache used 4180 times
    2018.04.30 11:20:47.338	Tester	genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 11:20:47.349	Statistics	optimization done in 0 minutes 38 seconds
    2018.04.30 11:20:47.349	Statistics	local 4780 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • Build 1755 mit einem Stopp bei 1337 Durchläufen. 216 davon werden aus dem Cache genommen (216 / 1337 = 16% Cache-Treffer, nicht viel wegen der Zufälligkeit beim Start und der geringen Stichprobengröße)
    2018.04.30 11:24:15.913	Tester	Best result 3254.53 produced at generation 0. Next generation 4
    2018.04.30 11:24:16.775	Tester	file cache used 19 times
    2018.04.30 11:24:16.775	Tester	result cache used 216 times
    2018.04.30 11:24:16.775	Tester	genetic optimization finished on pass 1337 (of 49644595)
    2018.04.30 11:24:16.775	Statistics	optimization done in 0 minutes 15 seconds
    2018.04.30 11:24:16.775	Statistics	local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • Build 1755 mit Fortsetzung nach einem Stopp auf Stop, Terminal startete nicht neu, Fortsetzung.

    Test wird vom gestoppten Punkt aus fortgesetzt und nicht vom Anfang wie in Build 1809, dann wurden von den vorgeschlagenen 10496 Durchläufen 3487 und 66+3814 aus dem Cache genommen (66+3814 / 10496 = 36% Cache hit)
    2018.04.30 11:26:27.931	Tester	Best result 3363.35 produced at generation 15. Next generation 32
    2018.04.30 11:26:28.104	Tester	genetic calculation is over
    2018.04.30 11:26:28.111	Tester	3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:26:28.539	Tester	file cache used 66 times
    2018.04.30 11:26:28.539	Tester	result cache used 3814 times
    2018.04.30 11:26:28.539	Tester	genetic optimization finished on pass 8704 (of 49644595)
    2018.04.30 11:26:28.550	Statistics	optimization done in 0 minutes 25 seconds
    2018.04.30 11:26:28.550	Statistics	local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    





Metatrader 5 Build 1809:

  • 1809 vollständige Durchläufe, insgesamt 8960 Durchläufe, von denen 5549 tatsächlich gezählt wurden und 3411 aus den in derselben Sitzung gesammelten Cache-Treffern entnommen wurden

    , nach der ein Neustart des Terminals erfolgt, um den direkten Einfluss von Hot Caches im Speicher zu vermeiden.
    2018.04.30 10:50:58.997 Tester  Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 10:50:59.485 Tester  genetic calculation is over
    2018.04.30 10:50:59.485 Tester  result cache used 3411 times
    2018.04.30 10:50:59.485 Tester  genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 10:50:59.495 Statistics      optimization done in 0 minutes 33 seconds
    2018.04.30 10:50:59.495 Statistics      local 5549 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • Build 1809 mit Stopp bei 1348 Durchläufen. 222 davon wurden aus dem Cache entnommen (222 / 1348 = 16% Cache-Treffer, nicht genug wegen der Zufälligkeit beim Start und der kleinen Stichprobe)
    2018.04.30 11:00:59.532 Tester  Best result 3263.17 produced at generation 0. Next generation 4
    2018.04.30 11:00:59.742 Tester  result cache used 222 times
    2018.04.30 11:00:59.742 Tester  genetic optimization finished on pass 1348 (of 49644595)
    2018.04.30 11:00:59.742 Statistics      optimization done in 0 minutes 09 seconds
    2018.04.30 11:00:59.742 Statistics      local 1126 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • Build 1809 mit Fortsetzung nach einem Stopp auf Stop, Terminal nicht neu gestartet, Fortsetzung.

    wie der Test von Anfang an gestartet wird, von den vorgeschlagenen 10240 Durchläufe gemacht wurde sauber 5863 und 4377 wurden aus dem Cache genommen (4377 / 10240 = 42% Cache Hit)
    2018.04.30 11:04:28.046 Tester  Best result 3391.17 produced at generation 27. Next generation 38
    2018.04.30 11:04:28.477 Tester  genetic calculation is over
    2018.04.30 11:04:28.477 Tester  result cache used 4377 times
    2018.04.30 11:04:28.477 Tester  genetic optimization finished on pass 10240 (of 49644595)
    2018.04.30 11:04:28.488 Statistics      optimization done in 0 minutes 36 seconds
    2018.04.30 11:04:28.488 Statistics      local 5863 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    



Nun zu den Schlussfolgerungen:

  1. Ihre Aussage über "3 mal langsamer" ist falsch.

  2. Tatsächlich ist der Tester von Build 1809 durch Optimierung und Neuschreiben interner Prozesse schneller geworden.

    Dies zeigt sich in der Zeit des vollständigen Durchlaufs, die 33 Sekunden statt 38 Sekunden beträgt. Und 33 Sekunden für eine größere Anzahl von Durchgängen.

    Wenn wir die Anzahl der Durchläufe pro Sekunde neu berechnen, ergibt sich:
    - Build 1755 ergibt 4780 Durchläufe / 38 Sekunden = 125 Durchläufe pro Sekunde
    - Build 1809 ergibt 5549 Durchläufe / 33 Sekunden = 168 Durchläufe pro Sekunde

  3. Das neue Schema des genetischen Optimierers "Fortsetzung nach Stopp" mit Generierung eines neuen Populationsplans ist korrekt.

    Wir sind dabei, das Testerkonzept neu zu bewerten und alte Fehlentscheidungen zu korrigieren.

    Da Gentests mehrfach durchgeführt werden müssen, um den Suchbereich vollständig abzudecken, ermöglicht unser neues Modell mit der Visualisierung früherer Läufe aus dem Cache ein besseres Verständnis der Mechanismen des genetischen Arbeitsablaufs.

    Das neue Modell für die Anzeige von Optimierungsergebnissen, bei dem alle Daten aus den zuvor berechneten Caches zur Tabelle hinzugefügt werden, ermöglicht ein vollständigeres Bild. Es ist möglich, Ihre Strategie in Teilen zu berechnen und jedes Mal vollständige Ergebnisse zu sehen, einschließlich früherer Durchläufe.

    Wegen der sehr großen zusammengefassten Ergebnistabellen haben wir die Echtzeitanzeige der Ergebnisliste deaktiviert und zeigen das kumulierte Ergebnis nach der Zusammenführung aller vorherigen Ergebnisse an.
 

Mein Roboter stürzt während der Initialisierung ab, sowohl in Runtime als auch in Debug. Die Zusammenstellung ist in Ordnung.

Es gibt eine Klasse mit statischen Mitgliedern im Code, wahrscheinlich wegen ihnen. Vorher hat alles gut funktioniert. Aber jetzt meldet es einen Fehler während der globalen Initialisierung.

Entfernte statische Mitglieder aus der Klasse, es läuft gut.

 
Dennis Kirichenko:

Mein Roboter stürzt während der Initialisierung ab, sowohl in Runtime als auch in Debug. Die Zusammenstellung ist in Ordnung.

Es gibt eine Klasse mit statischen Mitgliedern im Code, wahrscheinlich wegen ihnen. Vorher hat alles gut funktioniert. Jetzt schreibt es einen Fehler während der globalen Initialisierung.

Entfernte statische Elemente in der Klasse, normal gestartet.

Schreiben Sie Ihre Anfrage an den Service Desk und fügen Sie bitte den Expert Advisor (kann eine ex5-Datei sein) bei.

 
Aleksey Vyazmikin:

All das ist großartig!

Bringen Sie aber bitte die Registerkarte "Optimierung" zurück - ohne operationelle Analysen ist es unmöglich zu arbeiten! Große Tabellen sind langsam - lassen Sie uns einen Filter erstellen - zeigen Sie die Top 20 für jedes Kriterium - das ist nicht so ressourcenintensiv(?), aber es wird helfen, das Bild zu sehen. Und diese Milliarden von Pässen - wer macht sie? Es handelt sich um Einheiten mit enormen Kapazitäten - Sie selbst sprechen von der Sinnhaftigkeit der Anwendung der Genetik, und da gibt es keine solchen Portmanteaus. Mehr als 10k Pässe sind also eine Seltenheit.


Traurig.

Zumindest war es möglich, sich ein Bild von den vorläufigen Daten zu machen, während die Optimierung noch im Gange ist.

 
Renat Fatkhullin:

Wir arbeiten gerade an einer großen Leistungssteigerung des Testers und überarbeiten die Schwerlastmodi. Es wurden wichtige Verbesserungen vorgenommen, und in Kürze werden neue Beschleunigungsmethoden eingeführt.

Das Fenster mit der Gangliste wurde am Ende der Fehlberechnung eingeblendet, um keine Ressourcen für die Pflege, Neusortierung und Anzeige der sich ständig ändernden Gangliste zu verschwenden.

Es gab wirklich eine enorme Verschwendung von Ressourcen und Verlangsamungen. Vor allem, wenn es sich um Hunderttausende von Zeilen, Millionen und Abermillionen von Durchläufen handelt. Es macht keinen Sinn, einen Haufen vorläufiger Daten mit den Augen zu betrachten.


Wir führen Optimierungs- und Leistungstests mit 100 Millionen vollständigen Durchläufen durch.

Natürlich ist es bei solchen Zahlen nicht möglich, in Echtzeit neu zu sortieren und eine Tabelle mit 2-5-10-50 Millionen Werten anzuzeigen. Es gibt nur eine Möglichkeit - alles schnell und kostengünstig zu sammeln, zu sortieren und in beliebiger Tiefe zu überblicken.

Erzählen Sie uns davon, und das war's.

Grund der Beschwerde: