Penggunaan Multicurrency OnTick di MetaTrader 5 untuk Trader

Mike 2011.02.02 03:03 21 0 0
Lampiran

Selamat datang di dunia trading! Kali ini, kita akan membahas implementasi baru dari mode multi-mata uang yang sepenuhnya fungsional di MetaTrader 5. Fitur ini diterapkan dalam fungsi OnTick(string symbol) yang diperluas.

Manfaatnya:

  • Memberikan mode multi-mata uang yang nyata di akun demo dan real.
  • Pengaturan yang sederhana.
  • Daftar peristiwa untuk OnTick(string symbol): dapat dikonfigurasi untuk NewTick dan/atau NewBar.
  • Daftar simbol dapat dikonfigurasi (semua simbol dari Market Watch atau beberapa simbol yang ditentukan).
  • Ketika bekerja dengan simbol Market Watch, memungkinkan pengelolaan peristiwa "on the fly" dalam OnTick(string symbol).
  • Tidak perlu memahami detail kerjanya. Semua kode terdapat dalam file include.
  • Dapat digunakan dalam Strategy Tester.

Template Expert Advisor terlihat sebagai berikut:

//+------------------------------------------------------------------+
//|                                        OnTick(string symbol).mq5 |
//|                                            Copyright 2010, 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"

//+------------------------------------------------------------------+
//|                MULTICURRENCY MODE SETTINGS                       |
//|           of OnTick(string symbol) event handler                 |
//|                                                                  |
//| 1.1 List of symbols needed to proceed in the events:             |
#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"
//| 1.2 If you want all symbols from Market Watch, use this:         |
//#define  SYMBOLS_TRADING    "MARKET_WATCH"
//|     Note: Select only one way from 1.1 or 1.2.                   |
//|                                                                  |
//| 2.  Event type for OnTick(string symbol):                        |
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//|     Note: the event type must corresponds to the                 |
//|                 ENUM_CHART_EVENT_SYMBOL enumeration.             |
//|                                                                  |
//| 3.  Include file:                                                |
#include <OnTick(string symbol).mqh>
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//| This function must be declared, even if it empty.                |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Add your code here...
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Expert multi tick function                                       |
//| Use this function instead of the standard OnTick() function      |
//+------------------------------------------------------------------+
void OnTick(string symbol)
  {
   //--- Add your code here...
   Print("New event on symbol: ",symbol);
  }
  
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//| This function must be declared, even if it empty.                |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event id
                  const long& lparam,   // event param of long type
                  const double& dparam, // event param of double type
                  const string& sparam) // event param of string type
  {
   //--- Add your code here...
  }
  
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   //--- Add your code here...
  }

//+------------------------------ end -------------------------------+

Beberapa fitur:

1. Pengaturan

Semua pengaturan dapat dikonfigurasi menggunakan direktif #define. Untuk kerja yang benar dari fungsi OnTick(string symbol), Anda hanya perlu menentukan dua parameter: SYMBOLS_TRADING dan CHART_EVENT_SYMBOL. Yang pertama (SYMBOLS_TRADING) mendefinisikan daftar simbol yang digunakan untuk peristiwa. Yang kedua (CHART_EVENT_SYMBOL) mendefinisikan jenis peristiwa untuk semua simbol.

Daftar SYMBOLS_TRADING dapat ditentukan sebagai berikut:

#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"

Daftar harus disiapkan sebagai string, dipisahkan oleh koma. Daftar diakhiri dengan akhir baris.

SYMBOLS_TRADING juga dapat didefinisikan sebagai:

#define  SYMBOLS_TRADING    "MARKET_WATCH"

Ini berarti bahwa semua simbol dari Market Watch akan digunakan. Metode ini dapat digunakan untuk mengubah daftar simbol "on the fly". Anda hanya perlu menambahkan atau menghapus simbol yang diperlukan dari Market Watch.

Tipe peristiwa CHART_EVENT_SYMBOL didefinisikan dengan bendera atau kombinasi mereka dari enumerasi ENUM_CHART_EVENT_SYMBOL. Lihat detailnya di sini (dalam bahasa Rusia).

Berikut adalah contoh tipe peristiwa:

//--- Contoh 1. Peristiwa 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.  File Include.

File #include OnTick(string symbol).mqh diperlukan, karena file ini berisi implementasi dari fungsi OnTick(string symbol). Ini memberikan cara yang sederhana untuk menggunakan semua fungsi OnTick(string symbol). Beberapa fungsi standar harus dideklarasikan dalam kode Expert Advisor, meskipun kosong.

3. Strategy Tester.

Seperti yang Anda ketahui, saat ini, OnChartEvent tidak didukung dalam Strategy Tester. Untuk mengatasi masalah ini, variabel global digunakan untuk menangani peristiwa. Cara ini hanya digunakan dalam Strategy Tester, dalam semua kasus lain (akun real/demo), peristiwa diproses melalui OnChartEvent.

Fitur ini. Dalam Strategy Tester, OnTick(string symbol) akan bekerja pada tick dari simbol yang ditentukan dalam pengaturan Strategy Tester. Dengan kata lain, ini berfungsi seperti OnTick(), tetapi juga dipanggil ketika tick baru pada simbol yang dipilih. Untuk bekerja dengan Strategy Tester, SYMBOLS_TRADING harus ditentukan sebagai daftar simbol.

4. "Spies".

Ini menggunakan "spies" (indikator agen). File Spy Control panel MCM.ex5 harus berada di folder \MQL5\Indicators\.

5. File dari arsip harus diekstrak ke folder \MQL5. File yang diperlukan:

  • /MQL5/Experts/OnTick(string symbol).mq5 - Contoh Expert Advisor, kode sumber template;
  • /MQL5/Experts/OnTick(string symbol).ex5 - Contoh file Expert Advisor yang sudah dikompilasi;
  • /MQL5/Indicators/Spy Control panel MCM.mq5 - Indikator agen, kode sumber;
  • /MQL5/Indicators/Spy Control panel MCM.ex5 - Indikator agen, file yang sudah dikompilasi;
  • /MQL5/Include/OnTick(string symbol).mqh - file include dengan semua fungsi yang diperlukan untuk implementasi fungsi OnTick(string symbol).

Daftar
Komentar 0