Frage an Entwickler - Nutzung aller Rechenkerne während der Optimierung - Seite 8

 
Interessanter Ansatz.
Auch ich werde mein eigenes 'Fahrrad' bauen müssen.
Die Aufgabe ist ungefähr die folgende:
die Anzahl der Parameter ist variabel;
Je nach den Werten können neue Parameter erscheinen oder bestehende verschwinden;
Ihre Zahl kann groß sein (30, 100, 200, unendlich), ich denke, der Durchschnitt liegt bei 20-50;
eine Strategie ist nur mit einer bestimmten Kombination von Werten der verfügbaren Parameter vollständig, nur in der vollständigen Strategie können wir den Gewinn, den Drawdown, etc. berechnen;
können wir auf einfache Weise (aus rechnerischer Sicht) Parameter hinzufügen und entfernen und bestimmen, welche Parameter bei einer Änderung der Werte erscheinen und verschwinden.

Wir müssen herausfinden, wie wir das Prüfgerät einsetzen können, um gute Parameter zu erhalten. Parameter sind funktionale Elemente der Strategie. Es ist möglich, den Tester programmatisch zu verwalten (Start, Stopp, Änderung von Instrumenten, Daten, Hebelwirkung, Schätzung der Berechnungszeit, Änderung von EA/Indikatorparametern usw.), Optimierungsergebnisse zu erhalten (Cache lesen).
Irgendwelche Ideen :) ? Ich bin noch nicht in diesem Stadium der Entwicklung.
 
Aliaksandr Hryshyn:
Interessanter Ansatz.
Ich muss mein 'Fahrrad' auch noch machen.
Die Aufgabe ist ungefähr die folgende:
die Anzahl der Parameter ist variabel;
Je nach den Werten können neue Parameter erscheinen oder bestehende verschwinden;
Ihre Zahl kann groß sein (30, 100, 200, unendlich), ich denke, der Durchschnitt liegt bei 20-50;
eine Strategie ist nur mit einer bestimmten Kombination von Werten der verfügbaren Parameter vollständig, nur in der vollständigen Strategie können wir den Gewinn, den Drawdown, etc. berechnen;
können wir auf einfache Weise (aus rechnerischer Sicht) Parameter hinzufügen und entfernen und bestimmen, welche Parameter bei einer Änderung der Werte erscheinen und verschwinden.

Wir müssen herausfinden, wie wir das Prüfgerät einsetzen können, um gute Parameter zu erhalten. Parameter sind funktionale Elemente der Strategie. Es ist möglich, den Tester programmatisch zu verwalten (Start, Stopp, Änderung des Instruments, der Daten, des Hebels, Schätzung der Berechnungszeit, Änderung der EA-/Indikator-Parameter usw.), Optimierungsergebnisse zu erhalten (Cache-Lesen).
Irgendwelche Ideen :) ? Ich bin noch nicht in diesem Stadium der Entwicklung.

Für dieses Problem gibt es je nach Sachlage mehrere Lösungen.

Wenn alle Parameter, die bereits vorhanden sind und die, die noch hinzukommen können, einen genau definierten Platz im Parametersatz (Chromosom oder ein anderes Äquivalent) haben, dann gibt es kein Problem.

Wenn der Platz jedes Parameters nicht im Voraus festgelegt werden kann, müssen die Parameter in Typen unterteilt werden, die ausschließlich miteinander kombiniert werden können (dann ist es egal, wo sich ein Parameter befindet) - eine Änderung der AO ist erforderlich.

Es gibt auch andere Möglichkeiten, das Problem zu lösen, aber in jedem Fall benötigen Sie eine maßgeschneiderte AO, einen Überbau über die Standard-AO.

 
Boris Egorov:
bestätigte Speicherüberlastung .... Obwohl es seltsam ist, dass niemand den Tauschvorgang abgebrochen hat, denke ich, dass die Entwickler dies berücksichtigen müssen.

Sie sollten uns mitteilen, wie das Problem gelöst wurde. Wir machen uns Sorgen um Sie, nicht wahr?

Wie viel Speicherplatz benötigen Sie mindestens pro Agent (haben Sie die Anzahl der aktivierten Agenten reduziert, bis alle gleichmäßig ausgelastet sind?)

Haben Sie die Auslagerungsdatei erhöht? Der physische Speicher wird ständig ausgelagert, was zu einer starken Verlangsamung führen kann. Sie müssen eine Anzahl von Kernen finden, bei der die gesamte Optimierungszeit minimal ist.

 
Edgar Akhmadeev:

Sie sollten uns mitteilen, wie das Problem gelöst wurde. Wir machen uns Sorgen um Sie, nicht wahr?

