Saya ingin memperkenalkan implementasi terbaru mod multidana yang penuh fitur dalam MetaTrader 5. Mod ini dilaksanakan melalui fungsi OnTick(string symbol) yang diperluas.
Keuntungan:
- Memberikan mod multidana yang sebenar pada akaun demo dan nyata.
- Menawarkan pengaturan yang mudah.
- Senarai acara untuk OnTick(string symbol) boleh dikonfigurasi: NewTick dan/atau NewBar.
- Senarai simbol boleh disesuaikan (semua simbol dari Market Watch atau beberapa simbol tertentu).
- Apabila bekerja dengan simbol dari Market Watch, ia membolehkan pengurusan acara secara langsung dalam OnTick(string symbol).
- Tiada keperluan untuk memahami butiran operasinya. Semua kod terdapat dalam fail yang dimasukkan.
- Boleh digunakan dalam Strategy Tester.
Template Expert Advisor adalah seperti berikut:
//+------------------------------------------------------------------+ //| OnTick(string symbol).mq5 | //| Copyright 2010, Lizar | //| https://www.mql5.com/ru/users/Lizar | //+------------------------------------------------------------------+ #define VERSION "1.00 Build 1 (01 Fab 2011)" #property copyright "Copyright 2010, Lizar" #property link "https://www.mql5.com/ru/users/Lizar" #property version VERSION #property description "Template of the Expert Advisor" #property description "with multicurrency OnTick(string symbol) event handler" //+------------------------------------------------------------------+ //| SETTINGS MOD MULTIDANA | //| untuk pengendalian acara OnTick(string symbol) | //| 1.1 Senarai simbol yang diperlukan untuk meneruskan acara: | #define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF" //| 1.2 Jika anda ingin semua simbol dari Market Watch, gunakan ini: | //#define SYMBOLS_TRADING "MARKET_WATCH" //| Nota: Pilih hanya satu cara dari 1.1 atau 1.2. | //| | //| 2. Jenis acara untuk OnTick(string symbol): | #define CHART_EVENT_SYMBOL CHARTEVENT_TICK //| Nota: jenis acara mesti sesuai dengan | //| ENUM_CHART_EVENT_SYMBOL enumeration. | //| 3. Fail termasuk: | #include <OnTick(string symbol).mqh> //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Fungsi inisialisasi Expert | //| Fungsi ini mesti dinyatakan, walaupun kosong. | //+------------------------------------------------------------------+ int OnInit() { //--- Tambah kod anda di sini... return(0); } //+------------------------------------------------------------------+ //| Fungsi multi tick Expert | //| Gunakan fungsi ini sebagai ganti fungsi standard OnTick() | //+------------------------------------------------------------------+ void OnTick(string symbol) { //--- Tambah kod anda di sini... Print("Acara baru pada simbol: ",symbol); } //+------------------------------------------------------------------+ //| Fungsi ChartEvent | //| Fungsi ini mesti dinyatakan, walaupun kosong. | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // id acara const long& lparam, // parameter acara jenis long const double& dparam, // parameter acara jenis double const string& sparam) // parameter acara jenis string { //--- Tambah kod anda di sini... } //+------------------------------------------------------------------+ //| Fungsi deinitialisasi Expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Tambah kod anda di sini... } //+------------------------------ akhir -------------------------------+
Beberapa ciri:
1. Pengaturan
Semua pengaturan boleh dikonfigurasi menggunakan arahan #define. Untuk memastikan fungsi OnTick(string symbol) berfungsi dengan betul, anda perlu menentukan hanya dua parameter: SYMBOLS_TRADING dan CHART_EVENT_SYMBOL. Yang pertama (SYMBOLS_TRADING) menentukan senarai simbol yang digunakan untuk acara tersebut. Yang kedua (CHART_EVENT_SYMBOL) menentukan jenis acara untuk semua simbol.
SYMBOLS_TRADING mengandungi senarai simbol, sebagai contoh:
#define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF"Senarai mesti disediakan sebagai string, dipisahkan dengan koma. Senarai berakhir dengan akhir baris.
SYMBOLS_TRADING boleh ditentukan seperti berikut:
#define SYMBOLS_TRADING "MARKET_WATCH"Cara ini bermakna semua simbol dari Market Watch akan digunakan. Kaedah ini boleh digunakan untuk mengubah senarai simbol secara langsung. Hanya tambah atau buang simbol yang diperlukan dari Market Watch.
Jenis acara CHART_EVENT_SYMBOL ditentukan oleh bendera atau kombinasi mereka dari enumerasi ENUM_CHART_EVENT_SYMBOL. Lihat butiran di sini (dalam bahasa Rusia).
Berikut adalah contoh jenis acara:
//--- Contoh 1. Acara OnTick: #define CHART_EVENT_SYMBOL CHARTEVENT_TICK //--- Contoh 2. NewBar M1 dan New Bar H1: #define CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1
2. Fail termasuk.
Fail #include OnTick(string symbol).mqh diperlukan, fail ini mengandungi implementasi fungsi OnTick(string symbol). Ia menyediakan cara mudah untuk menggunakan semua fungsi OnTick(string symbol). Beberapa fungsi standard perlu dinyatakan dalam kod Expert Advisor, walaupun kosong.
3. Strategy Tester.
Seperti yang anda tahu (pada masa ini), OnChartEvent tidak disokong dalam Strategy Tester. Untuk menyelesaikan masalah ini, pembolehubah global digunakan untuk mengendalikan acara. Cara ini hanya digunakan dalam Strategy Tester, dalam semua kes lain (akaun nyata/demo) acara diproses melalui OnChartEvent.
Berikut adalah ciri penting. Dalam Strategy Tester, OnTick(string symbol) akan berfungsi pada tick simbol yang ditentukan dalam pengaturan Strategy Tester. Dengan kata lain, ia berfungsi seperti OnTick(), tetapi dipanggil juga apabila terdapat tick baru pada simbol yang dipilih. Untuk berfungsi dengan Strategy Tester, SYMBOLS_TRADING mesti ditentukan sebagai senarai simbol.
4. "Pengintip".
Ia menggunakan "pengintip" (agen-indikator). Fail Spy Control panel MCM.ex5 mesti terletak di folder \MQL5\Indicators\.
5. Fail dari arkib mesti diekstrak ke folder \MQL5. Fail yang diperlukan:
- /MQL5/Experts/OnTick(string symbol).mq5 - Contoh Expert Advisor, kod sumber template;
- /MQL5/Experts/OnTick(string symbol).ex5 - Contoh fail Expert Advisor yang telah dikompilasi;
- /MQL5/Indicators/Spy Control panel MCM.mq5 - Agen-indikator, kod sumber;
- /MQL5/Indicators/Spy Control panel MCM.ex5 - Agen-indikator, fail yang telah dikompilasi;
- /MQL5/Include/OnTick(string symbol).mqh - fail termasuk dengan semua fungsi yang diperlukan untuk pelaksanaan fungsi OnTick(string symbol).
Siaran berkaitan
- Menggunakan MQL5 Wizard untuk Signal Perdagangan '3 Black Crows/3 White Soldiers' + RSI
- MQL5 Wizard: Cipta Isyarat Dagangan dengan Bullish dan Bearish Harami + MFI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Candlestick Bullish/Bearish Harami + Stochastic
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Bullish dan Bearish Engulfing dengan Stochastic