สวัสดีครับเพื่อน ๆ เทรดเดอร์! วันนี้เรามาพูดถึงฟีเจอร์ใหม่ของ MetaTrader 5 ที่ทุกคนรอคอยกันนะครับ นั่นก็คือการใช้งานแบบหลายสกุลเงิน (Multicurrency) ในฟังก์ชัน OnTick(string symbol) ที่จะช่วยให้การเทรดของเรามีประสิทธิภาพมากยิ่งขึ้น!
ข้อดีของการใช้งาน Multicurrency:
- สามารถใช้งานได้ทั้งบัญชีทดลองและบัญชีจริง
- ตั้งค่าได้ง่าย ไม่ยุ่งยาก
- สามารถปรับแต่งรายการเหตุการณ์ใน OnTick(string symbol): NewTick และ/หรือ NewBar ได้ตามต้องการ
- สามารถกำหนดรายการสัญลักษณ์ได้ (สามารถเลือกได้จาก Market Watch หรือบางสัญลักษณ์ที่ระบุ)
- เมื่อทำงานกับสัญลักษณ์จาก Market Watch สามารถจัดการเหตุการณ์ได้อย่างรวดเร็วใน OnTick(string symbol)
- ไม่จำเป็นต้องเข้าใจรายละเอียดการทำงานทั้งหมด เพราะโค้ดจะถูกเก็บในไฟล์ include
- สามารถใช้ได้ใน Strategy Tester
ตัวอย่างเทมเพลตของ Expert Advisor มีลักษณะดังนี้:
//+------------------------------------------------------------------+ //| 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" //+------------------------------------------------------------------+ //| 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 -------------------------------+
ฟีเจอร์เพิ่มเติม:
1. การตั้งค่า
การตั้งค่าทั้งหมดสามารถปรับแต่งได้โดยใช้คำสั่ง #define สำหรับการทำงานของฟังก์ชัน OnTick(string symbol) คุณต้องระบุแค่สองพารามิเตอร์เท่านั้นคือ: SYMBOLS_TRADING และ CHART_EVENT_SYMBOL ตัวแรก (SYMBOLS_TRADING) จะกำหนดรายชื่อสัญลักษณ์ที่ใช้สำหรับเหตุการณ์ ส่วนตัวที่สอง (CHART_EVENT_SYMBOL) จะกำหนดประเภทเหตุการณ์สำหรับทุกสัญลักษณ์
SYMBOLS_TRADING สามารถกำหนดได้ว่า:
#define SYMBOLS_TRADING "EURUSD","GBPUSD","USDJPY","USDCHF"รายการต้องอยู่ในรูปแบบของสตริง แยกด้วยเครื่องหมายจุลภาค และรายการจะสิ้นสุดเมื่อถึงบรรทัดใหม่
SYMBOLS_TRADING สามารถกำหนดได้ว่า:
#define SYMBOLS_TRADING "MARKET_WATCH"วิธีนี้หมายความว่าทุกสัญลักษณ์จาก Market Watch จะถูกใช้ ซึ่งสามารถใช้ในการเปลี่ยนรายชื่อสัญลักษณ์ได้อย่างรวดเร็ว
2. ไฟล์ Include.
ไฟล์ #include OnTick(string symbol).mqh เป็นไฟล์ที่จำเป็นสำหรับการทำงานของฟังก์ชัน OnTick(string symbol) ซึ่งทำให้การใช้งานง่ายขึ้น ฟังก์ชันมาตรฐานบางตัวต้องประกาศในโค้ดของ Expert Advisor แม้ว่าอาจจะว่างเปล่า
3. Strategy Tester.
ตามที่ทราบกันดีว่า (ในปัจจุบัน) OnChartEvent ไม่รองรับใน Strategy Tester เพื่อแก้ปัญหานี้ ได้มีการใช้ตัวแปรทั่วไประดับโลกในการจัดการเหตุการณ์ วิธีนี้จะใช้เฉพาะใน Strategy Tester เท่านั้น ในกรณีอื่น ๆ (ในบัญชีจริง/ทดลอง) เหตุการณ์จะถูกประมวลผลผ่าน OnChartEvent
ฟีเจอร์นี้ ใน Strategy Tester ฟังก์ชัน OnTick(string symbol) จะทำงานตามคำติชมของสัญลักษณ์ที่ระบุในการตั้งค่าของ Strategy Tester กล่าวคือ มันทำงานคล้ายกับ OnTick() แต่จะถูกเรียกเมื่อมีการส่งสัญญาณใหม่ในสัญลักษณ์ที่เลือก สำหรับการทำงานกับ Strategy Tester ต้องระบุ SYMBOLS_TRADING เป็นรายชื่อสัญลักษณ์
4. "สายลับ".
มันใช้ "สายลับ" (เอเจนต์-อินดิเคเตอร์) ไฟล์ "Spy Control panel MCM.ex5" ต้องอยู่ในโฟลเดอร์ \MQL5\Indicators\
5. ไฟล์จาก archive ต้องถูกแตกไฟล์เข้าไปในโฟลเดอร์ \MQL5 ไฟล์ที่จำเป็น:
- /MQL5/Experts/OnTick(string symbol).mq5 - ตัวอย่างของ Expert Advisor, โค้ดต้นฉบับของเทมเพลต;
- /MQL5/Experts/OnTick(string symbol).ex5 - ตัวอย่างของ Expert Advisor ไฟล์ที่ถูกคอมไพล์;
- /MQL5/Indicators/Spy Control panel MCM.mq5 - เอเจนต์-อินดิเคเตอร์, โค้ดต้นฉบับ;
- /MQL5/Indicators/Spy Control panel MCM.ex5 - เอเจนต์-อินดิเคเตอร์, ไฟล์ที่ถูกคอมไพล์;
- /MQL5/Include/OnTick(string symbol).mqh - ไฟล์ include ที่มีฟังก์ชันทั้งหมดที่จำเป็นสำหรับการทำงานของฟังก์ชัน OnTick(string symbol)
โพสต์ที่เกี่ยวข้อง
- Ilan 1.6 Dynamic HT: ระบบเทรดอัจฉริยะสำหรับ MetaTrader 5
- การสร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Morning/Evening Stars + RSI
- MQL5 Wizard: สร้างสัญญาณการเทรดจาก Bullish Harami/Bearish Harami พร้อม MFI
- MQL5 Wizard: ระบบเทรดสัญญาณจาก Hammer/Hanging Man + MFI บน MetaTrader 5
- MQL5 Wizard: สร้างสัญญาณเทรดจาก Bullish Harami/Bearish Harami + Stochastic สำหรับ MetaTrader 5