Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Sistemi Esperti

Visualizzazione dei Risultati di Ottimizzazione in Tempo Reale - sistema esperto per MetaTrader 5

Visualizzazioni:
214
Valutazioni:
(48)
Pubblicato:
2021.11.01 12:37
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Lo Strategy Tester della MetaTrader 5 consente di ottenere parametri statistici di un sistema di trading dopo ogni passaggio del test.

I parametri statistici possono essere ottenuti utilizzando la funzione TesterStatistics(), che viene chiamata all'interno delle funzioni OnTester() e OnDeinit().

Con l'introduzione delle funzioni per lavorare con i risultati delle ottimizzazioni (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() e FrameAdd()), i trader sono ora in grado di eseguire l'ottimizzazione visiva. I dati necessari ora possono eseere processati e visualizzati giusto durante l'ottimizzazione di un Expert Advisor o la risoluzione di un problema matematico.

Prenderemo in considerazione i dettagli dell'esempio di visualizzazione dei risultati dei test di un Expert Advisor durante l'ottimizzazione descritta nell'articolo "Visualizza una Strategia nel Tester della MetaTrader 5".


1. Visualizzazione delle dinamiche di bilancio durante l'ottimizzazione

1.1. Download dei Files

L' Expert Advisor Moving Averages_With_Frames.mq5 dovrebbe essere copiato in terminal_data_folder\MQL5\Experts.

I file che seguono sono utilizzati per le operazioni dell'Expert Advisor:
  1. FrameGenerator.mqh - la classe CFrameGenerator per visualizzare i risultati dell'ottimizzazione;
  2. SpecialChart.mqh - la classe CSpecialChart per disegnare diversi grafici del bilancio;
  3. SimpleTable.mqh - la classe CSimpleTable è una semplice tabella avente due colonne;
  4. ColorProgressBar.mqh - la classe CСolorProgressBar è una barra di avanzamento che utilizza due colori.

Dovrebbero essere copiati in terminal_data_folder\MQL5\Include.

I programmi del Code Base possono essere scaricati automaticamente tramite Meta Trader 5 ( sezione CodeBase della finestra del "BoxAttrezzi"). Per fare questo, seleziona "Download". Tutti i codici saranno scaricati e collocati nelle loro cartelle.

Fig. 1. Download dei programi del CodeBase tramite il terminale Meta Trader 5

Fig. 1. Download dei programi del CodeBase tramite il terminale Meta Trader 5


1.2. Test dell'Expert Advisor

L'Expert Advisor Moving Averages_With_Frames.mq5 dovrebbe essere avviato nello Strategy Tester.

Impostazioni del Test:

Impostazioni test Moving Averages_With_Frames.mq5

Fig. 2. Impostazioni test Moving Averages_With_Frames.mq5

Opzioni di Ottimizzazione:

Parametri di ottimizzazione Moving Averages_With_Frames.mq5

Fig. 3. Impostazioni test Moving Averages_With_Frames.mq5


Durante l'ottimizzazione l'Expert Advisor mostra le dinamiche di bilancio e i passaggi dei dati statistici dell'ottimizzazione:

Fig. 4. Ottimizzazione Moving Averages_With_Frames.mq5

Fig. 4. Ottimizzazione Moving Averages_With_Frames.mq5

Processo di ottimizzazione:




1.3. Il principio di funzionamento dell'Expert Advisor

L'Expert Advisor Moving Averages_With_Frames.mq5 è stato creato sulla base della Moving Averages.mq5 inclusa nel pacchetto standard del terminale MetaTrader 5 (MQL5\Experts\Examples\Moving Average).

Il codice seguente è stato aggiunto per la visualizzazione dei risultati:
//--- connecting the code for working with optimization results
#include <FrameGenerator.mqh>
//--- frames generator
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- insert your optimization criterion calculation function here
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- invoking after each test and submitting optimization criterion as a parameter
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit function                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- preparing the chart for displaying several balance lines
   fg.OnTesterInit(3); // parameter sets the number of balance lines on the chart
  }
//+------------------------------------------------------------------+
//| TesterPass function                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- handling obtained test results and displaying graphics
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit function                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- optimization end
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Chart events handling                                           |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- launches frames display after the optimization end when clicking on the header
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 is a pause in ms between the shots
  }
//+------------------------------------------------------------------+

Questo codice può essere utilizzato in maniera simile in qualsiasi Expert Advisor.

La classe CFrameGenerator è utilizzata per lavorare con i risultati dell'ottimizzazione. La classe contiene le modalità di gestione degli eventi dello Strategy Tester (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) e le modalità per gli eventi grafici (OnChartEvent()). Gli oggetti grafici utilizzati sono approntati nella OnTesterInit() modalità della classe CFrameGenerator.

La modalità OnTester() della classe CFrameGenerator è chiamata su un agente tester dopo ogni passaggio test. Questo metodo fornisce il calcolo delle dinamiche della curva di bilancio in base ai risultati di trading. Il grafico della curva di bilancio è un vettore unidimensionale, la cui lunghezza dipende dal numero di operazioni effettuate.

In seguito, la funzione TesterStatistics() è utilizzata per richiedere dati statistici (profitto netto, fattore di profitto, fattore di recupero, numero di trades, numero di operazioni, massima percentuale del prelievo di fondi, valore dei criteri di ottimizzazione personalizzati) viene così generato un frame (nel nostro caso il vettore con i dati dei passaggi del test), che viene inviato al terminale (dall'agente di test) utilizzando la funzione FrameAdd().

I frame sono ricevuti e gestiti nell'OnTesterPass() modalità della classe CFrameGenerator. L'operazione di lettura dei frame viene eseguita dalla funzione FrameNext(). La richiesta dei parametri di input dell' Expert Advisor, per i quali è stato generato il frame, viene eseguita utilizzando la funzione FrameInputs().

Dopo aver ottenuto i dati, vengono visualizzati e aggiornati utilizzando i metodi delle classi CSimpleTable, CColorProgressBar e CSpecialChart.

Va notato che l'esecuzione delle funzioni di gestione dell' OnTester() viene eseguita sull'agente tester dopo che un altro passaggio di ottimizzazione corrente è stato completato. Ciò consente l'utilizzo delle capacità della rete distributiva MQL5 Cloud Network per eseguire calcoli matematici complessi. Per fare questo, porre la parte di calcolo gestita dall'evento OnTester().

L'esempio dell'utilizzo dell'ottimizzazione per accelerare i calcoli matematici (trasformazione wavelet continua della funzione Weierstrass) è mostrato nell'argomento "Gestione dei processi di ottimizzazione in tempo reale e trasferimento dati massivi dagli agenti a MetaTrader 5".


2. Esempi di Lavori con CSimpleTable, CColorProgressBar and CSpecialChart Classes

In allegato gli script Test_SimpleTable.mq5 e Test_CSpecialChart.mq5 contenenti esempi di lavori con le classi CSimpleTable, CColorProgressBar e CSpecialChart. Dovranno essere copiati in terminal_data_folder\MQL5\Scripts.

Fig. 5. Risultato del funzionamento di Test_SimpleTable.mq5

Fig. 5. Risultato del funzionamento di Test_SimpleTable.mq5

Fig. 6. Risultato del funzionamento di Test_CSpecialChart.mq5

Fig. 6. Risultato del funzionamento di Test_CSpecialChart.mq5


Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/914

EA_OBJPROP_CHART_ID EA_OBJPROP_CHART_ID

Questo Expert Advisor è una dimostrazione di come lavorare con gli oggetti di OBJ_CHART come grafici convenzionali. E' possibile impostare colori personalizzati, allegare indicatori etc.

Demo_BitmapOffset (OBJPROP_XOFFSET e OBJPROP_YOFFSET) Demo_BitmapOffset (OBJPROP_XOFFSET e OBJPROP_YOFFSET)

Se hai bisogno di mostrare solo una parte dell'immagine al momento e nasconderne un'altra, puoi usare la finestra mobile specificando l'area visibile dell'immagine.

Esempio dell'uso di  IndicatorParameters() Esempio dell'uso di IndicatorParameters()

Questo Expert Advisor illustra l'uso della funzione IndicatorParameters() per ricavare le informazioni sul numero dei parametri d'entrata, il loro tipo e valori.

ALGLIB - Libreria di Analisi Numerica ALGLIB - Libreria di Analisi Numerica

ALGLIB libreria di funzioni matematiche (v. 3.19) portata a MQL5.