Il Test_ChartEvent.mq4 è un Expert Advisor che dimostra i vari tipi di eventi di ChartEvent: eventi delle chiavi della tastiera, eventi di clic e movimento del mouse, eventi personalizzati. Puoi premere il tasto 'H' per ricevere aiuto e il tasto 'M' per attivare la modalità evento MOUSE_MOVE.
Il codice sorgente è compatibile con MetaTrader 4 e MetaTrader 5.
Prototipo della Funzione
- bool Obj_Create()
- bool Obj_Delete()
- bool Obj_Move(int hSens,int vSens) - sposta un oggetto.
- void Print_Info() - stampa le informazioni sugli oggetti.
- int MouseMove(int aXX,int aYY,string sState) - gestisce l'evento di movimento del mouse.
Variabili Globali
- int gChartNo=0
- int gSubWinNo=0
- string gsObj_Name_selected="" - il nome dell'oggetto attualmente selezionato.
Eventi Personalizzati
Sono definiti tre tipi di eventi personalizzati:
- #define cMyEvent_1 0
- #define cMyEvent_2 1
- #define cMyEvent_3_broadcast 2
Funzione OnTimer()
Questa funzione crea periodicamente l'evento ChartEvent personalizzato. Genera casualmente questi tre eventi personalizzati (cMyEvent_1, cMyEvent_2 e cMyEvent_3_broadcast). In particolare, l'evento cMyEvent_3_broadcast viene generato per tutte le finestre di grafico aperte.
Esempio di Classe
La classe CObjectMan è creata per gestire la funzionalità degli oggetti su un grafico. Due istanze (variabili) della classe sono dichiarate: gObjectMan1 e gObjectMan2.
I nomi degli oggetti grafici collegati a queste due istanze sono rispettivamente: "Pulsante Verde" e "Pulsante Giallo".
Elaborazione degli Eventi
void OnChartEvent():
Gli eventi "CHARTEVENT_KEYDOWN":
- 4 tasti direzionali (frecce) o i 4 tasti direzionali sul pannello digitale per muovere l'oggetto selezionato.
- 'H': stampa le informazioni di aiuto (nella finestra di log dell'expert).
- 'I': stampa le informazioni sulle posizioni di due oggetti.
- 'M': attiva l'evento MOUSE_MOVE.
Eventi Personalizzati
Stampa informazioni su questi eventi, in particolare per l'evento MyEvent_3_broadcast.
Eventi degli Oggetti
- CHARTEVENT_OBJECT_CHANGE, CHARTEVENT_OBJECT_DRAG, CHARTEVENT_OBJECT_DELETE - stampa il nome corrispondente dell'oggetto.
- CHARTEVENT_OBJECT_CLICK - stampa il nome dell'oggetto cliccato, seleziona il suo nome per muoverlo con i tasti direzionali.
Eventi del Mouse
- CHARTEVENT_CLICK - stampa le informazioni della barra cliccata: i prezzi (apertura, chiusura) e il tempo della barra.
- CHARTEVENT_MOUSE_MOVE (vedi: CHART_EVENT_MOUSE_MOVE) - stampa le informazioni dell'intervallo coperto: numero di barre, variazione di prezzo.

Dimostrazione
Puoi eseguire i seguenti test:
- Clicca su uno dei due oggetti (Pulsanti) per selezionarlo e usa i tasti freccia per muovere l'oggetto selezionato.
- Clicca su una barra grafica e osserva le informazioni della barra nella scheda di log (messaggio).
- Premi il tasto 'M' per entrare nella modalità evento MOUSE_MOVE. Premi Ctrl+F per mostrare il cursore, quindi esegui un'operazione di drag'n'drop. Se non vedi il messaggio di log, cambia il parametro di input: "iLogLevel".
Post correlati
- Dematus: Il Sistema di Trading per MetaTrader 5
- Rilevare il Venerdì della Prima Settimana del Mese: La Guida per il Giorno NFP
- EA Efficiente: Come Aggiungere la Chiusura del Venerdì per Migliorare le Performance
- MQL5 Wizard: Creare Trading Signals con Morning/Evening Stars e MFI per MetaTrader 5
- Utilità Market Watch Panel: il tuo alleato in MetaTrader 4