Expert Advisor "Test_ChartEvent.mq4" ini adalah contoh yang menunjukkan pelbagai jenis ChartEvent: peristiwa kunci papan kekunci, klik & gerakan tetikus, serta peristiwa khusus. Anda boleh tekan kunci 'H' untuk mendapatkan bantuan dan tekan kunci 'M' untuk memasuki mod peristiwa MOUSE_MOVE.
Kod sumber ini berfungsi di MetaTrader 4 dan MetaTrader 5.
Prototip Fungsi
- bool Obj_Create()
- bool Obj_Delete()
- bool Obj_Move(int hSens,int vSens) - menggerakkan objek.
- void Print_Info() - mencetak maklumat tentang objek.
- int MouseMove(int aXX,int aYY,string sState) - mengendalikan peristiwa gerakan tetikus.
Variabel Global
- int gChartNo=0
- int gSubWinNo=0
- string gsObj_Name_selected="" - nama objek yang sedang dipilih.
Peristiwa Khusus
Tiga jenis peristiwa khusus ditakrifkan:
- #define cMyEvent_1 0
- #define cMyEvent_2 1
- #define cMyEvent_3_broadcast 2
Fungsi OnTimer()
Fungsi ini mencipta ChartEvent khusus secara berkala. Ia secara rawak menjana tiga peristiwa khusus ini (cMyEvent_1, cMyEvent_2 dan cMyEvent_3_broadcast). Khususnya, peristiwa cMyEvent_3_broadcast dijana untuk semua tetingkap carta terbuka.
Contoh Kelas
Kelas "CObjectMan" dicipta untuk mengendalikan fungsi objek pada carta. Dua contoh (variabel) kelas ini diisytiharkan: gObjectMan1 dan gObjectMan2.
Nama Objek Grafik yang berkaitan dengan dua contoh ini masing-masing adalah: "Butang Hijau" dan "Butang Kuning".
Pemprosesan Peristiwa
void OnChartEvent():
Peristiwa "CHARTEVENT_KEYDOWN":
- 4 kunci arah (anak panah) atau 4 kunci arah pada panel digital untuk menggerakkan objek yang dipilih.
- 'H': mencetak maklumat Bantuan (di tetingkap log pakar).
- 'I': mencetak maklumat posisi dua Objek.
- 'M': mengaktifkan peristiwa MOUSE_MOVE.
Peristiwa Khusus
Mencetak maklumat tentang peristiwa ini. Terutama untuk peristiwa MyEvent_3_broadcast.
Peristiwa Objek
- CHARTEVENT_OBJECT_CHANGE, CHARTEVENT_OBJECT_DRAG, CHARTEVENT_OBJECT_DELETE - mencetak nama objek yang berkaitan.
- CHARTEVENT_OBJECT_CLICK - mencetak nama objek yang diklik, pilih namanya untuk dipindahkan dengan kunci arah.
Peristiwa Tetikus
- CHARTEVENT_CLICK - mencetak maklumat bar yang diklik: harga (buka, tutup) dan masa bar.
- CHARTEVENT_MOUSE_MOVE (lihat: CHART_EVENT_MOUSE_MOVE) - mencetak maklumat interval yang diliputi: jumlah bar, variasi harga.

Demonstrasi
Anda boleh melakukan ujian berikut:
- Klik pada salah satu daripada dua objek (Butang) untuk memilih dan gunakan kunci anak panah untuk menggerakkan objek yang dipilih.
- Klik pada bar grafik dan lihat maklumat bar dalam tab log (mesej).
- Tekan kunci 'M' untuk memasuki mod peristiwa MOUSE_MOVE. Tekan Ctrl+F untuk menunjukkan kursor silang, kemudian lakukan operasi drag'n'drop. Jika anda tidak melihat mesej log, sila ubah parameter input: "iLogLevel".
Komen 0