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

 
2314. La commissione in percentuale per modalità di scambio non è calcolata correttamente. + non può essere impostato oltre il secondo punto decimale tramite la GUI (può essere fatto tramite un file).
 

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

Consulenti esperti: convalidare

fxsaber, 2020.02.06 17:20

SZZY Purtroppo, MT5-Tester stesso non permette di prescrivere un criterio di ottimizzazione personalizzato (non di selezione) al di fuori del codice sorgente EA. Anche se non ci sono ostacoli architettonici per farlo.

Ora puoi selezionare qualsiasi passaggio dai risultati di Optimization in base al tuo criterio di scelta del migliore.

Ma è impossibile impostare il proprio criterio di ottimizzazione se c'è solo EX5. Dal mio punto di vista, un tale criterio di ottimizzazione potrebbe essere impostato come un EA in cui sono disponibili solo i dati OnTester e TesterStatistics. Molto probabilmente, non c'è niente del genere nei piani degli sviluppatori. Pertanto, solo uno scandaglio.

 

Mi dispiace che questo sia stato tradotto a macchina in russo dall'inglese, ma ho trovato solo questo thread, per segnalare i bug.

Sembra esserci un problema con la piattaforma Metatrader 5 quando inizio un test visivo di debug nell'editor e raggiungo un punto di interruzione e premo Ctrl + F.

Gli indicatori (tutti, anche abilitati) ridisegnano / spostano 1 barra quando si preme ctrl + f durante il debug dei dati storici)

Riproduzione:

  1. Aprire Metatrader 5.
  2. Aggiungere EMA 5 e EMA 10 (incorporato)
  3. Impostare Strategytester su Daily, Simulation: ticks o Real ticks (entrambi causano lo stesso problema)
  4. Aprire l'editor di Metatrader 5
  5. Aprire il file ExpertMACD.mqh incluso
  6. Impostare un punto di interruzione sulla linea 651 in Expert.mqh
  7. Iniziare con CTRL + F5 per eseguire sui dati storici
  8. Posiziona il cursore su una candela completamente chiusa (almeno 1-2 giorni indietro)
  9. Quando il punto di interruzione viene raggiunto, attivare il tester visivo e premere Ctrl + F
  10. Tutti gli indicatori si spostano di 1 barra a sinistra una volta che si preme CTRL + F nella finestra del tester visivo e si ottiene un mirino.
  11. Continua dal punto di rottura e tutti gli indicatori si muoveranno di 1 barra a destra.
  12. I passi da 8 a 11 possono essere ripetuti e fare sempre lo stesso.

Il problema è che quando si controlla se l'EA sta effettivamente facendo ciò che si suppone, non è possibile quando le barre sono spostate rispetto a ciò che l'EA vede.

Questo non è un problema con gli indicatori, in quanto è anche il caso degli esempi di EA incorporati così come degli indicatori incorporati.


Questo video di YouTube dimostra il problema a circa 0:25, premi Ctrl + F.

https://youtu.be/_fyCv3Zla9A

 
fxsaber:

Ora puoi selezionare qualsiasi passaggio dai risultati dell'ottimizzazione in base al tuo criterio di selezione del miglior passaggio.

Ma è impossibile impostare il proprio criterio di ottimizzazione se c'è solo EX5. Dal mio punto di vista, tale criterio di ottimizzazione potrebbe essere impostato come un EA, dove sono disponibili solo i dati delle funzioni OnTester e TesterStatistics. Molto probabilmente, non c'è niente del genere nei piani degli sviluppatori. Ecco perché è disponibile solo l'audio.

Se hai un cattivo modello della strategia di trading, nessuna ottimizzazione ti aiuta.

Quindi la modellazione matematica o l'apprendimento automatico non possono risolvere questo problema. Bisogna sapere chiaramente cosa c'è nella scatola nera.

 
Petros Shatakhtsyan:

Ve ne siete accorti solo ora?

Non capisco lo schema di queste domande illogiche.

Se hai un cattivo modello di strategia di trading, nessuna quantità di ottimizzazione aiuta.

Naturalmente, se qualcuno è cattivo, non è buono. È esattamente quello che sembra la frase di cui sopra.

Cioè la modellazione matematica o l'apprendimento automatico non sono all'altezza del compito. Bisogna sapere chiaramente cosa c'è nella scatola nera.

Questa frase parla di un compito di qualche tipo. E che hai bisogno di sapere qualcosa per qualche scopo. In generale, è meglio che le risposte non sembrino un pezzo di conversazione strappato con se stessi.

 
fxsaber:

Non ci sono graal.

Ci sono.

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

Controllare.

L'affermazione della graalità (prima della correzione della modalità Tester) è stata confermata dal codice.

 

In alcune delle ultime build l'importazione del file tst è diventata incompleta - la scheda Impostazioni non viene aggiornata a quella in tst.

In precedenza, si importa e in Impostazioni si può immediatamente vedere a quali valori è stato ottenuto il risultato. Ora non riesco a vederlo. È possibile tornare indietro?

 
Per molto tempo ho cercato la ragione dello strano comportamento del tester nei tic 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. Questo accade su un server commerciale reale, ma sono riuscito a creare un replay su un simbolo personalizzato.


Corriamo

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.

Si può vedere che il tempo è passato in un secondo ciclo.

 
fxsaber:

In alcune delle ultime build l'importazione del file tst è diventata incompleta - la scheda Impostazioni non viene aggiornata a quella in tst.

In precedenza, si importa e in Impostazioni si può immediatamente vedere a quali valori è stato ottenuto il risultato. Ora non riesco a vederlo. È possibile tornare indietro?

Sì, possiamo.