หน้าแรก การเทรดด้วยระบบ โพสต์

แนะนำ MCM Control Panel สำหรับ EA และอินดิเคเตอร์หลายสกุลเงิน

ไฟล์แนบ
215.zip (19.4 KB, ดาวน์โหลด 0 ครั้ง)

หนึ่งในประโยชน์ของภาษา MQL5 คือความสามารถในการใช้ตัวชี้วัดและที่ปรึกษาผู้เชี่ยวชาญ (EA) หลายสกุลเงิน ลองดู Multicurrency OnTickMarketWatch tick event handler ใน MQL5 CodeBase

การใช้แนวคิดที่เสนอในสคริปต์อาจไม่สะดวกนัก ในกรณีที่มีหลายเหตุการณ์ อาจเกิดการล้นของคิวเหตุการณ์ได้

นี่คือหมายเหตุจาก MQL5 Reference:

เทอร์มินัลของลูกค้าเพิ่มเหตุการณ์ที่ปรากฏเข้าสู่คิวเหตุการณ์ ดังนั้นเหตุการณ์จะถูกประมวลผลทีละอย่างตามลำดับที่ได้รับ มีข้อยกเว้นสำหรับเหตุการณ์ NewTick หากในคิวมีเหตุการณ์ดังกล่าวอยู่แล้วหรือเหตุการณ์นี้กำลังถูกประมวลผล เหตุการณ์ NewTick ใหม่จะไม่ถูกเพิ่มเข้าไปในคิว

ขนาดของคิวเหตุการณ์มีการจำกัด ขณะเกิดการล้นของคิว เหตุการณ์เก่าจะถูกลบโดยไม่ได้รับการประมวลผลเพื่อให้สามารถรับเหตุการณ์ใหม่ได้ ดังนั้นจึงแนะนำให้เขียนตัวจัดการเหตุการณ์ที่มีประสิทธิภาพ และไม่แนะนำให้ใช้ลูปไม่สิ้นสุด (ยกเว้นสคริปต์ที่จัดการกับเหตุการณ์ Start เท่านั้น)

นอกจากนี้ บางครั้งอาจจำเป็นต้องคำนวณค่าของตัวชี้วัดใหม่ก็ต่อเมื่อมีแท่งใหม่ปรากฏขึ้น อีกทั้งถ้าคุณต้องการปิดการซื้อขาย "ตามความไหล" บนสัญลักษณ์บางตัวใน EA หลายสกุลเงิน เพื่อเปลี่ยนกรอบเวลาของสัญลักษณ์บางตัว หรือสิ่งอื่นๆ

สิ่งที่ "อื่นๆ" อาจเป็นข้อมูลภายนอก MCM (MultiCurrency Mode) Control Panel ถูกสร้างขึ้นจากแนวคิดนี้

นอกจากนี้ยังสามารถใช้ในกรณีการซื้อขายสกุลเงินเดียวได้อีกด้วย

คุณสมบัติของ "MCM Control Panel" (เวอร์ชันการแข่งขัน):

มีฟังก์ชันขั้นต่ำที่จำเป็นสำหรับการใช้โหมดหลายสกุลเงินใน EA และอินดิเคเตอร์:

  • เพิ่ม/ลบสัญลักษณ์สำหรับการซื้อขายและวิเคราะห์
  • สามารถติดตามเหตุการณ์ "new tick" และ "new bar" สำหรับสัญลักษณ์และช่วงเวลาใดๆ
  • การตั้งค่าทั้งหมดสามารถเปลี่ยนแปลงได้ "ตามความไหล" โดยไม่ต้องรีสตาร์ท EA หรืออินดิเคเตอร์
  • แผงสามารถใช้กับ EA และอินดิเคเตอร์ของเราได้
  • ยังสามารถรวมอยู่ในโค้ดของคุณ จะถูกโหลดพร้อมกับพวกเขา
  • มันโปร่งใส คุณไม่จำเป็นต้องเพิ่มโค้ดของ MCM Control Panel ลงใน EA หรืออินดิเคเตอร์ของคุณ

การใช้ "MCM Control Panel" คุณสามารถเพิ่มคุณสมบัติของคุณเอง ดูรายละเอียดเพิ่มเติมด้านล่าง

การบันทึก/กู้คืนการตั้งค่า Panel ไม่ได้รับการสนับสนุนในเวอร์ชันนี้


เริ่มต้น MCM Control Panel

การเปิด "MCM Control Panel" สามารถทำได้หลายวิธี: 

  • แนบ "iControl panel MCM" เข้ากับกราฟ
  • เปิดสคริปต์ "scControl panel MCM" สคริปต์นี้จะโหลดตัวชี้วัด "iControl panel MCM"
  • โหลด Panel จาก EA หรืออินดิเคเตอร์ของคุณ ดูรายละเอียดใน "exControl panel MCM"

ในกรณีที่ 3 แผงจะถูกโหลดพร้อมกับ EA หรืออินดิเคเตอร์ของเราและแนบเข้ากับกราฟ

EA ของคุณควรมีตัวจัดการเหตุการณ์ OnChartEvent() เพื่อประมวลผลเหตุการณ์จาก MCM Control Panel

อินเตอร์เฟซ

อินเตอร์เฟซผู้ใช้งานง่าย ถูกออกแบบเป็นเมนู ขนาดและสีของเมนูสามารถตั้งค่าได้จากพารามิเตอร์นำเข้า

หน้าตาเป็นดังนี้:


 

การออกแบบ

แผงถูกใช้เพื่อกำหนดเหตุการณ์สำหรับ EA และอินดิเคเตอร์หลายสกุลเงิน

ขนาดและตำแหน่งของแผงขึ้นอยู่กับขนาดกราฟและขนาดฟอนต์ (ที่กำหนดในพารามิเตอร์นำเข้า) เพื่อให้พื้นที่ทำงานว่าง แผงสามารถย่อได้


 

ขนาดของแผงสามารถเปลี่ยนได้โดยการเปลี่ยนขนาดฟอนต์ในพารามิเตอร์นำเข้า (ขนาดฟอนต์=10 ตามค่าเริ่มต้น):

 

คุณสามารถตั้งค่าสีใดๆ ที่คุณต้องการ

ตัวอย่างเช่น โทนสีชมพู:


โทนสี EMO:


 

 

ใช้งานง่าย

เมนูใช้งานง่าย สะดวกต่อการใช้งาน

ปุ่ม "MCM Control Panel" มีฟีเจอร์เพิ่มเติม (ไม่ได้รวมในเวอร์ชันนี้):


โดยใช้ปุ่ม "Chart" คุณสามารถเปลี่ยนสัญลักษณ์และกรอบเวลาได้ง่ายๆ เพียงเลือก:


 

ปุ่ม "Events" จะช่วยให้คุณเปิด/ปิดเหตุการณ์ "ตามความไหล" (โดยไม่ต้องรีสตาร์ท EA หรืออินดิเคเตอร์) สำหรับสัญลักษณ์บางตัวและระบุประเภทเหตุการณ์ที่ต้องการ เหตุการณ์เหล่านี้สามารถประมวลผลได้ภายในฟังก์ชัน OnChartEvent() ของ EA หรืออินดิเคเตอร์ เมนูสัญลักษณ์ประกอบด้วยเฉพาะสัญลักษณ์ที่เลือกจาก "Market Watch" คุณสามารถรวมเหตุการณ์ใดๆ ก็ได้ ทุกเหตุการณ์จะถูกประมวลผล

ตัวอย่างเช่น ไม่จำเป็นต้องกังวลเกี่ยวกับการเกิดขึ้นของ tick/bar ใหม่สำหรับสัญลักษณ์ในกรอบเวลา แผงจะส่งเหตุการณ์:


  

นี่คือ "ช่วยเหลือ":


 

ความรู้และการนำไปใช้