Wie viel Speicherplatz benötigen Sie mindestens pro Agent (haben Sie die Anzahl der aktivierten Agenten reduziert, bis alle gleichmäßig ausgelastet sind?)

Haben Sie die Auslagerungsdatei erhöht? Der physische Speicher wird ständig ausgelagert, es kann zu starken Verlangsamungen kommen, und wir müssen eine Anzahl von Kernen finden, bei der die Gesamtoptimierungszeit minimal ist.

Das hängt von der Verwendung der Zecken, der Tiefe des Verlaufs und der Anzahl der Werkzeuge ab. Schauen Sie einfach in den Task-Manager, dort sehen Sie alles, die Menge des gesamten Arbeitsspeichers abzüglich 1-2 GB für das Betriebssystem geteilt durch die Menge, die von einem Agenten verwendet wird. Das ist bei jedem anders.

Eine echte Verbesserung können die Entwickler erzielen, wenn ein Bereich des Arbeitsspeichers für die Kurse und möglicherweise für die Indikatoren verwendet wird.
 
Aliaksandr Hryshyn:

Es hängt alles von der Verwendung der Zecken, der Tiefe der Geschichte und der Anzahl der Werkzeuge ab. Schauen Sie einfach in den Task-Manager, dort sehen Sie die Gesamtgröße des Arbeitsspeichers abzüglich 1-2 GB für das Betriebssystem, geteilt durch die Größe, die von einem Agenten verwendet wird. Das ist bei jedem anders.

Die Entwickler können die Situation wirklich verbessern, wenn ein Bereich des Arbeitsspeichers für Kurse und vielleicht auch für Indikatoren verwendet wird.

Erklären Sie es mir? Ich habe einem Mann das Problem erklärt, und jetzt bin ich an dem Ergebnis interessiert. Es gibt keine Rückmeldung.

Wir haben bereits mehrfach über die ineffiziente Speichernutzung durch das Terminal gesprochen, und MQ hat mehrfach versprochen, die Situation mit der doppelten Tick-Historie und den temporären Dateien für jeden Agenten und ihrer langen Erstellung vor jeder Tick-Optimierung zu ändern. Ich persönlich musste über mehrere Jahre hinweg fast die Hälfte der Agenten und Tick-Optimierungen deaktivieren. Ich habe 8 GB und 8 Agenten. Aber im Moment nutzen wir das, was wir haben, und wir können entweder die Speichergröße erhöhen oder Agenten deaktivieren.

 
Edgar Akhmadeev:

Erklären Sie es mir? Ich habe dem Mann das Problem erklärt, und jetzt bin ich gespannt auf das Ergebnis. Es gibt keine Rückmeldung.

Und die ineffiziente Nutzung des Speichers durch das Terminal haben wir schon oft diskutiert, und MQ hat mehrmals versprochen, die Situation mit der Duplizierung der Tick-Historie und der temporären Dateien für jeden Agenten und ihrer langen Erstellung vor jeder Tick-Optimierung zu ändern. Ich persönlich musste über mehrere Jahre hinweg fast die Hälfte der Agenten und Tick-Optimierungen deaktivieren. Ich habe 8 GB und 8 Agenten. Aber im Moment nutzen wir das, was wir haben, und wir können entweder die Speichergröße erhöhen oder Agenten deaktivieren.

>Sie müssen uns nur mitteilen, wie das Problem gelöst wurde. Wir machen uns Sorgen um Sie.

>Ich habe dem Mann das Problem erklärt, und jetzt interessiert mich das Ergebnis. Keine Rückmeldung.

Es tut mir leid, ich habe gearbeitet, ich hatte keine Zeit.

Ich habe den EA optimiert. Ich habe einige "unwichtige" Teile entfernt, damit der Optimierer funktioniert (insbesondere alles, was mit OpenCL und SQLite zu tun hat). Ich habe jetzt keinen Speicherüberlauf mehr. ABER ... das ist natürlich keine Lösung.

Auf einem anderen Computer musste ich einige Kerne deaktivieren, um ein Einfrieren zu vermeiden ... So hängt beispielsweise das System mit einem 3950X (16 Kerne/32 Threads) und 32 GB bei Verwendung aller Threads einfach. Außerdem hängt er sich bei Agenten auf und bleibt hängen, bis Sie den Prozess manuell über den Task-Manager beenden .... Ich habe einige der Kerne deaktiviert, die Berechnung ging weiter. Ich denke, die Entwickler sollten etwas tun, um das Problem deutlich zu machen. Wenn der Optimierer wirklich mehr als zehn Gigabyte Arbeitsspeicher für die Berechnung benötigt, sollte dies deutlich in einer Art Warnmeldung angegeben werden. Ich werde Sie aber noch einmal an den Tausch erinnern. Ich habe Xmeters installiert ... So kann ich die Speicherauslastung visuell direkt in der Taskleiste sehen.

Ich glaube, es gibt noch eine andere Störung, die speziell mit der amdc-CPU zusammenhängt und vorher nicht da war - obwohl der Berater derselbe war. Die Symptome sind wie folgt - nur 5 Kerne .... und die Fehlkalkulation bleibt... Und es ist nicht gerade der Speicher, d.h. gleiche Expert Advisor Kraft 16 Threads mit kein Problem, und das Problem ist schwebend, hin und wieder ist es nicht. Wenn ich den Test nicht mit dem Optimierer ausführe, läuft er gut. Das ist mir mehr als einmal aufgefallen. Ich muss es also überprüfen.

Was die Bremsen von Netzwerkagenten betrifft, so kann ich sie immer noch nicht erreichen. Das Prinzip "ein Kern - eine Aufgabe" ist für die Entwickler nicht nachvollziehbar. Wie zuvor erhalten 10 Kerne jeweils 30 Aufträge, und weitere 30 Netzwerkagenten sind im Leerlauf. Es dauert lange, Aufgaben zu verteilen, wenn man über etwas nachdenkt. Alles in allem gibt es also eine große Verzögerung.

Und ja, ich vergaß: Ich danke Ihnen allen sehr für Ihre Teilnahme, Ihre Hilfe und Ihren Rat.
 

anRenat Fatkhullin

Dennoch möchte ich das Thema noch einmal aufgreifen und eine Frage speziellan Renat Fatkhullin stellen

1. Ich optimiere eine lokale Farm, die aus mehreren Servern mit recht unterschiedlichen Leistungen besteht, und ich sah einige wirklich schreckliche Verzögerungen während der Optimierung, die durch CPUs mit unterschiedlichen Leistungen verursacht wurden. Angenommen, es gibt Server mit CPU Xeon E5-2620 v2 (2,1 GHz), Xeon E5-2620 0 (2,00 GHz), i7-3820 (3,6 GHz), Xeon E3-1245 (3,7 GHz), Ryzen 7 2700, Ryzen 9 3900X, Ryzen 9 3950X. Der derzeitige Algorithmus funktioniert folgendermaßen: Er bildet einen Auftragsstapel und teilt diesen Auftragsstapel gleichmäßig auf jeden verfügbaren Kern auf. Aufgrund der langsamen Xeon E5-2620 0 (2,00 GHz) und Xeon E5-2620 v2 (2,1 GHz) CPUs war die Farm im Leerlauf und zählte ihre Aufgaben, aber diese beiden CPUs zählten nicht einmal die Hälfte davon. So steht der ganze Hof einfach still. Dies geschieht und wird auch weiterhin geschehen, da die CPUs unterschiedlich schnell sind und solange die Aufträge in Paketen verteilt werden. Die Erfahrung zeigt, dass die Netzwerklatenz überhaupt keine Rolle spielt und vernachlässigbar ist. Ist es bereits möglich, den Algorithmus zur Auftragsverteilung zu überarbeiten: nicht mehrere Aufträge auf jeden verfügbaren Kern zu verteilen, sondern"jedem freien Kern einen Auftrag aus dem aktuellen Generationsstapel zu geben"?

2. Ist es möglich, die Testergebnisse alle 10 Minuten in einer xml-Datei zu speichern .... und von der letzten Speicherung auszugehen?

Renat Fatkhullin - MetaQuotes
  • www.mql5.com
Профиль трейдера
 

Wir haben den Tester und den Optimierer komplett neu geschrieben.

Wir werden die aufgelaufenen Probleme grundlegend überarbeiten und beheben.

 
Renat Fatkhullin:

Wir haben den Tester und den Optimierer komplett neu geschrieben.

Wir werden die aufgelaufenen Probleme drastisch überarbeiten und beheben.

Es wird sie geben:

1. schnellere Reaktion auf den Ausfall eines Agenten, d. h. wenn sich ein Agent nicht zurückzieht, wird die Paketzustellung für einige Minuten unterbrochen und die Pakete werden neu verteilt.

2) Ist es möglich, in einem einzigen Vorgang Daten für alle Agenten auf einem entfernten Rechner hochzuladen?

3. wird das Problem der Übertragung großer Datenmengen, wenn die Verbindung mit einem Agenten unterbrochen wird, nachdem nicht alle Daten (Dateien) für die Optimierung benötigt heruntergeladen?

 

Es gibt noch etwas, das mich stört ....

Nehmen wir an, die Optimierung ist im Gange und in diesem Moment wird der Metatrader des Agenten aktualisiert .... Wenn der Agent einen Auftrag (oder vielmehr einen Stapel von Aufträgen) hat, geht er dann verloren oder wird er neu berechnet?

Grund der Beschwerde: