Untuk System Trading (EA), setiap kali MetaTrader menerima sebut harga baru ("tick"), fungsi pengendalian acara standard OnTick() akan dipanggil oleh terminal. Namun, tidak ada fungsi pengendalian acara standard untuk permulaan bar baru (lilin) yang muncul.
Untuk mengesan ini, anda perlu memantau waktu pembukaan bar terbaru. Apabila waktu ini berubah, itu menandakan permulaan bar baru, dan anda boleh bertindak balas terhadap situasi tersebut. Berikut adalah contoh kod yang serasi dengan MQL4 dan MQL5, yang menunjukkan salah satu cara untuk melakukannya:
// Pengendali acara tick standard void OnTick() { // Semak untuk bar baru (serasi dengan MQL4 dan MQL5). static datetime dtBarraCorrente = WRONG_VALUE; datetime dtBarraPrecedente = dtBarraCorrente; dtBarraCorrente = iTime( _Symbol, _Period, 0 ); bool bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente ); // Bertindak balas terhadap acara bar baru dan tangani situasi tersebut. if( bEventoBarraNova ) { // Mengesan jika ini adalah tick pertama yang diterima dan tangani situasi tersebut. /* Contohnya, apabila ia pertama kali digunakan dalam graf dan bar berada di tengah-tengah kemajuannya dan bukan betul-betul permulaan bar baru. */ if( dtBarraPrecedente == WRONG_VALUE ) { // Lakukan sesuatu pada tick pertama atau di tengah-tengah bar ... } else { // Lakukan sesuatu apabila bar biasa muncul ... }; // Lakukan sesuatu tanpa mengira keadaan sebelumnya ... } else { // Lakukan sesuatu yang lain ... }; // Lakukan perkara lain ... };
Dalam kod di atas, pembolehubah statik menyimpan waktu pembukaan bar, walaupun selepas kembali dari fungsi OnTick(). Berbeza dengan pembolehubah biasa, pembolehubah statik akan menyimpan data dan tidak akan dilepaskan semasa keluar dari fungsi. Ini adalah kunci untuk mengesan perubahan waktu pembukaan bar semasa.
Perlu juga diingat bahawa apabila EA diletakkan pada carta untuk kali pertama, kod sebelumnya akan bertindak seolah-olah bar baru sahaja dibuka. Keadaan ini memerlukan perhatian khusus jika situasi perlu ditangani dengan cara yang berbeza.
Sila ambil perhatian bahawa kod sumber untuk semua penerbitan saya di CodeBase kini juga tersedia melalui MetaEditor 's "Projek Awam" di bawah nama "FMIC".
Siaran berkaitan
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak Hammer/Hanging Man dan Stochastic
- MQL5 Wizard: Cipta Sinyal Dagangan Menggunakan Pola Candlestick Hammer dan Hanging Man
- Menggunakan MQL5 Wizard untuk Signal Perdagangan '3 Black Crows/3 White Soldiers' + RSI