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

 
Slava:
Und wenn der Handel beginnt, wird ein anderes Symbol geladen - EURUSD

Nein, es wird nicht geladen. Im Visualisierer ist alles korrekt - ein Symbol während des Handels.

 
fxsaber:

Bei dem benutzerdefinierten Symbol entsprechen alle Währungen der Kontowährung. D.h. der Modus ist fast ähnlich wie "nach Pips", keine Notwendigkeit, andere Symbole zu verbinden, um Marge zu berechnen, etc.

Auf dem Server, wo es eine Kommission gibt (reproduziert auf ForexTimeFXTM-Demo01, EUR, Hedge) im Modus durch reale Ticks nach dem ersten Handel wird ein anderes Symbol von den standardmäßigen angeschlossen. Und natürlich zählt alles viel langsamer, als es sollte.


Auf dem MQ-Demo-Server, auf dem keine Provisionen anfallen, funktioniert alles korrekt (und das fälschlicherweise, weil die Prüfung der Korrektheit der Provisionen auf dem Haupt-Demo-Server nicht durchgeführt werden kann).


Wird dieses Problem reproduziert?

Aufgrund dieses Fehlers wird die Optimierung stark verlangsamt, wenn eine Kommission benötigt wird.

 

Ist es möglich, die Positionsnummer auf diesem Schieberegler anzuzeigen?

Ich klicke auf den Schieberegler und benutze die LINKS/RECHTS-Tasten, um die Geschwindigkeit zu ändern. Manchmal wird die vorletzte Geschwindigkeit benötigt. Sie können nicht genau sehen, wo sich der Schieberegler im Moment befindet. Und es ist sehr einfach, die letzte Geschwindigkeit zu wählen.

Sobald es ausgewählt ist, bleibt der Viewer stehen. Und Sie können alle Ergebnisse wegwerfen. Eine digitale Geschwindigkeitshilfe wie die auf dem Bildschirm wäre schön.


ZS Es hat sich herausgestellt, dass die maximale Geschwindigkeit im Visualizer nicht zu einem Hänger führt, wenn man keinen Handel tätigt. Es hat sich herausgestellt, dass fast der gesamte Schwebezustand auf Handelsgeschäfte zurückzuführen ist.

 

Es gibt einige Leute, die nicht verstehen, warum der MT5-Tester andere Backtest-Ergebnisse anzeigt als die bisher verwendeten Tester der Konkurrenz.

Nachstehend finden Sie eine Reproduktion davon.


Auf MQ-Demo, EUR, Hedge im Tester setzen wir diese EA und aktivieren die DLL (wir brauchen sie, um HTML-Berichte automatisch in einem Browser zu öffnen).

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#define  VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#define  REPORT_TESTER             // В тестере будут автоматически записываться отчеты
//#define REPORT_TESTER_INPUTS      // В отчете одиночного прохода будут видны входные параметры советника - требует разрешения DLL.
#define  REPORT_BROWSER            // Создание отчета с запуском браузера - требует разрешения DLL.
#include <Report.mqh> // https://www.mql5.com/ru/code/18801

int OnInit()
{
  // Если стоп/фриз-уровень не нулевой - выходим.
  return(!MQLInfoInteger(MQL_TESTER) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL));
}

void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Tick;
    
    if (SymbolInfoTick(_Symbol, Tick) && Tick.bid && Tick.ask/* && Tick.last*/)
    {
      // Сформировали комментарий для ордера: время и цена текущего тика.
      const string comment = TimeToString(Tick.time, TIME_SECONDS) + "." + IntegerToString(Tick.time_msc % 1000, 3, '0') + " " + 
                             DoubleToString(Tick.bid, _Digits) + "/" + DoubleToString(Tick.ask, _Digits);
                             
      OrderSend(_Symbol, OP_BUYLIMIT, 1, Tick.ask, 0, 0, 0, comment); // Выставляем BuyLimit по текущей цене

      FirstRun = false;
    }  
  }    
  else if (!OrdersTotal()) // Если нет открытых ордеров - выходим.
    TesterStop();
  
  if (OrderSelect(0, SELECT_BY_POS) && (OrderType() <= OP_SELL)) // Выставляем TP позиции по текущей цене
    OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderClosePrice(), 0);  
}


Drücken Sie auf der Registerkarte "Einstellungen" des Strategietesters die Tastenkombination STRG+V für diese Zeilen.

[Tester]
Symbol=EURUSD
Period=M1
Optimization=0
Model=4
FromDate=2019.12.13
ToDate=2019.12.14
ForwardMode=0
Deposit=100000
Currency=EUR
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=0
[TesterInputs]
VirtualTester=false
ReverseDeals=false
Report=true


Laufen. Der Browser zeigt einen Bericht an.

Setzen Sie dannVirtualTester=true und führen Sie es erneut aus, um einen weiteren Bericht im Browser zu erhalten.


Das erste Mal handelten wir mit dem integrierten MT5 Strategy Tester, das zweite Mal mit einem Drittanbieter.


Vergleichen wir die Berichte. Hier sind sie in einem Bild zu sehen (oben - der Standard MT5-Tester, unten - der von einem Drittanbieter).



Es ist deutlich zu sehen, dass die Ergebnisse sehr unterschiedlich sind. Eröffnung und Schließung fallen zeitlich und preislich nicht zusammen. Im Allgemeinen kann jeder selbst entscheiden, wo der Fehler liegt.


SZZ Die Abhilfe hat sich ergeben.

 
fxsaber:

Sie können deutlich sehen, dass die Ergebnisse sehr unterschiedlich sind. Öffnungs- und Schließzeiten sowie Preise stimmen nicht überein. Alles in allem kann jeder für sich selbst entscheiden, wo der Fehler liegt.

Warum hat MT5 das Limit nach nur 2,6 Sekunden ausgeführt? Hat sich der Preis unmittelbar nach der Festlegung auf die andere Seite bewegt? Oder gab es keine Zecken?

 
Andrey Khatimlianskii:

Warum hat MT5 das Limit erst nach 2,6 Sekunden ausgeführt? Hat sich der Preis unmittelbar nach der Festlegung auf die andere Seite bewegt? Oder war da keine Zecke?

Der nächste Tick, der den Grenzwert erfüllt, war nach dieser Zeit. Natürlich ist es im Tester möglich, ein Limit zum aktuellen Kurs zu setzen und es nicht ausführen zu lassen. Sie könnten zum Beispiel eine Grenze bei einem Extremwert setzen.

 
fxsaber:

Der nächste Tick, der den Begrenzer befriedigte, kam nach einer solchen Zeit. Natürlich ist es im Tester möglich, ein Limit zum aktuellen Kurs zu setzen und es nicht ausführen zu lassen. Es ist zum Beispiel möglich, eine Grenze an einem Extremwert zu setzen.

Geben Sie an, worüber wir sprechen: Forex, Exchange, Rann?

Im Devisenhandel gibt es keine Limit-Order und kann es auch nicht geben.

 
Sergey Chalyshev:

Können Sie angeben, worüber wir sprechen: Forex, Börse, Rann?

Wir sprechen über den Tester.

 
fxsaber:

Es geht um den Tester.

Der Tester funktioniert bei Devisenkonten und Forex-Konten unterschiedlich.
 
Sergey Chalyshev:
Der Tester funktioniert bei Aktien- und Devisenkonten unterschiedlich.

Es sind Anweisungen für die Wiedergabe auf jedem Zeichen verfügbar. Wenn Sie Fragen haben, lassen Sie es einfach laufen.