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

 

I tasti di scelta rapida per il controllo della velocità non funzionano nel Visualizzatore.



ZS Funziona. A quanto pare, si tratta di una specie di bug complicato.

 
Avendo testato l'Expert Advisor su tick reali con diversi broker su MT5 con la qualità di modellazione del 99-100% con gli stessi parametri di input ho ottenuto risultati assolutamente diversi: da profitti cosmici a perdite. Prima di questo ho lasciato volutamente MT4 perché è più difficile ottenere la stessa qualità di modellazione lì. Quindi qual è stato il risultato? Come si comporterebbe l'Expert Advisor nel trading reale? Forse qualcuno mi darà un buon consiglio?
 
ganri:
Avendo testato l'Expert Advisor su tick reali in diversi broker utilizzando MT5 con la qualità di modellazione del 99-100% con gli stessi parametri di input, ho ottenuto risultati assolutamente diversi: da un profitto cosmico a una perdita. Prima di questo ho lasciato volutamente MT4 perché è più difficile ottenere la stessa qualità di modellazione lì. Quindi qual è stato il risultato? Come si comporterebbe l'Expert Advisor nel trading reale? Forse qualcuno mi darà un buon consiglio?

Il tester+advisor è una funzione matematica che assegna un numero (profitto) ad ogni vettore (serie di numeri - citazioni).

Di conseguenza, (in generale) vettori diversi significano profitti diversi. E questi profitti non devono obbedire a nessuna regola (per esempio, essere positivi).


Broker diversi significano vettori diversi (quotazioni). Non importa se sono zecche, barre o altro. Ciò che conta è che i vettori sono diversi.

 
fxsaber:

Il tester+advisor è una funzione matematica che assegna un numero (profitto) ad ogni vettore (serie di numeri - citazioni).

Di conseguenza, (in generale) vettori diversi significano profitti diversi. E questi profitti non devono obbedire a nessuna regola (per esempio, essere positivi).


Broker diversi significano vettori diversi (quotazioni). Non importa se sono zecche, barre o altro. La cosa principale è che i vettori sono diversi.

Per quanto ho capito, in questa situazione, dovremmo scegliere il broker che ha i migliori risultati nel testare l'EA e lavorare con esso. Grazie.

 

In ME è logico separare queste impostazioni di debug.

Per esempio, dovresti eseguire il debug nel Terminale su EURUSD, e nel Tester su EURUSD_Custom. Ora è impossibile configurarlo in quel modo.

Forse, ha senso creare per il Tester un campo di testo di impostazioni dove possiamo inserire tali impostazioni.

[Tester]
Period=M1
Optimization=0
Model=0
FromDate=2019.07.22
ToDate=2019.07.24
ForwardMode=0
Deposit=10000
Currency=USD
ProfitInPips=0
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=1

Allora avremo una piena flessibilità di impostazioni. La GUI non è sovraccarica.

Stringa di ricerca: Uluchshenie 001.

 
Solo un agente è abilitato. La sua finestra di visualizzazione, una volta fatta, non viene chiusa. Nel Tester, l'ottimizzazione è selezionata e avviata.
2020.02.15 11:23:01.818 Tester  complete optimization started
2020.02.15 11:23:01.855 Core 1  agent still started in visual mode

Il pulsante rosso Stop rimane acceso anche se si chiude il Viewer. Non succede niente, bisogna premere a mano Stop. Dopo di che cede.

2020.02.15 11:25:52.278 Tester  optimization finished, total passes 0
2020.02.15 11:25:52.278 Statistics      optimization done in 2 minutes 51 seconds
2020.02.15 11:25:52.279 Tester  stopped by user

E crea anche un file opt con zero passaggi.


Probabilmente bisogna correggere il comportamento qui.

Stringa di ricerca: Uluchshenie 002.
 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

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

fxsaber, 2020.02.11 01:58

A lungo ha cercato la causa dello strano comportamento del tester su zecche reali. Trovato.
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();
}

Il tempo del server scorre in avanti e poi torna indietro. Succede sul server commerciale reale, ma sono riuscito a creare la riproduzione sul simbolo personalizzato.


Esegui

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');                       // Удалили несколько баров.
  }
}


Verrà creato un simbolo con la storia dei tick, ma con diverse barre cancellate. Poi iniziamo il debug dell'EA di cui sopra in questa modalità.

[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


Si ferma.

Possiamo vedere che il tempo ha fatto un secondo loop temporale.

Stringa di ricerca: Oshibka 002.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

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

fxsaber, 2020.02.01 13:43

Anche questo EA è più del doppio più lento di Virtual in modalità pips.

input int inFakeRange = 0;
sinput int inOffset = 10000;

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

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  static long Ticket = -1;
  
  if (Ticket == -1)
    Ticket = OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - inOffset * _Point, 0, 0, 0);
}

Perché succede questo? L'intero Expert Advisor è sul primo tick impostando BuyLimit. Nient'altro!

Stringa di ricerca: Uluchshenie 003.
 
Fico!
2020.02.18 13:24:06.618 Core 1  pass 0 returned result 0 in 0:00:05.288 + history synchronization 0:00:03.098
 

Non è possibile impostare la dimensione del tick a meno o uguale a uno.

Se si prescrive e poi si inserisce di nuovo, il valore è zero. Per valori maggiori di uno, tutto va bene.

Stringa di ricerca: Uluchshenie 004.