MetaTrader 5 Strategy Tester: Bugs, Bugs, Verbesserungsvorschläge - Seite 56

 
2314. Die Provision in Prozenten pro Handelsmodus wird nicht korrekt berechnet. + kann nicht weiter als bis zur zweiten Dezimalstelle über die grafische Benutzeroberfläche eingestellt werden (dies kann über eine Datei erfolgen).
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Expert Advisors: Validieren

fxsaber, 2020.02.06 17:20

SZZY Leider erlaubt es MT5-Tester selbst nicht, benutzerdefinierte Optimierungskriterien (keine Auswahl) außerhalb des EA-Quellcodes vorzuschreiben. Obwohl es dafür keine architektonischen Hindernisse gibt.

Jetzt können Sie einen beliebigen Pass aus den Optimierungsergebnissen auswählen, der Ihrem Kriterium entspricht, den besten zu wählen.

Aber es ist unmöglich, ein eigenes Optimierungskriterium festzulegen, wenn es nur EX5 gibt. Meines Erachtens könnte ein solches Optimierungskriterium als EA eingestellt werden, bei dem nur OnTester- und TesterStatistikdaten verfügbar sind. Höchstwahrscheinlich gibt es so etwas in den Plänen der Entwickler nicht. Daher nur eine Sondierung.

 

Tut mir leid, dass dies maschinell aus dem Englischen ins Russische übersetzt wurde, aber ich habe diesen Thread nur gefunden, um Fehler zu melden.

Es scheint ein Problem mit der Metatrader 5-Plattform zu geben, wenn ich einen visuellen Debugging-Test im Editor starte und einen Haltepunkt erreiche und Strg + F drücke.

Indikatoren (alle, auch aktivierte) neu zeichnen / 1 Balken verschieben beim Drücken von ctrl + f beim Debuggen von historischen Daten)

Wiedergabe:

  1. Öffnen Sie Metatrader 5.
  2. EMA 5 und EMA 10 hinzufügen (eingebaut)
  3. Stellen Sie Strategytester auf Täglich, Simulation: Ticks oder Echte Ticks (beide verursachen das gleiche Problem)
  4. Öffnen Sie den Metatrader 5-Editor
  5. Öffnen Sie die mitgelieferte ExpertMACD.mqh
  6. Setzen Sie einen Haltepunkt in Zeile 651 in Expert.mqh
  7. Starten Sie mit CTRL + F5, um mit historischen Daten zu arbeiten.
  8. Setzen Sie den Cursor auf einen vollständig geschlossenen Kerzenständer (mindestens 1-2 Tage zurück)
  9. Wenn der Haltepunkt erreicht ist, aktivieren Sie den visuellen Tester und drücken Sie Strg + F
  10. Alle Indikatoren verschieben sich um 1 Balken nach links, sobald Sie im Fenster des visuellen Testers die Tastenkombination STRG + F drücken und ein Fadenkreuz erhalten.
  11. Fahren Sie vom Haltepunkt aus fort, und alle Indikatoren bewegen sich 1 Takt nach rechts.
  12. Die Schritte 8 bis 11 können wiederholt werden und bewirken immer das Gleiche.

Das Problem ist, dass bei der Überprüfung, ob der EA tatsächlich tut, was er tun soll, ist es nicht möglich, wenn die Balken verschoben sind im Vergleich zu dem, was der EA sieht.

Dies ist bei Indikatoren kein Problem, da dies auch bei eingebauten EA-Beispielen sowie bei eingebauten Indikatoren der Fall ist.


Dieses YouTube-Video demonstriert das Problem bei etwa 0:25, drücken Sie Strg + F.

https://youtu.be/_fyCv3Zla9A

 
fxsaber:

Jetzt können Sie einen beliebigen Durchgang aus den Optimierungsergebnissen auswählen, der Ihren Kriterien für die Auswahl des besten Durchgangs entspricht.

Aber es ist unmöglich, ein eigenes Optimierungskriterium zu setzen, wenn es nur EX5 gibt. Meiner Meinung nach könnte ein solches Optimierungskriterium als EA gesetzt werden, bei dem nur die Daten der Funktionen OnTester und TesterStatistics verfügbar sind. Höchstwahrscheinlich gibt es so etwas in den Plänen der Entwickler nicht. Aus diesem Grund ist nur die Sondierung verfügbar.

Haben Sie es erst jetzt gemerkt? Wenn Sie ein schlechtes Modell der Handelsstrategie haben, hilft keine Optimierung mehr.

Mathematische Modellierung oder maschinelles Lernen können dieses Problem also nicht lösen. Sie müssen genau wissen, was sich in der Blackbox befindet.

 
Petros Shatakhtsyan:

Haben Sie das erst jetzt erkannt?

Ich verstehe das Muster solch unlogischer Fragen nicht.

Wenn Sie ein schlechtes Handelsstrategiemodell haben, hilft keine noch so gute Optimierung.

Wenn jemand schlecht ist, ist er natürlich nicht gut. Das ist genau das, wonach sich der obige Satz anhört.

D.h. die mathematische Modellierung oder das maschinelle Lernen sind der Aufgabe nicht gewachsen. Man muss genau wissen, was sich in der Blackbox befindet.

In diesem Satz geht es um eine Art von Aufgabe. Und dass man etwas für einen bestimmten Zweck wissen muss. Im Allgemeinen ist es besser, wenn die Antworten nicht wie ein abgerissenes Stück Gespräch mit sich selbst aussehen.

 
fxsaber:

Es gibt keine Grale.

Es gibt sie.

 
Алексей Тарабанов:

Prüfen.

Die Behauptung der Graalität (vor der Korrektur des Testermodus) wurde durch den Code bestätigt.

 

In einigen der letzten Builds wurde der Import der tst-Datei unvollständig - die Registerkarte "Einstellungen" wird nicht mit der in tst aktualisiert.

Zuvor importieren Sie, und in den Einstellungen können Sie sofort sehen, bei welchen Werten das Ergebnis erzielt wurde. Ich kann es jetzt nicht sehen. Ist es möglich, zurück zu wechseln?

 
Lange Zeit habe ich nach dem Grund für das seltsame Verhalten des Testers bei echten Ticks gesucht. Ich habe es gefunden.
const bool Init = EventSetTimer(1);

void Func()
{
  static datetime PrevTime = 0;
  
  const datetime time = TimeTradeServer();
  
  if (time < PrevTime)
    DebugBreak(); // Срабатывает
  
  PrevTime = time;
}

void OnTick()
{
  Func();
}

void OnTimer()
{
  Func();
}

Die Serverzeit läuft vorwärts und kommt dann zurück. Dies geschieht auf einem echten Handelsserver, aber es gelang, ein Replay auf einem benutzerdefinierten Symbol zu erstellen.


Lasst uns laufen

sinput datetime inDateFrom = D'2020.01.01';

void OnStart()
{
  const string Name = "TEMP12345";                                                           // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                          // Имя оригинального символа

  MqlTick Ticks[];
  
  const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики.
    
  if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true))    // Создали символ на основе EURUSD.
  {
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);                                            // Поместили в него историю EURUSD.        
    
    CustomRatesDelete(Name, D'2020.01.03 23:00', D'2020.01.04 00:00');                       // Удалили несколько баров.
  }
}


Es wird ein Symbol mit Tick-Historie erstellt, bei dem jedoch mehrere Balken gelöscht werden. Dann beginnen wir mit dem Debugging des obigen EA in diesem Modus.

[Tester]
Symbol=TEMP12345
Period=M1
Optimization=0
Model=4
FromDate=2020.01.01
ToDate=2020.01.08
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6


Es hört auf.

Sie können sehen, dass die Zeit in einer zweiten Schleife vergangen ist.

 
fxsaber:

In einigen der letzten Builds wurde der Import der tst-Datei unvollständig - die Registerkarte "Einstellungen" wird nicht mit der in tst aktualisiert.

Zuvor importieren Sie, und in den Einstellungen können Sie sofort sehen, bei welchen Werten das Ergebnis erzielt wurde. Ich kann es jetzt nicht sehen. Ist es möglich, zurück zu wechseln?

Ja, das können wir.
Grund der Beschwerde: