- Esecuzione dei Programmi
- Trade Permission
- Eventi Terminale Client
- Risorse
- Chiamata delle funzioni importate
- Errori di Runtime
- Testare Strategie di Trading
Client Terminal Events
Init #
Subito dopo che il terminale client carica un programma (un Expert Advisor o indicatore personalizzato) ed avvia il processo di inizializzazione delle variabili globali, l'evento Init verrà inviato, e verrà elaborato dall' event handler OnInit(), se esiste. Questo evento viene anche generato dopo che un strumento finanziario e/o timeframe, del grafico, cambiano, dopo che un programma viene ricompilato in MetaEditor, dopo che i parametri di input vengono modificati dalla finestra di impostazione di un Expert Advisor o di un indicatore personalizzato. Un Expert Advisor viene anche inizializzato dopo che l'account è stato modificato. L'evento Init non viene generato per gli script.
Deinit #
Prima che le variabili globali vengano deinizializzate, ed il programma (Expert Advisor o indicatore personalizzato) viene scaricato, il terminale client invia l'evento Deinit al programma. Deinit viene generato anche quando il terminale client viene chiuso, quando un grafico viene chiuso, proprio prima che lo strumento finanziario e/o il timeframe vengono cambiati, o ad una ricompilazione con successo del programma, o quando i parametri di input vengono cambiati, o quando cambia un account.
Le motivazioni di deinizializzazione possono essere ottenute dal parametro, passato alla funzione OnDeinit(). La l'esecuzione della funzione OnDeinit() è limitata a 2,5 secondi. Se durante questo tempo la funzione non è stata completata, viene interrotta prematuramente. L'evento Deinit non viene generato per gli script.
Start #
Start è un evento speciale per il lancio di uno script o di un servizio dopo averlo caricato. È gestito dalla funzione OnStart. L'evento Start non viene passato agli EA e agli indicatori personalizzati.
NewTick #
L'evento NewTick viene generato se ci sono nuove quotazioni, e viene elaborato da OnTick() dell' Expert Advisor allegato. Nel caso in cui la funzione OnTick per la quotazione precedente è in fase di elaborazione quando viene ricevuta una quotazione, la nuova quotazione verrà ignorata dall' Expert Advisor, perché l'evento corrispondente non sarà messo in fila.
Tutte le nuove citazioni che vengono ricevute mentre il programma è in esecuzione vengono ignorate fino a quando onTick() non è completato. Dopo di che la funzione girerà solo dopo che viene ricevuta una nuova quotazione. L'evento NewTick viene generato indipendentemente dal fatto che sia consentito il trading automatizzato o meno (bottone "permetti/vieta il trading automatizzato"). Il divieto di trading automatico indica solo che l'invio delle richieste di trading provenienti da un Expert Advisor non sono consentite, mentre l'Expert Advisor continua a lavorare.
Il divieto di trading automatico, premendo il relativo bottone, non fermerà l'esecuzione corrente della funzione onTick().
Calculate #
L'evento Calculate viene generato solo per gli indicatori giusto dopo che l'evento Init viene inviato ad ogni cambio di dati sui prezzi. Viene elaborato dalla funzione OnCalculate.
Timer #
L'evento Timer viene periodicamente generato dal terminale client per l'Expert Advisor che ha attivato il timer della funzione EventSetTimer. Di solito, questa funzione viene chiamata da OnInit. L'evento di elaborazione Timer viene eseguito dalla funzione OnTimer. Dopo che l'operazione dell' Expert Advisor è stata completata, è necessario distruggere il timer con la funzione EventKillTimer, che di solito è chiamata nella funzione OnDeinit.
Trade #
L'evento di trade viene generato quando un operazione di trade è stata completata sul trade server. L'evento Trade è gestito dalla funzione OnTrade() per le operazioni di trade seguenti:
- l'invio, la modifica o la rimozione di un ordine pendente;
- l' annullamento di un ordine pendente con non abbastanza denaro o espirazione;
- attivazione di un ordine pendente;
- apertura, aggiunta o chiusura di una posizione (o parte della posizione);
- la modifica della posizione aperta (cambio degli stops - Stop Loss e/o Take Profit).
TradeTransaction #
Quando si eseguono alcune azioni precise su un trade account, il suo stato cambia. Tali azioni comprendono:
- Inviare una richiesta di trade da qualsiasi applicazione MQL5 nel terminale client utilizzando le funzioni OrderSend e OrderSendAsync e la sua ulteriore esecuzione;
- Inviare una richiesta di trade tramite l'interfaccia grafica del terminale e la sua esecuzione ulteriore;
- Attivazione di ordini pendenti ed ordini di stop sul server;
- Esecuzione di operazioni sul lato trade server.
Le operazioni commerciali di seguito vengono eseguite come risultato di queste azioni:
- gestione di una richiesta di trade;
- cambio di ordini aperti;
- cambio della cronistoria degli ordini;
- cambio della cronistoria degli affari;
- cambio delle posizioni.
Per esempio, quando si invia un ordine di mercato buy, esso viene gestito, un appropriato ordine di buy viene creato per l'account, l'ordine viene poi eseguito e rimosso dalla lista di quelli aperti, quindi viene aggiunto alla cronistoria ordini, un appropriato affare si aggiunge alla cronistoria e una nuova posizione viene creata. Tutte queste azioni sono transazioni di trade. L' arrivo di una tale operazione al terminal è un evento TradeTransaction. Questo evento viene gestito dalla funzione OnTradeTransaction.
Tester #
L'evento Tester viene generato dopo che il testing di un Expert Advisor su dati storici è finito. L'evento è gestito dalla funzione OnTester().
TesterInit #
L'evento TesterInit viene generato con l'inizio dell' ottimizzazione nello strategy tester prima del primo step di ottimizzazione. L'evento TesterInit viene gestito dalla funzione OnTesterInit().
TesterPass #
L'evento TesterPass viene generato quando viene ricevuto un nuovo frame di dati. L'evento TesterPass viene gestito dalla funzione OnTesterPass().
TesterDeinit #
L' evento TesterDeinit viene generato dopo la fine dell' ottimizzazione di un Expert Advisor nello strategy tester. L'evento TesterDeinit viene gestito dalla funzione OnTesterDeinit().
ChartEvent #
L' eventoChartEvent viene generato dal terminale client quando un utente sta lavorando con un grafico:
- pressione della tastiera, quando la finestra del grafico è selezionata;
- oggetto grafico creato
- oggetto grafico eliminato
- pressione del tasto del mouse sull'oggetto grafico del grafico
- spostamento dell'oggetto grafico utilizzando il mouse
- fine della modifica del testo nella LabelEdit.
Inoltre vi è un ChartEvent evento personalizzato, che può essere inviato ad un Expert Advisor qualunque utilizzando la funzione EventChartCustom. L'evento viene elaborato dalla funzione OnChartEvent.
BookEvent #
L'evento BookEvent viene generato dal terminale client dopo che la Profondità di Mercato è cambiata; viene elaborato dalla funzione OnBookEvent. Per avviare la generazione di BookEvent per il simbolo specificato, è necessario registrare il simbolo per questo evento utilizzando la funzione MarketBookAdd.
Per annullare l'iscrizione a BookEvent per un simbolo specificato, è necessario chiamare la funzione MarketBookRelease. L'evento BookEvent è un evento di tipo-broadcasting - significa che è sufficiente iscrivere un solo Expert Advisor per questo evento, e tutti gli altri Expert Advisor che hanno l'handler event OnBookEvent, lo riceveranno. Ecco perché è necessario analizzare il nome del simbolo, che è passato ad un handler come parametro.
Vedi anche
Event handlers, Funzionamento del programma