- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnInit
La funzione è chiamata in indicatori ed EA quando si verifica l'evento Init. Viene utilizzato per inizializzare un programma MQL5 in esecuzione. Ci sono due tipi di funzione.
La versione che restituisce il risultato
int OnInit(void); |
Valore di ritorno
int (tipo di valore), zero significa inizializzazione riuscita.
Quando restituisce INIT_FAILED, l'EA viene forzatamente scaricato dal grafico.
Quando restituisce INIT_FAILED, l'indicatore non viene scaricato dal grafico. L'indicatore rimanendo sul grafico non è operativo — i gestori degli eventi non sono chiamati nell'indicatore.
La chiamata OnInit() che restituisce il risultato dell'esecuzione è consigliata per l'uso poiché non solo consente l'inizializzazione del programma, ma restituisce anche un codice di errore in caso di una chiusura anticipata del programma.
La versione senza un risultato restituito è lasciata solo per compatibilità con i vecchi codici. Non è raccomandata per l'uso
void OnInit(void); |
Nota
L'evento Init viene generato immediatamente dopo aver caricato un EA o un indicatore. L'evento non è generato per gli script. La funzione OnInit() viene utilizzata per inizializzare un programma MQL5. Se OnInit() ha un valore di ritorno di tipo int, il codice di ritorno diverso da zero indica l'inizializzazione fallita e genera l'evento Deinit con il codice del motivo di deinizializzazione REASON_INITFAILED.
La funzione OnInit() di tipo void significa sempre inizializzazione riuscita e non è raccomandato per l'uso.
Per ottimizzazione degli input dell' EA, si consiglia di utilizzare valori dall'enumerazione ENUM_INIT_RETCODE come codice di ritorno. Questi valori sono intesi a stabilire la gestione del processo di ottimizzazione, compresa la selezione dei più adatti agenti di testing. È possibile richiedere i dati sulla configurazione e sulle risorse degli agenti (numero di core, quantità di memoria libera, ecc.) utilizzando la funzione TerminalInfoInteger() durante l'inizializzazione di EA prima dell'avvio del test. Sulla base dei dati ottenuti, è possibile consentire l'uso dell'agente di testing o vietarlo dall'ottimizzazione di EA.
ID |
Descrizione |
---|---|
INIT_SUCCEEDED |
Inizializzazione riuscita, il test EA può essere continuato. Questo codice indica lo stesso valore zero: l'inizializzazione EA nel tester ha esito positivo. |
INIT_FAILED |
Inizializzazione fallita. Non ha senso continuare il test, a causa di errori inevitabili. Ad esempio, è impossibile creare un indicatore necessario per l'operazione EA. Il ritorno di questo valore equivale a restituire il valore diverso da zero - l'inizializzazione di EA nel tester non è riuscita. |
INIT_PARAMETERS_INCORRECT |
Designato per denotare un insieme errato di parametri di input da parte di un programmatore. Nella tabella di ottimizzazione generale, la stringa dei risultati con questo codice di ritorno è evidenziata in rosso. Non viene eseguito un test per un tale insieme di ingressi EA. L'agente è pronto per ricevere una nuova attività. Quando questo valore viene ricevuto, il tester della strategia non trasferisce questa attività ad altri agenti per l'esecuzione ripetuta. |
INIT_AGENT_NOT_SUITABLE |
Nessun errore di esecuzione del programma durante l'inizializzazione. Tuttavia, per alcuni motivi, l'agente non è adatto a condurre un test. Ad esempio, non c'è abbastanza RAM, nessun Supporto OpenCL, eccetera. Dopo aver restituito questo codice, l'agente non riceve più attività fino alla fine di questa ottimizzazione. |
Utilizzando OnInit() restituendo INIT_FAILED/INIT_PARAMETERS_INCORRECT nel tester ha alcune peculiarità che dovrebbero essere considerate quando si ottimizzano gli EA:
- l'insieme di parametri OnInit() restituito INIT_PARAMETERS_INCORRECT per è considerato inadatto per il test e non viene utilizzato per ottenere la successiva popolazione durante l'ottimizzazione genetica. Troppi set di parametri "scartati" possono portare a risultati errati durante la ricerca di parametri EA ottimali. L'algoritmo di ricerca presuppone che la funzione criterio di ottimizzazione sia regolare e non abbia spazi vuoti sull'intera moltitudine di parametri di input.
- se OnInit() restituisce INIT_FAILED, ciò significa che non è possibile avviare un test e che l'EA viene de-caricato dalla memoria dell'agente. L'EA viene nuovamente caricato per eseguire il passaggio successivo con una nuova serie di parametri. L'avvio del prossimo passaggio di ottimizzazione richiede molto più tempo rispetto a chiamare TesterStop().
Esempio di funzione OnInit() per un EA
//--- parametri di input
|
Guarda anche
OnDeinit, Funzioni di gestione degli eventi(event handling), Esecuzione Programma, Eventi del terminale client, Inizializzazione di variabili, Creazione ed eliminazione di oggetti