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

 
Alexey Viktorov:

Quindi non sei riuscito a registrare un account sulla beta?

No.
 

L'MT4-Tester aveva un tale assistente per i GA.


Ha aiutato notevolmente a ridurre il tempo di ottimizzazione. Per esempio, se l'equilibrio è a terra, perché andare oltre? MT5 non ce l'ha. Ecco perché dobbiamo costruire cose così ragionevoli nei nostri EA. Non credo che molti autori lo facciano. Quindi sarebbe probabilmente ragionevole trasferire tale funzionalità anche a MT5-Tester.


Anche gli assistenti di GA sono rilevanti. Ecco la più semplice.

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

Consulenti esperti: convalidare

fxsaber, 2020.01.29 15:55

Raccomando di usare nei miei EA un simile aiutante GA.

sinput int inMinTrades = 500; // Минимальное количество трейдов (позиций).
sinput int inMaxTrades = 90000; // Максимальное количество трейдов (позиций).

double OnTester()
{
  return(((TesterStatistics(STAT_TRADES) >= inMinTrades) && (TesterStatistics(STAT_TRADES) <= inMaxTrades)) ? TesterStatistics(STAT_PROFIT) : 0);
}

Non permette a GA di andare dalla parte dei risultati statistici deboli. Così aumenta la qualità e la velocità dei risultati. E per Validate filtra anche dai passaggi con valori statistici deboli.


Per esempio, quando riaggiusto in base ai calcoli di tre mesi, imposto il numero minimo di scambi > 100. Altrimenti c'è una maggiore probabilità di incontrare un passaggio in GA che dà il più grande profitto a causa del piccolo numero di operazioni (casuali) di successo. Chiaramente, un tale passaggio non dovrebbe avere nulla a che fare con la scelta di un'ulteriore negoziazione.

Penso che sia ragionevole per il tester avere questi aiutanti. Tanto più che non richiede alcun costo computazionale.

 

Ciao a tutti.

Ho un robot multi-mercato. Commercia l'arbitraggio statistico, gli spreads. Il robot è progettato in modo che prende gli strumenti dalla panoramica del mercato stesso o li prende dal file spreads (che si trova nella directory principale del programma nella cartella dei file). Il robot analizza i dati, seleziona le coppie di strumenti più promettenti e le scambia.

Domanda, il tester delle strategie mt5 sarà in grado di testarlo? Se gli strumenti di trading non sono elencati nei parametri di input del robot, come di solito è, ma gli strumenti sono presi dalla panoramica del mercato o dalla cartella Files, il tester è destinato a funzionare?

 
Peresvet Timonkin:

Ciao a tutti.

Ho un robot multi-mercato. Commercia l'arbitraggio statistico, gli spreads. Il robot è progettato in modo che prende gli strumenti dalla panoramica del mercato stesso o li prende dal file spreads (che si trova nella directory principale del programma nella cartella dei file). Il robot analizza i dati, seleziona le coppie di strumenti più promettenti e le scambia.

Domanda, il tester delle strategie mt5 sarà in grado di testarlo? Se gli strumenti di trading non sono elencati nei parametri di input del robot, come di solito è, ma gli strumenti sono presi dalla panoramica del mercato o dalla cartella Files, il tester è destinato a funzionare?

La panoramica del mercato è generata dalle chiamate dal codice ai simboli. Per un tester, ci sarà sicuramente una lista di valute in qualsiasi variante. E nel mondo reale non ci sono problemi.

Quello che c'è nello screenshot è per l'ottimizzazione.
 
Alexey Viktorov:

La revisione del mercato è formata da chiamate di simboli dal codice. Per un tester ci deve essere una lista di valute in qualsiasi variante. E nel mondo reale non ci sono problemi.

Quello che c'è nello screenshot è per l'ottimizzazione.

Ho capito bene che non si può testare con questo tipo di configurazione come faccio io?

il tester non può prendere i dati dalla revisione del mercato dalla storia?

E per quanto riguarda il file in cui sono prescritti gli strumenti di trading, il tester non può nemmeno lavorarci?

Ho appena letto il manuale, ma non ho trovato nulla al riguardo, dice che posso testare e ottimizzare strategie multiple, ma non ne so molto.

 
Peresvet Timonkin:

Ho capito bene che non si può testare con questo tipo di configurazione come faccio io?

il tester non può prendere i dati dalla revisione del mercato dalla storia?

E per quanto riguarda il file in cui sono prescritti gli strumenti di trading, il tester non può nemmeno lavorarci?

Ho appena letto l'intero manuale per il tester, non ho trovato una parola su di esso, dice che posso testare e ottimizzare le strategie multirate, ma non ne so molto.

Se ti impegni, puoi fare qualsiasi cosa. Per esempio, in OnInit() richiedere i tick delle valute richieste e quindi aggiungerli alla panoramica del mercato e poi lavorare con la panoramica del mercato. Ma in questo caso, in qualsiasi modo lo si guardi, ci dovrebbe essere una lista di valute. Possiamo avere due opzioni: lavorare con la lista e lavorare con quelli del rapporto di mercato. Di conseguenza, dobbiamo impostare una condizione in OnInit() se lavorare nel tester, quindi lavorare solo con la lista. C'è un tale consulente esperto nel mercato.

Per quanto riguarda il file: è ovviamente possibile, ma dobbiamo considerare la posizione del file. Deve trovarsi nella cartella del tester o nella cartella condivisa da tutti i terminali. O inserirlo come risorsa.
 

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.01.22 23:08

La mia build 2300. In modalità Pips ho iniziato a prendere in considerazione il volume, grazie!


Tuttavia, il profitto dei trade InOut in questa modalità è calcolato in modo errato.


Se si esegue in modalità normale, il profitto è corretto.



Pertanto, la modalità pips non funziona ora su Netting (mostra un profitto sovrastimato).


2310 è rilevante. È impossibile utilizzare la modalità pips su Netting.

 

Nel 2310 ho notato che il mio EA, che fa frequenti modifiche, non può essere profilato.

Ne ho abbozzato uno di prova.

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);
  else
    OrderModify(Ticket, Ask - inOffset * _Point, 0, 0, 0);
}

Riproduce l'impossibilità di profilare letteralmente subito in modalità tick reale, poiché tutto è molto lento.


Tuttavia, provoca anche l'HOLD del terminale quando si esegue su tick reali (anche in modalità pips) un singolo passaggio! Solo una specie di assassino.


Se fai la sua Ottimizzazione (sul primo parametro), va via senza problemi, ma fa venire in mente qualche brutto pensiero sulle prestazioni...


HH Se lo eseguite nel Visualizer e lo chiudete prima che sia finito, il terminale si blocca.

 
fxsaber:

Se lo ottimizzi (per il primo parametro), va bene, ma ti vengono dei brutti pensieri sulle prestazioni...

Posso solo confrontarlo con la variante Virtual.

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

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

#define  VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#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);
  else
    OrderModify(Ticket, Ask - inOffset * _Point, 0, 0, 0);
}


Variante normale.

optimization finished, total passes 5
optimization done in 1 minutes 04 seconds
shortest pass 0:00:12.560, longest pass 0:00:13.608, average pass 0:00:12.808
local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


Con Virtual.

optimization finished, total passes 5
optimization done in 0 minutes 06 seconds
shortest pass 0:00:00.954, longest pass 0:00:02.060, average pass 0:00:01.231
local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)


Tester è 13 volte più lento sull'EA elementare in modalità Pips dove non ci sono nemmeno controlli! Costruire 2310.

 
fxsaber:

Il tester è 13 volte più lento su un EA elementare in modalità pips, dove non ci sono nemmeno controlli! Costruire 2310.

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 sta impostando BuyLimit sul primo tick. Non c'è altro!

Motivazione: