สวัสดีครับเพื่อน ๆ เทรดเดอร์! วันนี้เรามาพูดถึงฟีเจอร์ใหม่ของ 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. |//+------------------------------------------------------------------+intOnInit() { //--- Add your code here... return(0); } //+------------------------------------------------------------------+//| Expert multi tick function |//| Use this function instead of the standard OnTick() function |//+------------------------------------------------------------------+voidOnTick(string symbol) { //--- Add your code here... Print("New event on symbol: ",symbol); } //+------------------------------------------------------------------+//| ChartEvent function |//| This function must be declared, even if it empty. |//+------------------------------------------------------------------+voidOnChartEvent(constint id, // event id constlong& lparam, // event param of long type constdouble& dparam, // event param of double type conststring& sparam) // event param of string type { //--- Add your code here... } //+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint 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)

ความคิดเห็น 0