Unisciti alla nostra fan page

Visualizzazione dei Risultati di Ottimizzazione in Tempo Reale - sistema esperto per MetaTrader 5
- Visualizzazioni:
- 368
- Valutazioni:
- 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:- FrameGenerator.mqh - la classe CFrameGenerator per visualizzare i risultati dell'ottimizzazione;
- SpecialChart.mqh - la classe CSpecialChart per disegnare diversi grafici del bilancio;
- SimpleTable.mqh - la classe CSimpleTable è una semplice tabella avente due colonne;
- 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
1.2. Test dell'Expert Advisor
L'Expert Advisor Moving Averages_With_Frames.mq5 dovrebbe essere avviato nello Strategy Tester.
Impostazioni del Test:
Fig. 2. Impostazioni test Moving Averages_With_Frames.mq5
Opzioni di Ottimizzazione:
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
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. 6. Risultato del funzionamento di Test_CSpecialChart.mq5
Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/914

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.

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.

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 funzioni matematiche (v. 3.19) portata a MQL5.