การแก้ปัญหาของฉันได้เผยแพร่ใน Multicurrency OnTickMarketWatch tick event handler แต่แผงนี้มีฟีเจอร์เพิ่มเติม:

  • "MCM Control panel MCM" ให้อินเตอร์เฟซซึ่งไม่ได้ถูกติดตั้งในเทอร์มินัลของลูกค้าโดยตรง ทำให้คุณสามารถใช้โหมดหลายสกุลเงินผ่านตัวจัดการเหตุการณ์ OnChartEvent() อีกคุณสมบัติคือความสามารถในการเปลี่ยนการตั้งค่า "ตามความไหล"
  • ในการสร้างเหตุการณ์สำหรับตัวจัดการเหตุการณ์ OnChartEvent() แผง MCM Control Panel ใช้ "เอเย่นต์" ของตัวเอง (ตัวชี้วัดที่ถูกเรียกใช้โดยแผง MCM Control Panel บนสัญลักษณ์บางตัว) เพื่อจัดหาเหตุการณ์สำหรับการซื้อขายหลายสกุลเงิน
  • แผงสามารถรวมอยู่ใน EA หรืออินดิเคเตอร์
  • แผง MCM Control ให้โอกาสใหม่สำหรับนักพัฒนา MQL5
  • IMHO แผงนี้เป็นตัวอย่างของโครงสร้างใหม่ของ EA และอินดิเคเตอร์ ฉันจะให้ตัวอย่างเพิ่มเติมในภายหลัง

ข้อมูลเกี่ยวกับเหตุการณ์และการแจ้งเตือน

แผงมีแถบสถานะเพื่อแสดงเหตุการณ์


การติดตั้ง MCM Control Panel

แตกไฟล์ mcm_control_panel.zip ลงในโฟลเดอร์ของเทอร์มินัลลูกค้า หลังจากนั้นจะปรากฏไฟล์ดังต่อไปนี้:

  • /mql5/experts/exControl panel MCM.mq5 - ตัวอย่างของ EA;
  • /mql5/scripts/scControl panel MCM.mq5  - ตัวอย่างของสคริปต์;
  • /mql5/indicators/iControl panel MCM.mq5 - ตัวชี้วัด เอนจินหลักของ "MCM Control panel";
  • /mql5/indicators/Spy Control panel MCM.mq5 - ตัวชี้วัด "MCM Control panel" agent
  • /mql5/include/Control panel MCM.mqh - ชุดคลาสและฟังก์ชันของ "MCM Control panel".

ถัดไป ให้คอมไพล์อินดิเคเตอร์ สคริปต์ และ EA


การเปิดใช้งาน MCM Control Panel

การเปิดใช้งาน MCM Control Panel สามารถทำได้โดยการแนบตัวชี้วัด iControl panel MCM.mq5 เข้ากับกราฟใดก็ได้

แผงสามารถเปิดจาก EA ได้ โดยเพียงแค่แนบ EA "exControl panel MCM" เข้ากับกราฟ:


 

เป็นตัวอย่างของการซื้อขายหลายสกุลเงิน ฉันได้เขียน EA MultiTrend ตัวชี้วัดจะวาดแนวโน้มของ USD โดยอิงจากการวิเคราะห์ 4 สกุลเงิน:

นี่คือโค้ด:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                                  Copyright 2010, Lizar | 
//|                            https://www.mql5.com/ru/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "This Expert Advisor uses the MCM Control Panel"
input color bg_color=Gray;         // Menu color 
input color font_color=Gainsboro;  // Text color 
input color select_color=Yellow // Selected text color 
input int font_size=10;          // Font size 
#include <Control panel MCM.mqh> //<--- Include file 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- MCM Control Panel initialization.     
//--- It isn't necessary to set colors, if not specified, the default colors will be used.      
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---    
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Expert deinitialization function                                   | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- MCM Control Panel deinitialization  
  }
//+------------------------------------------------------------------+ 
//| OnChartEvent event handler.                                      | 
//| See MQL5 Reference for details.                                  | 
//| Can be used with MCM Control panel for multicurrency trading     | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // event identifier:                                      
                  // if id-CHARTEVENT_CUSTOM==0 - initialization event (when prev_calculated==0)
                  const long&   lparam, // timeframe 
                  const double& dparam, // price    
                  const string& sparam  // symbol 
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                             ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 

พารามิเตอร์ OnChartEvent()

แผงสร้างเหตุการณ์ที่กำหนดเอง เหตุการณ์เหล่านี้สามารถประมวลผลใน EA หรืออินดิเคเตอร์โดยใช้ตัวจัดการเหตุการณ์ OnChartEvent()

