Bibliotheken: MultiTester - Seite 17

 

Ich schaute auf meine eigene, in der Tat für einige Symbole nicht erscheinen Dateien mit Tick Geschichte, sah durch das Protokoll und dort ist es:

2020.02.12 16:02:30.144 Core 1  NZDUSD : real ticks begin from 2017.01.02 00:00:00

Jetzt verstehe ich, der Rest war eine Simulation.


Übrigens MultiTester schaltet das Symbol nicht auf minimiertem Terminal, es ist besser, das Öffnen eines Fensters vor dem Start eines neuen Durchlaufs hinzuzufügen. Ich habe eine solche Funktion zu fInit für jetzt hinzugefügt.

bool ActivateTerminalWindow(){
   HANDLE ChartWindow = (HANDLE)ChartGetInteger(0, CHART_WINDOW_HANDLE);
   if(ChartWindow){
      HANDLE TerminalWindow = GetParent(ChartWindow);
      TerminalWindow = GetParent(TerminalWindow);
      TerminalWindow = GetParent(TerminalWindow);
      if(TerminalWindow){
         ShowWindow(TerminalWindow, 3);
         return true;
      }
   }
   return false;
}
 
Evgenii Kuznetsov:

Übrigens schaltet MultiTester das Symbol auf dem minimierten Terminal nicht um, fügen Sie besser ein neues Fenster hinzu, bevor Sie einen neuen Durchlauf starten.

Ich habe es nicht überprüft, habe es nicht angetroffen.

 
fxsaber:

Am Ende habe ich dies getan. Bilden Sie einen Stapel von Aufgaben aus ini-Dateien und senden Sie sie zur Ausführung.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Expert Advisors: Validieren

fxsaber, 2020.02.22 10:46 AM

Wenn ich viele verschiedene Testeraufgaben ausführen muss, benutze ich Validate.


1. Ich richte im Tester eine Aufgabe ein, die ich ausführen möchte.

2. Auf der Registerkarte Einstellungen drücke ich CTRL+C. Alle Einstellungen werden in der Zwischenablage gespeichert.

3. mit STRG+V kopiere ich diese Einstellungen in eine Ini-Datei, die ich in den Ordner mit den Aufgaben lege.

4. auf diese Weise erstelle ich die erforderliche Anzahl von Aufgaben - ini-Dateien (vier Aufgaben auf dem Bildschirm).


5. Beim Start von Validate gebe ich den Namen des Ordners an, in dem sich die Aufgaben befinden.


Das war's, jetzt wird Validate mit all seinen Tricks diese Aufgaben ausführen.


Ich verwende MultiTester-Derivate nur in bestimmten Fällen, wenn ich Aufgaben erstellen muss, während ich sie ausführe.

Ich empfehle, Validate zu verwenden, um einen Stapel von vorgefertigten Aufgaben auszuführen.

 

Bitte teilen Sie Ihre Erfahrungen mit, wie man GA richtig einsetzt. Ich bin auf eine Situation gestoßen, in der GA nur eines der erforderlichen lokalen Extrema findet.

Für ein bestimmtes TS/Symbol weiß ich, wo ich suchen muss, also mache ich GA in verschiedenen Bereichen. Aber im Allgemeinen ist es nicht klar, wie ich vorgehen soll.

 
fxsaber:

Bitte teilen Sie Ihre Erfahrungen mit, wie man GA richtig einsetzt. Ich bin auf eine Situation gestoßen, in der GA nur eines der erforderlichen lokalen Extrema findet.

Für ein bestimmtes TS/Symbol weiß ich, wo ich suchen muss, also mache ich GA in verschiedenen Bereichen. Aber im Allgemeinen ist es nicht klar, wie ich vorgehen soll.

Ich glaube, es gab hier etwas zu diesem Thema - https://www.mql5.com/ru/forum/87536.

Oder rufen Sie den Autor(@Andrey Dik) an.

Чемпионат Алгоритмов Оптимизации.
Чемпионат Алгоритмов Оптимизации.
  • 2016.06.09
  • www.mql5.com
Чемпионат алгоритмов оптимизации задуман как соревнование для людей ищущих, любознательных, для которых стоять на месте означает движение назад...
 
Andrey Khatimlianskii:

Ich glaube, hier gab es etwas zu diesem Thema - https://www.mql5.com/ru/forum/87536

Oder rufen Sie den Autor(@Andrey Dik) an.

Ich stelle Fragen im Zusammenhang mit der Verwendung von MT5-Tester. Daher sind eigene Optimierungsalgorithmen nicht geeignet.

 
fxsaber:

Bitte teilen Sie Ihre Erfahrungen mit, wie man GA richtig einsetzt. Ich bin auf eine Situation gestoßen, in der GA nur eines der erforderlichen lokalen Extrema findet.

Für ein bestimmtes TS/Symbol weiß ich, wo ich suchen muss, also mache ich GA in verschiedenen Bereichen. Aber im Allgemeinen ist es nicht klar, wie ich vorgehen soll.

Ich höre jetzt auf zu testen, wenn der Drawdown groß ist

und um die GA ein wenig aufzumuntern, tue ich dies:

#define  TESTER_STOP(ret) { EA_STOP = true; TesterStop(); return ret; }
double OnTester()
{
   srand((int)TimeCurrent());
// if(StartHour==20 && CountHours==22) return (-(rand() % 1000));// Dies verwende ich, wenn die GA bei der Laufzeit um ein Maximum zu konvergieren beginnt

   if(EA_STOP) return (-(rand() % 1000));                                                               // Erfolgloser Test, unterbrochen durch einen großen Drawdown

   int o_count = 0;
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType() < 2) o_count++;
   }
   if(o_count < 160) return (-(rand() % 1000));                                                         // auf der Suche nach mindestens 160 Geschäften in sechs Monaten

   return(AccountInfoDouble(ACCOUNT_BALANCE));
}


void OnTick()
{
   if(IS_OPTIMIZATION)
   {
      double balance = AccountInfoDouble(ACCOUNT_BALANCE);
      MaxBalance = fmax(MaxBalance, balance);
      if(MaxBalance - balance > 200) TESTER_STOP();                                                     // Stoppen Sie den Test bei einem Drawdown von $200
   }


Das ist die Methode, die ich in der letzten Woche getestet habe, und jetzt bin ich sehr zufrieden mit GA.

 

In meinem Optimierer wiederhole ich GA so lange, bis 4 Mal keine Verbesserung gegenüber dem letzten Ergebnis zu verzeichnen ist. Das kann ein Dutzend oder mehr Versuche erfordern. Normalerweise erhalte ich gute Ergebnisse. Allerdings dauert es sehr lange.

Bei einer erneuten Optimierung zu aktuellen Daten kann ich ein neues, verbessertes lokales Maximum erhalten, und wenn nicht, beginne ich mit dem alten und verfeinere es für den neuen Markt durch langsame Optimierung (ich wähle eine Gruppe von voneinander abhängigen Variablen und optimiere jede Kombination iterativ paarweise).

Darüber hinaus habe ich in OnTester Mikrostrafen (zusätzliche Mutagene) eingeführt. In diesem Fall führt GA aufgrund häufigerer Mutationen mehr Durchläufe durch, und infolgedessen werden häufiger neue Maxima gefunden.

// Mikrostrafen für die Wahl eines kleineren Parameterwerts bei gleichen Ergebnissen
res -= BP * 0.0001 / 200;       // Dividieren durch den Optimierungsbereich (0...200)
 
Igor Makanu:

Ich höre jetzt mit dem Testen auf, wenn es einen großen Drawdown gibt.

Und um die GA ein wenig aufzuheitern, mache ich das hier:

Ich habe in der letzten Woche mit dieser Methode getestet und bin jetzt sehr zufrieden mit GA.

Ich mache es ungefähr genauso. Die Drawdown-Kontrolle dient der schnelleren Optimierung, und die Kontrolle der Anzahl der Trades dient dazu, den GA besser zu lenken und den Müll herauszufiltern.

Aber das ist nicht genug.


ZY Es ist billiger.

TesterStatistics(STAT_TRADES)
 
Edgar Akhmadeev:

Mikrostrafen (zusätzliche Mutagene) in OnTester eingeführt. In diesem Fall führt GA aufgrund häufigerer Mutationen mehr Durchläufe durch, und infolgedessen werden häufiger neue Maxima gefunden.

Bitte klären Sie das.