Laman utama Perdagangan Sistem Siaran

Pengendalian Acara OnTick Multidana dalam MetaTrader 5

Lampiran
280.zip (5 KB, Muat turun 0 kali)

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

Komen (0)