พารามิเตอร์นำเข้า:

  • id - event id:
          หาก id-CHARTEVENT_CUSTOM !=0 - จะเท่ากับสัญลักษณ์ดัชนีในหน้าต่าง "Market Watch";
  • lparam  -  ธงเหตุการณ์ ดู ENUM_CHART_EVENT_SYMBOL enumeration ใน Control panel MCM.mqh.
  • dparam -  ราคาติกหรือราคาการเปิดของแท่งใหม่ในกรอบเวลาใดกรอบเวลาหนึ่ง
  • sparam -  ชื่อสัญลักษณ์

รายการเหตุการณ์ที่รองรับใน MCM Control Panel

โดยใช้พารามิเตอร์ lparam แผงสามารถส่งเหตุการณ์ที่กำหนดเองได้สูงสุด 64 เหตุการณ์ในสัญลักษณ์ ในเวอร์ชันนี้เหตุการณ์ที่รองรับ ได้แก่: 

  • เหตุการณ์ "Initialization" (Initialization);
  • เหตุการณ์ "New tick" (tick);
  • เหตุการณ์ "New bar" บนกราฟ M1 (M1);
  • เหตุการณ์ "New bar" บนกราฟ M2 (M2);
  • เหตุการณ์ "New bar" บนกราฟ M3 (M3);
  • เหตุการณ์ "New bar" บนกราฟ M4 (M4);
  • เหตุการณ์ "New bar" บนกราฟ M5 (M5);
  • เหตุการณ์ "New bar" บนกราฟ M6 (M6);
  • เหตุการณ์ "New bar" บนกราฟ M10 (M10);
  • เหตุการณ์ "New bar" บนกราฟ M12 (M12);
  • เหตุการณ์ "New bar" บนกราฟ M15 (M15);
  • เหตุการณ์ "New bar" บนกราฟ M20 (M20);
  • เหตุการณ์ "New bar" บนกราฟ M30 (M30);
  • เหตุการณ์ "New bar" บนกราฟ H1 (H1);
  • เหตุการณ์ "New bar" บนกราฟ H2 (H2);
  • เหตุการณ์ "New bar" บนกราฟ H3  (H3);
  • เหตุการณ์ "New bar" บนกราฟ H4 (H4);
  • เหตุการณ์ "New bar" บนกราฟ H6 (H6);
  • เหตุการณ์ "New bar" บนกราฟ H8 (H8);
  • เหตุการณ์ "New bar" บนกราฟ H12 (H12);
  • เหตุการณ์ "New bar" บนกราฟ D1 (D1);
  • เหตุการณ์ "New bar" บนกราฟ W1 (W1);
  • เหตุการณ์ "New bar" บนกราฟ MN1 (MN1); 

คำอธิบายเหตุการณ์ที่ส่งคืนโดย EventDescription() จะปรากฏในวงเล็บ (Initialization, tick, Mxx เป็นต้น) ฟังก์ชัน EventDescription สามารถพบได้ใน Control panel MCM.mqh (ตาม ENUM_CHART_EVENT_SYMBOL enumeration)

เหตุการณ์ "Initialization" จะเกิดขึ้นเมื่อ prev_calculated=0 ซึ่งสามารถใช้เตรียมข้อมูลได้ เช่น คำนวณค่าของตัวชี้วัดใหม่


การตั้งค่าเหตุการณ์

ในการตั้งค่าเหตุการณ์ที่ต้องการ ให้คลิกที่ปุ่ม "Events" เลือกสัญลักษณ์และประเภทเหตุการณ์ เหตุการณ์ที่เลือกจะแสดงเป็นสีเหลือง (หรือสีที่เลือกในพารามิเตอร์นำเข้าสำหรับตัวชี้วัด) คุณสามารถเลือกเหตุการณ์หนึ่งหรือหลายเหตุการณ์ทั้งหมดจะถูกรวมเข้ากับ EA หลายสกุลเงินของเรา เพื่อใช้การเปลี่ยนแปลง ให้คลิกที่ปุ่ม "Enable/Disable events"

กระบวนการเดียวกันนี้สามารถทำได้สำหรับสัญลักษณ์ที่จำเป็นทั้งหมด


 

นี่คือบันทึกจากแท็บ "Experts": 


 

โพสต์ที่เกี่ยวข้อง

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