Bibliotheken: MultiTester - Seite 22

 
Ich beantworte meine eigene Frage: mqh-Dateien müssen nicht separat kompiliert werden. Und Sie haben auch angefangen zu suchen, nicht wahr? Es klappt. Ich danke Ihnen.
 

Wenn Sie die Ergebnisse der Optimierung durchsehen, gefallen Ihnen vielleicht einzelne Passagen und Sie möchten schnell einige nützliche Informationen über sie erhalten, um sie später zu verwenden.

Ich fand diese Methode für mich sehr praktisch.

#define private public
  #include <fxsaber\MultiTester\MTTester.mqh>
#undef private

void OnDeinit( const int Reason )
{
  if (!MQLInfoInteger(MQL_OPTIMIZATION) && MQLInfoInteger(MQL_TESTER))
  {
    const datetime EndTime = TimeCurrent() - TimeCurrent() % (24 * 3600) + 24 * 3600;
        
    const string Str =          TimeToString(EndTime, TIME_DATE) + ": " +
                                DoubleToString(TesterStatistics(STAT_PROFIT), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_TRADES), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " +          
                                DoubleToString(TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", Fit = " +          
                                DoubleToString(TesterStatistics(STAT_CUSTOM_ONTESTER), 2) + "\n";

    MTTESTER::SetClipboard(_Symbol + " " + Str); // Legt die Zeichenkette des Einzelpasses in die Zwischenablage.
  }

Nach einem einzelnen Durchgang liegen alle notwendigen Informationen in Kurzform als String in der Zwischenablage. Ich füge sie über CTRL+V ein, wo es jetzt bequemer ist.

Wenn sich dann eine Menge solcher interessanter Strings angesammelt hat, werte ich die Gesamtsituation aus.


Sie bilden die Zeichenfolge natürlich selbst. Obiges ist nur ein Beispiel. Die Hauptsache ist, dass es in die Zwischenablage passt.

 

fxsaber, vielen Dank für den Multitester! Ihre Veröffentlichungen sind wie immer auf dem neuesten Stand!


Bevor ich ein Fahrrad erfinde, möchte ich um Rat fragen.

Als Ergebnis der Optimierung von EA-Parametern durch eine Liste von Symbolen mit dem Multitester erhalte ich eine Liste von .opt-Dateien, und die Ergebnisse der Optimierung können nur für jedes Symbol einzeln betrachtet werden.

Wie kann ich sie zu einem Durchschnittsergebnisfür alle Symbole zusammenfassen? Sagen wir, ich möchte ein Standard-MT5-2D-Diagramm mit zwei Parametern (aus grün schattierten Quadraten) erhalten.

Oder wie ist es einfacher, alle Ergebnisse in einer Excel-Tabelle zusammenzufassen? Der manuelle Export aller S&P500-Ergebnisse nach Excel ist nicht sehr praktisch....

fxsaber
fxsaber
  • www.mql5.com
Предупреждение для тех, кто не знает (почти все). При передаче мастер-пароля (даже на короткое время) от MT4/5-торгового счета другому лицу автоматически происходит передача не только имени, на кого зарегистрирован торговый счет (как при передаче инвест-пароля), но и реального email-адреса и номера телефона, на которые зарегистрирован торговый...
 
Sunriser:

Als Ergebnis der Optimierung der EA-Parameter durch die Liste der Symbole mit dem Multitester erhält man eine Liste von .opt-Dateien, und die Ergebnisse der Optimierung können nur für jedes Symbol einzeln betrachtet werden.

Und wie kann man sie zu einem Durchschnittsergebnisfür alle Symbole zusammenfassen? Nehmen wir an, ich möchte ein standardmäßiges MT5 2D-Diagramm von zwei Parametern (grün schattierte Quadrate) erhalten.

Oder wie ist es einfacher, alle Ergebnisse in einer Excel-Tabelle zusammenzufassen? Der manuelle Export aller S&P500-Ergebnisse nach Excel ist nicht sehr praktisch....

Es ist möglich, alle opt-Dateien der Mehrfachoptimierung über TesterCache in einer einzigen zusammenzufassen.

TesterCache
TesterCache
  • www.mql5.com
MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах  Tester\cache\*.opt . И умеет экспортировать/импортировать их. Данная библиотека позволяет работать с этими данными. Сценарии Вывод более полных данных, чем это предоставляет MT5-тестер. Создание критериев оптимизации в любое время после проведенной...
 
Hey, das sieht nach einem tollen Tool aus. Ich versuche, Google Translate zu benutzen, aber ich verstehe einfach nicht, wie man damit arbeitet. Gibt es eine Anleitung auf Englisch? Ich verstehe nicht, an welchem Punkt ich es aktivieren und die Liste der Symbole, die mit meinem Experten getestet werden sollen, erstellen kann. Oder muss ich eine Code-Datei manuell bearbeiten und sie dann importieren? Vielen Dank!
 
Thierry Waltrich:
Hey, das sieht nach einem tollen Tool aus. Ich versuche, Google Translate zu benutzen, aber ich verstehe einfach nicht, wie man damit arbeitet. Gibt es eine Anleitung auf Englisch? Ich verstehe nicht, an welchem Punkt ich es aktivieren und die Liste der Symbole, die mit meinem Experten getestet werden sollen, erstellen kann. Oder muss ich eine Code-Datei manuell bearbeiten und sie dann importieren? Vielen Dank!

Es gibt hier Leute, die dieses Tool aktiv nutzen (oder darauf basieren). Es wäre toll, wenn sie Ihnen helfen könnten, es zu verstehen.

Leider habe ich so viel von meiner Arbeit mit der Community geteilt, dass ich nicht nur keine Zeit finde, konstruktiv auf Einsteigerfragen zu antworten, sondern ich habe auch fast aufgehört, meine Entwicklungen und Ergebnisse zu veröffentlichen.

 

Eine bequeme Methode, um bei der manuellen Analyse der Ergebnisse von Optimierungen Vorwärtstests durchzuführen.

// Vorwärtslauf aus der Tabelle der Optimierungsergebnisse (Ausführung im Terminal).
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/code/26132

sinput datetime inForward = D'2020.01.01'; // Weiterleiten von

const bool Init = EventSetMillisecondTimer(100);

void OnTimer()
{
  static const string Forward = "[Tester]\r\nFromDate=" + TimeToString(inForward, TIME_DATE) +
                                "\r\n[TesterInputs]\r\ninBestInterval_Action=true";
  static bool Ready = true;
  static bool Flag = false;
  
  static string Settings;
  
  if (Ready)
    Ready = MTTESTER::IsReady();
  else if (MTTESTER::IsReady())
    Ready = (Flag = !Flag) ? !(MTTESTER::GetSettings(Settings) && MTTESTER::SetSettings2(Forward) && MTTESTER::ClickStart(false))
                           : MTTESTER::SetSettings2(Settings);
}

Ich öffne die Optimierungstabelle eines beliebigen Expert Advisors und klicke auf "Run single test" für die gewünschten Passagen. Ich erhalte die Ausgabe des Durchlaufs.

Das spart eine Menge Zeit (bei mir dauert ein Durchgang ein paar Sekunden), insbesondere mit BestInterval.

 
Thierry Waltrich:
Hey, das sieht nach einem tollen Tool aus. Ich versuche, Google Translate zu benutzen, aber ich verstehe einfach nicht, wie man damit arbeitet. Gibt es eine Anleitung auf Englisch? Ich verstehe nicht, an welchem Punkt ich es aktivieren und die Liste der Symbole, die mit meinem Experten getestet werden sollen, erstellen kann. Oder muss ich eine Code-Datei manuell bearbeiten und sie dann importieren? Vielen Dank!

Sie müssen den Experten, den Sie optimieren möchten, im Strategietester auswählen und die zu optimierenden Parameter festlegen.

Kompilieren Sie dann Example1 und ziehen Sie es auf einen beliebigen Chart (run), dann wird Ihr Expert Advisor auf den Charts und Timeframes laufen, die im Code von Example 1 eingestellt sind.

Sie benötigen also einen MultitesterExpert, der als Automat Ihren optimierten Expert auf verschiedenen _Symbolen / _Perioden etc. ausführt.

Wenn Sie die Kommentare in Beispiel 1 und Beispiel 2 studieren, werden Sie in der Lage sein, Ihren eigenen MultitesterExpert auf dieser Grundlage zu erstellen.

 

GetSettings(Str) unterbricht den Test bei lokalen Agenten.

GetSettings(Str) wird verwendet, um herauszufinden, welche Art der Tick-Modellierung im Test verwendet wird.

Beispiel:

Ich habe den folgenden Code zum Moving Average Expert Advisor-Beispiel hinzugefügt:

#include <fxsaber\MultiTester\MTTester.mqh>

int OnInit()
  {

// Standardcode des Expertenberaters

//Abfrage der Testereinstellungen
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      Print(Str);
     }
   return(INIT_SUCCEEDED);
  }

Ich führe die Optimierung mit vollständiger Aufzählung der Parameter durch, woraufhin der Tester dazu neigt, von einer beliebigen Registerkarte zur Registerkarte "Einstellungen" zu wechseln.

Eine unverhältnismäßig große Anzahl von Gebäuden wird auf lokale Agenten verteilt und nicht ausgeführt.


Können Sie selbst etwas vorschlagen?

Dateien:
 
Sunriser:

Können Sie mir einen Tipp geben?

Führen Sie in OnTesterInit GetSettings aus und übergeben Sie die erhaltenen Werte von dort über ParametersSetRange an die Variable sinput.

Bei lokalen Agenten wird diese sinput-Variable Ihnen sagen, was der Modus ist.


Der Modus kann durch echte Ticks ohne DLL bestimmt werden.