MetaTrader 5 Strategy Tester: bug, errori, suggerimenti per il miglioramento - pagina 41

 
Slava:
E quando il trade inizia, caricherà un altro simbolo - EURUSD

No, non si carica. Guardando nel visualizzatore, tutto è corretto - un simbolo durante il trading.

 
fxsaber:

Il simbolo personalizzato ha tutte le valute uguali alla valuta del conto. Cioè il modo è quasi simile a "per pips", non c'è bisogno di collegare altri simboli per calcolare il margine, ecc.

Sul server dove c'è una commissione (riprodotto su ForexTimeFXTM-Demo01, EUR, Hedge) nella modalità per tick reali dopo il primo trade viene collegato un altro simbolo da quelli standard. E tutto, ovviamente, conta molto più lentamente di quanto dovrebbe.


Tutto funziona correttamente su MQ-Demo, dove non ci sono commissioni (e questo, erroneamente, perché il test di correttezza delle commissioni non può essere eseguito sul server demo principale).


Questo problema viene riprodotto?

A causa di questo bug, se è necessaria una commissione, l'ottimizzazione è gravemente rallentata.

 

È possibile visualizzare il numero di posizione su questo cursore?

Clicco sul cursore e uso i tasti LEFT/RIGHT della tastiera per cambiare la velocità. A volte è necessaria la penultima velocità. Non è possibile vedere visivamente dove si trova esattamente il cursore in questo momento. Ed è molto facile selezionare l'ultima velocità.

Una volta selezionato, il visore si blocca. E puoi buttare via tutti i risultati. Un aiuto digitale per la velocità come quello sullo schermo sarebbe bello.


ZS Si scopre che se non fai un trade, la velocità massima nel Visualizer non causa un blocco. Si scopre che l'hover quasi morto è dovuto alle operazioni di trading.

 

Ci sono alcune persone che non capiscono perché l'MT5 Tester mostra risultati di backtest diversi rispetto ai tester della concorrenza utilizzati in precedenza.

Qui sotto c'è una riproduzione di questo.


Su MQ-Demo, EUR, Hedge nel tester mettiamo questa EA e abilitiamo la DLL (ci serve per aprire automaticamente i rapporti HTML in un browser).

#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);  
}


Nella scheda delle impostazioni dello Strategy Tester premete CTRL+V per queste linee.

[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


Corri. Il browser farà apparire un rapporto.

Poi impostateVirtualTester=true ed eseguitelo di nuovo, ottenendo un altro rapporto nel browser.


La prima volta abbiamo scambiato con il MT5 Strategy Tester incorporato, la seconda volta, abbiamo scambiato con un tester di terze parti.


Confrontiamo i rapporti. Eccoli in una foto (in alto - il MT5-Tester standard, sotto - quello di terze parti).



Si vede chiaramente che i risultati sono molto diversi. L'apertura e la chiusura non coincidono per orario e prezzo. In generale, ognuno può decidere da solo dov'è l'errore.


SZZ Il workaround è venuto fuori.

 
fxsaber:

Potete vedere chiaramente che i risultati sono molto diversi. Gli orari di apertura e chiusura e i prezzi non corrispondono. Tutto sommato, ognuno può decidere da solo dove sia l'errore.

Perché MT5 ha eseguito il limite solo dopo 2,6 secondi? Il prezzo si è spostato dall'altra parte subito dopo averlo fissato? O non c'erano zecche?

 
Andrey Khatimlianskii:

Perché MT5 ha eseguito il limite solo dopo 2,6 secondi? Il prezzo si è spostato dall'altra parte subito dopo averlo impostato? O non c'era nessuna zecca?

Il prossimo segno di spunta che soddisfa il limite è stato dopo quell'ora. Naturalmente, nel Tester è possibile impostare un limite al prezzo corrente e non farlo eseguire. Per esempio, si potrebbe impostare un limite ad un estremo.

 
fxsaber:

Il prossimo ticchettio che soddisfa il limitatore è stato dopo un tempo simile. Naturalmente, nel Tester è possibile impostare un limite al prezzo corrente e non farlo eseguire. Per esempio, è possibile impostare un limite ad un estremo.

Specifica di cosa stiamo parlando: forex, exchange, rann?

Non ci sono ordini limite nel forex e non possono esserci.

 
Sergey Chalyshev:

Specifica di cosa stiamo parlando: forex, borsa, rann?

Stiamo parlando del Tester.

 
fxsaber:

Si tratta del Tester.

Il tester funziona in modo diverso nei conti di scambio e forex.
 
Sergey Chalyshev:
Il tester funziona in modo diverso sui conti azionari e forex.

Sono disponibili istruzioni per la riproduzione su qualsiasi personaggio. Qualsiasi domanda - basta eseguirla.