Optimierung mit dem Strategy Tester - Seite 10

 

In den letzten Builds haben wir den System-Overhead bei Aufgabenläufen vollständig beseitigt und ihn von fast 2000 ms auf Null reduziert.

Hier sind die Ergebnisse einer Berechnungsaufgabe, die von joo vorgeschlagen wurde:

input double   x1=0.0;
input double   x2=0.0;
double OnTester()
  {
   return
   (
    pow(cos((double)(2*x1*x1))-0.11 e1,0.2 e1)+
    pow(sin(0.5 e0 *(double) x1)-0.12 e1,0.2 e1) -
    pow(cos((double)(2*x2*x2))-0.11 e1,0.2 e1)+
    pow(sin(0.5 e0 *(double) x2)-0.12 e1,0.2 e1)
    );
  }

Einstellungen (die Datumsangaben sind absichtlich so gewählt, damit der Diagrammverlauf nicht verwendet wird):

Auszuführende Parameter:

Eingesetzte Agenten (4 lokale Agenten):

Optimierungsergebnisse:

Die Optimierung dauerte nur 25 Sekunden, es wurden 18.432 Durchläufe gemacht:



Gesamtergebnis: MetaTrader 5 und sein Netzwerk von Agenten können für umfangreiche mathematische Berechnungen genutzt werden.

 
Renat:

In den letzten Builds haben wir den System-Overhead bei Aufgabenläufen vollständig beseitigt und ihn von fast 2000 ms auf Null reduziert.

Hier sind die Ergebnisse einer Berechnungsaufgabe, die von joo vorgeschlagen wurde:

Einstellungen (die Datumsangaben sind absichtlich so gewählt, damit der Diagrammverlauf nicht verwendet wird):

Auszuführende Parameter:

Agenten im Einsatz (4 lokale Agenten):

Optimierungsergebnisse:

Die Optimierung dauerte nur 25 Sekunden und es wurden 18.432 Durchläufe durchgeführt:

Das Gesamtergebnis: MetaTrader 5 und sein Netzwerk von Agenten können für massive mathematische Berechnungen genutzt werden.

Dies ist ein sehr gutes Ergebnis. Jetzt ist der Optimierer wirklich mehr oder weniger geeignet für Optimierungsaufgaben (sowohl handels- als auch nicht handelsbezogen). Die Ergebnisse werden noch besser, wenn die Anzahl der Durchläufe auf 2-3 Tausend für diese spezielle Aufgabe mit den Standardeinstellungen des Optimierers GA reduziert wird, aber dafür müssen Sie die GA-Einstellungen für den Benutzerzugang anzeigen (es wird möglich sein, die Anzahl der Durchläufe auf 500-900 zu reduzieren, wenn der Benutzer dies wünscht).

Es bleibt ein Problem im Zusammenhang mit der Begrenzung des Suchraums. Ein entsprechender Optimierungsvorschlag wurde in servicedesk gemacht.

 
joo:

Dies ist ein sehr gutes Ergebnis. Jetzt ist der Optimierer wirklich mehr oder weniger geeignet für Optimierungsaufgaben (sowohl direkt handelsbezogen als auch nicht handelsbezogen). Noch bessere Ergebnisse würden erzielt, wenn die Anzahl der Durchläufe für diese spezielle Aufgabe mit den Standard-GA-Einstellungen des Optimierers auf 2-3 Tausend reduziert würde, aber dafür müssen Sie die GA-Einstellungen dem Benutzer zur Verfügung stellen (es wird möglich sein, die Anzahl der Durchläufe auf 500-900 zu reduzieren, wenn der Benutzer dies wünscht).

Es bleibt ein Problem im Zusammenhang mit der Begrenzung des Suchraums. Ein entsprechender Optimierungsvorschlag wurde im Service Desk gemacht.

Und die Lösung für dieses Problem hängt in erster Linie mit diesem Problem zusammen:

Wenn ein Überlauf bei der Optimierung bereits bei 4 Parametern auftritt, ist es noch nicht angebracht, die Anzahl der Parameter über das derzeit zulässige Maß (64) hinaus zu erhöhen.

 
Urain:

Und die Lösung dieses Problems hängt in erster Linie mit diesem Problem zusammen:

Wenn ein Optimierungsüberlauf bereits bei 4 Parametern auftritt, dann ist es noch nicht angebracht, über eine Erhöhung der Anzahl der Parameter (64) zu sprechen.

Ja, natürlich. Grob gesagt, ist der Suchraum P=n*Schritt, wobei n die Anzahl der zu optimierenden Parameter und der Schritt die Anzahl der Parameter ist. Gleichzeitig sollte P kleiner sein als Pmax (maximal möglicher Suchraum, begrenzt durch die Merkmale der binären Kodierung des Chromosoms). Daher ist eine der künstlich eingeführten Einschränkungen (zum Beispiel können Sie eine Grenze von 10000 Parametern zu machen, aber dann wird der Schritt mehr als notwendig, um die meisten Optimierungsprobleme zu lösen), so dass P nicht überschreiten würde Pmax, wurde eine Beschränkung auf n eingeführt.

Überlegungen dazu werden im Vorschlag für einen Optimierer in servicedesk geäußert.


PS Mit der Zunahme der Netze von Fernagenten löst sich das Problem der hohen Anzahl von Durchläufen in Luft auf. Aber natürlich nur, wenn die Beschränkungen der binären Chromosomencodierung aufgehoben werden (sprich: Umstellung auf Chromosomencodierung mit reellen Zahlen).

 
joo:

Ja, natürlich. Grob gesagt ist der Suchraum P=n*Schritt, wobei n die Anzahl der zu optimierenden Parameter und der Schritt die Schrittweite der Parameter ist. Außerdem sollte P kleiner sein als Pmax (maximal möglicher Suchraum, begrenzt durch die Merkmale der binären Kodierung des Chromosoms). Daher ist eine der Einschränkungen, künstlich eingeführt (zum Beispiel, können Sie eine Grenze von 10000 Parametern, aber dann wird der Schritt mehr als notwendig, um die meisten Optimierungsprobleme zu lösen), dass P nicht über Pmax gehen würde, wurde eine Grenze auf n eingeführt.

Überlegungen dazu finden Sie in dem Optimierungsvorschlag in Service Desk.


PS Wenn die Netze entfernter Agenten wachsen, verschwindet das Problem der großen Anzahl von Läufen. Aber natürlich nur, wenn die Beschränkungen der binären Chromosomencodierung aufgehoben werden (sprich: Umstellung auf Chromosomencodierung mit reellen Zahlen).

Leicht falsch, die richtige Anzahl der Varianten ist P=Schritt_0*Schritt_1*...*Schritt_n

was, wenn die Schrittweite gleich ist, zu P=Schritt^n führt

 
Urain:

Leicht falsch, die korrekte Anzahl der Auswahlmöglichkeiten ist P=Schritt_0*Schritt_1*...*Schritt_n

was, wenn die Schrittweite gleich ist, zu P=Schritt^n führt

Nun, ja, Sie haben Recht, ich sage nur - grob, um klarer und deutlicher zu sein, was wovon abhängt.
 
Renat:

In den neuesten Builds haben wir den System-Overhead beim Start von Aufgaben vollständig eliminiert und von fast 2000 ms auf Null reduziert.

Fantastisch! Oh, wie viel Zeit wurde im Sommer mit der Optimierung verschwendet...

Das Wichtigste zuerst. Habe den Test von joo mit dem aktuellen Build und mit Build 319 (02 Sep 2010) durchgeführt:

2010 12/229 15:49:18 Test bestanden in 2 Minuten 41 Sekunden
2010.12.29 15:49:18 Testeroptimierung beendet bei Durchlauf 15360 (von 100000020000001)
2010.12.29 15:49:18 Testergebnis-Cache wurde 7265 Mal verwendet
2010.12.29 15:49:13 Testergenetik ist vorbei
2010.12.29 17:10:59 Testoptimierung bestanden in 1 Stunde 17 Minuten 34 Sekunden
2010.12.29 17:10:59 Tester Genetik Optimierung beendet bei Pass 18176 (von 100000020000001)
2010.12.29 17:10:59 Testergebnis-Cache wurde 10582 mal benutzt
2010.12.29 17:10:52 Testergenetik ist vorbei

Ich weiß gar nicht, ob ich gratulieren oder danken soll. Ich danke Ihnen!

 
Urain:

Und die Lösung für dieses Problem hat in erster Linie mit diesem Problem zu tun:

Wenn der Überlauf der Optimierungsläufe bereits bei 4 Parametern auftritt, dann ist es noch nicht angebracht, über eine Erhöhung der Anzahl der Parameter über das jetzt zulässige Maß (64) hinaus zu sprechen.

Gehen Sie bei der Suche vernünftig vor, aber drehen Sie die Regler nicht im Modus "Russische Männer zerbrechen japanische Kettensägen" auf Maximum.

Sobald Sie anfangen, die genetische Optimierung in der Praxis anzuwenden, werden Sie sofort anfangen, vernünftige Grenzen zu wählen.

 
Yedelkin:

Fantastisch! Wie viel Zeit wurde im Sommer mit der Optimierung verschwendet...

Der Reihe nach. Ich habe es mit dem aktuellen Build und mit dem 319. Build (02. September 2010) getestet:

2010.12.29 15:49:18 Testergebnis-Optimierung in 2 Minuten 41 Sekunden bestanden
2010.12.29 15:49:18 Testergebnis-Optimierung beendet bei Durchlauf 15360 (von 100000020000001)
2010.12.29 15:49:18 Testergebnis-Cache wurde 7265 Mal verwendet
2010.12.29 15:49:13 Testergebnis-Optimierung ist beendet
2010.12.29 17:10:59 Testergebnis-Optimierung bestanden in 1 Stunde 17 Minuten 34 Sekunden
2010.12.29 17:10:59 Testergebnis-Genetik beendet bei Durchlauf 18176 (von 100000020000001)
2010.12.29 17:10:59 Testergebnis-Cache wurde 10582 mal benutzt
2010.12.29 17:10:52 Testergebnis-Genetik ist beendet

Ich weiß nicht, ob ich Ihnen gratulieren oder danken soll. Ich danke Ihnen!

Es ist zu beachten, dass wir den System-Overhead in den Phasen "Synchronisierung/Übermittlung der Anfangsdaten vom Terminal an den Agenten und Empfang der Ergebnisse vom Agenten" reduziert haben, was zu einer Einsparung von 1,5-2 Sekunden pro Lauf führte. In der Sprache selbst gab es keine Beschleunigung der Berechnungen.

Am gravierendsten wirkt sich dies bei Hochgeschwindigkeitsberechnungen aus, bei denen die Berechnung nahezu keine Zeit in Anspruch nimmt. Bei massiven Berechnungen sind die Einsparungen nicht so ausgeprägt. Eine Einsparung von 2 Sekunden pro 10.000 Durchläufe ergibt 20.000 Sekunden = 333 Minuten = 5,5 Stunden.

 
Renat:
Das ist nicht der Fall.

Ich habe festgestellt, dass es eine Wirkung hat. Ich habe den EA wochentags laufen lassen und ihn jetzt mit erweitertem Spread laufen lassen, das Ergebnis ist ganz anders, der Spread ist jetzt etwa 4 Pips (vierstellig) auf Eurobuck. Es gibt also auch in mt5 einen Spread-Stau am Wochenende, so dass ich es nicht am Wochenende laufen lassen möchte, weil die Optimierung nicht korrekt sein wird. Ich kann es sogar visuell in mt4 sehen, wo ein EA seit Montag optimiert wurde und die Ergebniskurve seit dem Wochenende nach unten gegangen ist; es beweist, dass der Spread die Optimierungsergebnisse beeinflusst, sie sind schlechter geworden.