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

 
Slava:

Il tester si è fermato perché OnInit restituisce un codice non nullo

Ecco perché non ci sono statistiche.

Grazie, vi terrò informati. È interessante che i grafici siano ancora costruiti con i trade fatti.

 
Andrey Pogoreltsev:

Gli agenti sovraccaricano la memoria quando cercano di passare attraverso il messicano e non fare nulla, e il loro numero di compiti non fa che crescere. I registri mostrano i seguenti errori:

Dovete guardare i registri degli agenti.

L'errore 14 significa che il prezzo dell'offerta per questo strumento è pari a zero. Cioè, c'è una barra sinistra nella storia

PS È meglio eseguire un solo test. Allora l'errore è sicuro di colpire il registro dell'agente tester. Quando si ottimizza, gli errori vengono visualizzati solo fino a quando OnInit è completo

 

L'icona del gruppo scompare quando tutti sono chiusi, l'opzione per selezionare un parametro per l'ottimizzazione scompare.


input group "ORDER"
input double K = 30;
input double TP_0 = 500;
input double MaxLoss = 0.25;
input group "FUNCTIONS"
input bool MultipleStopOrders = true;
input bool CloseAllPosReversSig = true;
input group "MONEY MANAGEMENT SETTING"
input double StartLot = -0.01;
input group "ORDERS SETTING"
input int MagicNumber_ = 2000; // Magic Number
input int Slippage = 50;       // Slippage
 
Slava:

Grande richiesta di non cambiare i parametri di input dell'EA, che non sono impostati negli appunti.

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

Biblioteche: MultiTester

fxsaber, 2019.11.06 11:24

Quando si guarda un gran numero di cache di ottimizzazione dopo l'esecuzione di un multitester, si fa la stessa cosa.

  1. Si sceglie il miglior passaggio per eseguire una singola corsa (tramite PCM).
  2. Se ti piace, disattiva l'ottimizzazione e aumenta l'intervallo.
  3. Si preme Start.

La maggior parte del tempo viene spesa nella fase 2. Questo spesso porta a degli errori. Vorremmo semiautomatizzare. E c'è una soluzione!


Copia questo testo negli appunti.

[Tester]
Optimization=0
FromDate=2019.01.01


Poi basta premere CTRL+V nella scheda Impostazioni. Questo disabiliterà automaticamente l'ottimizzazione e imposterà la data giusta.


ZZZ aveva fretta di eccitarsi. I parametri di ingresso EA sono riportati ai valori predefiniti con questo buffer.

 
fxsaber:

Una grande richiesta di non cambiare i parametri di ingresso di un EA che non è impostato negli appunti.

Sì, correggete il comportamento.

PS Il comportamento descritto non è riproducibile. Se non c'è una sezione [TesterInputs] nel testo inserito, la scheda delle impostazioni di Expert Advisor non viene toccata affatto

 
Slava:
Sì. Correggere il comportamento

Grazie!

 
fxsaber:

Grazie!

Non giocare
 
Slava:

PS Il comportamento descritto non viene riprodotto. Se non c'è una sezione [TesterInputs] nel testo da inserire, la scheda delle impostazioni di Expert Advisor non viene toccata affatto

Consulente esperto

input int Range = 0; // 0 .. 100

double OnTester() { return(Range); }


Riproduzione


 
Probabilmente, questa funzionalità standard non renderà peggiore nessuno.

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

Caratteristiche del linguaggio mql5, consigli e trucchi

fxsaber, 2019.11.06 16:57

A volte nell'ottimizzazione genetica le prime migliaia di passaggi sono sufficienti per capire già il risultato più o meno.

Quando si eseguono automaticamente molte ottimizzazioni, si vuole che tutto funzioni più velocemente. Ecco perché avremo bisogno di un meccanismo per interrompere l'ottimizzazione.

#include <fxsaber\MultiTester\MTTester.mqh>  // https://www.mql5.com/ru/code/26132

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


Applicazione.

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}
 
fxsaber:

Consulente


Riproduzione


Andiamo al fondo di questo