Librerie: MultiTester - pagina 22

 
Rispondo alla mia stessa domanda: i file mqh non devono essere compilati separatamente. Anche tu hai iniziato a cercare, non è vero? Funziona. Grazie.
 

Quando si esaminano i risultati dell'ottimizzazione, è possibile che alcuni singoli passaggi piacciano e che si vogliano ottenere rapidamente alcune informazioni utili per utilizzarle in seguito.

Ho trovato questo metodo molto comodo.

#define private public
  #include <fxsaber\MultiTester\MTTester.mqh>
#undef private

void OnDeinit( const int Reason )
{
  if (!MQLInfoInteger(MQL_OPTIMIZATION) && MQLInfoInteger(MQL_TESTER))
  {
    const datetime EndTime = TimeCurrent() - TimeCurrent() % (24 * 3600) + 24 * 3600;
        
    const string Str =          TimeToString(EndTime, TIME_DATE) + ": " +
                                DoubleToString(TesterStatistics(STAT_PROFIT), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_TRADES), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " +          
                                DoubleToString(TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", Fit = " +          
                                DoubleToString(TesterStatistics(STAT_CUSTOM_ONTESTER), 2) + "\n";

    MTTESTER::SetClipboard(_Symbol + " " + Str); // Inserisce la stringa a passaggio singolo negli appunti.
  }

Dopo un singolo passaggio, tutte le informazioni necessarie sono disponibili in forma sintetica negli appunti sotto forma di stringa. Le incollo tramite CTRL+V, dove è più comodo.

Poi, quando si accumulano molte stringhe interessanti, valuto la situazione complessiva.


Naturalmente, la stringa può essere formata da voi stessi. Quello sopra è solo un esempio. L'importante è che entri negli appunti.

 

fxsaber, grazie per il multitester! Le vostre pubblicazioni sono come sempre al top!


Prima di inventare una bicicletta, vorrei chiedere un consiglio.

Come risultato dell'ottimizzazione dei parametri dell'EA per una lista di simboli utilizzando multitester, ottengo una lista di file .opt e i risultati dell'ottimizzazione possono essere visualizzati solo separatamente per ogni simbolo.

Come posso combinarli in un risultato medioper tutti i simboli? Diciamo che voglio ottenere un grafico standard MT5 2D di due parametri (di quadrati verdi ombreggiati).

Oppure come è più facile combinare tutti i risultati in una tabella Excel, l'esportazione manuale di tutti i risultati dello S&P500 in Excel non è molto conveniente....

fxsaber
fxsaber
  • www.mql5.com
Предупреждение для тех, кто не знает (почти все). При передаче мастер-пароля (даже на короткое время) от MT4/5-торгового счета другому лицу автоматически происходит передача не только имени, на кого зарегистрирован торговый счет (как при передаче инвест-пароля), но и реального email-адреса и номера телефона, на которые зарегистрирован торговый...
 
Sunriser:

Come risultato dell'ottimizzazione dei parametri EA da parte dell'elenco di simboli utilizzando il multitester, si ottiene un elenco di file .opt e i risultati dell'ottimizzazione possono essere visualizzati solo separatamente per ciascun simbolo.

E come combinarli in un risultato medioper tutti i simboli? Supponiamo di voler ottenere un grafico standard MT5 2D di due parametri (quadrati verdi ombreggiati).

Oppure come è più facile combinare tutti i risultati in una tabella Excel, l'esportazione manuale di tutti i risultati dello S&P500 in Excel non è molto conveniente....

È possibile consolidare tutti gli opt-file di multi-ottimizzazione in uno solo tramite TesterCache.

TesterCache
TesterCache
  • www.mql5.com
MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах  Tester\cache\*.opt . И умеет экспортировать/импортировать их. Данная библиотека позволяет работать с этими данными. Сценарии Вывод более полных данных, чем это предоставляет MT5-тестер. Создание критериев оптимизации в любое время после проведенной...
 
Ehi, questo sembra uno strumento incredibile, sto cercando di usare google translate ma non riesco a capire come funziona. C'è qualche tutorial in inglese? Non capisco a che punto posso attivarlo e fare la lista dei simboli da testare con il mio esperto. Oppure devo modificare manualmente un file di codice e poi importarlo? Grazie!
 
Thierry Waltrich:
Ehi, questo sembra uno strumento incredibile, sto cercando di usare google translate ma non riesco a capire come funziona. C'è qualche tutorial in inglese? Non capisco a che punto posso attivarlo e fare la lista dei simboli da testare con il mio esperto. Oppure devo modificare manualmente un file di codice e poi importarlo? Grazie!

Qui ci sono persone che utilizzano attivamente questo strumento (o si basano su di esso). Sarebbe fantastico se potessero aiutarti a capirlo.

Purtroppo ho condiviso così tanto del mio lavoro con la comunità che non solo non riesco a trovare il tempo per rispondere in modo costruttivo alle domande di base, ma ho quasi smesso di pubblicare i miei sviluppi e risultati.

 

Un modo comodo per eseguire i test preventivi quando si analizzano manualmente i risultati delle ottimizzazioni.

// Eseguire Forward dalla tabella dei risultati dell'ottimizzazione (eseguire nel terminale).
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/it/code/26132

sinput datetime inForward = D'2020.01.01'; // In avanti da

const bool Init = EventSetMillisecondTimer(100);

void OnTimer()
{
  static const string Forward = "[Tester]\r\nFromDate=" + TimeToString(inForward, TIME_DATE) +
                                "\r\n[TesterInputs]\r\ninBestInterval_Action=true";
  static bool Ready = true;
  static bool Flag = false;
  
  static string Settings;
  
  if (Ready)
    Ready = MTTESTER::IsReady();
  else if (MTTESTER::IsReady())
    Ready = (Flag = !Flag) ? !(MTTESTER::GetSettings(Settings) && MTTESTER::SetSettings2(Forward) && MTTESTER::ClickStart(false))
                           : MTTESTER::SetSettings2(Settings);
}

Apro la tabella delle ottimizzazioni di qualsiasi Expert Advisor e clicco su "Esegui test singolo" sui passaggi di interesse. Ottengo l'output forward del passaggio.

Si risparmia molto tempo (per me un passaggio dura un paio di secondi), soprattutto con BestInterval.

 
Thierry Waltrich:
Ehi, questo sembra uno strumento incredibile, sto cercando di usare google translate ma non riesco a capire come funziona. C'è qualche tutorial in inglese? Non capisco a che punto posso attivarlo e fare la lista dei simboli da testare con il mio esperto. Oppure devo modificare manualmente un file di codice e poi importarlo? Grazie!

Devi selezionare l'esperto che vuoi ottimizzare nel tester della strategia e impostare i parametri da ottimizzare.

Quindi compila l'Esempio 1 e trascinalo su un grafico qualsiasi (esegui): inizierà ad eseguire il tuo Expert Advisor sui grafici e sui time frame impostati nel codice dell'Esempio 1.

Quindi avete bisogno di un MultitesterExpert che come un automa esegua il vostro Expert Advisor ottimizzato su diversi _Simbol / _Period ecc.

Studiando i commenti dell'Esempio 1 e dell'Esempio 2 sarete in grado di creare il vostro MultitesterExpert basato su di essi.

 

GetSettings(Str) interrompe il test sugli agenti locali.

GetSettings(Str) viene utilizzato per scoprire il tipo di modellazione dei tick utilizzata nel test.

Esempio:

Ho aggiunto quanto segue al codice di esempio del Moving Average Expert Advisor:

#include <fxsaber\MultiTester\MTTester.mqh>

int OnInit()
  {

// Codice standard del Consulente Esperto

//ottenere le impostazioni del tester
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      Print(Str);
     }
   return(INIT_SUCCEEDED);
  }

Eseguo l'ottimizzazione con l'enumerazione completa dei parametri, di conseguenza il tester tende a passare da qualsiasi scheda alla scheda "Impostazioni".

Un numero sproporzionato di edifici viene distribuito agli agenti locali e non viene eseguito.


Potete suggerire qualcosa per conto vostro?

 
Sunriser:

Puoi darmi un suggerimento?

In OnTesterInit eseguite GetSettings e passate i valori ottenuti da lì tramite ParametersSetRange alla variabile sinput.

Negli Agenti locali questa variabile sinput vi dirà qual è la modalità.


La modalità può essere determinata dai tick reali senza DLL.