Ramai trader bertanya:
Bagaimana cara mengesan bar baru yang muncul?
Ia sangat mudah, terutamanya jika anda ingin mengesan bar baru dalam timeframe semasa.
void start(){ static datetime tmp; if (tmp != Time[0]) { tmp = Time[0]; // masukkan kod anda di sini } }
Namun, bagaimana dengan acara timeframe yang lain? Ia tidak terlalu sukar tetapi ada beberapa batasan:
MT4 tidak menyokong acara onBar, tetapi anda boleh menyimpan waktu ke dalam array dan semak waktu tersebut pada setiap tick. Jika sudah sampai waktu yang tepat, jalankan acara bar baru.
Contohnya, jika anda menjalankan backtest pada timeframe M5, anda dapat menangkap acara M6, M7,... hingga D1.
Kenapa anda hanya dapat mengesan trend menaik? Jawapannya adalah: bagaimana untuk menghasilkan data tick melalui MetaTrader? A1, A2, A3,...
Sehingga timeframe D1 menjadi lebih sukar kerana minggu bermula pada waktu tertentu contohnya: Ahad 20:45 (bergantung kepada broker) dan permulaan bulan juga boleh bermula di tengah minggu... dan sebagainya.
Saya rasa info ini tidak terlalu relevan, jadi saya tidak menerbitkannya...
Jadi, ada topik untuk soalan ini, tetapi saya rasa ramai orang tidak membaca artikel dan forum, jadi saya menerbitkan kod ini.
Beberapa penjelasan:
Dalam fungsi init, anda mengisi array waktu dengan waktu permulaan:
curIndex = utils.periodToPeriodIndex(Period()); times[curIndex] = Time[0]; for(int i=curIndex+1; i<MAX; i++) times[i] = times[curIndex] - MathMod(times[curIndex],utils.periodIndexToPeriod(i)*60);
Dalam fungsi start, anda periksa sama ada sudah cukup waktu berlalu, kemudian jalankan acara tersebut.
if (times[curIndex] != Time[0]) { times[curIndex] = Time[0]; onBar(Period()); for(int i=curIndex+1; i<MAX; i++) { int period = utils.periodIndexToPeriod(i), seconds = period*60, time0 = times[curIndex] - MathMod(times[curIndex],seconds); if (times[i] != time0) { times[i] = time0; onBar(period); } } }
Jadi, tuliskan kod anda dalam:
void onTick() {
}
dan
void onBar(int period) { }
Itu sahaja, rakan-rakan.
Update 1.1: Terima kasih kepada WHRoeder untuk kod yang jelas.
Siaran berkaitan
- Menggunakan MQL5 Wizard untuk Membina EA Berdasarkan Pola Lilin dan Stochastic
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan: Garisan Pertemuan Bullish/Bearish dan MFI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI
- MQL5 Wizard: Sinyal Perdagangan Berdasarkan Corak Candlestick Bullish/Bearish Meeting Lines dan RSI