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

การแสดงผลการปรับแต่งระบบเทรดใน MetaTrader 5 แบบเรียลไทม์

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

MetaTrader 5 Strategy Tester ช่วยให้เราสามารถดูค่าทางสถิติของระบบการเทรดหลังจากการทดสอบแต่ละรอบได้อย่างง่ายดาย

เราสามารถดึงค่าทางสถิติได้โดยใช้ฟังก์ชัน TesterStatistics() ซึ่งถูกเรียกใช้ภายในฟังก์ชัน OnTester() และ OnDeinit()

ด้วยการนำฟังก์ชันที่ช่วยในการทำงานกับผลการปรับแต่ง FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() และ FrameAdd() มาใช้ ทำให้เทรดเดอร์สามารถทำการปรับแต่งแบบแสดงผลได้ในขณะนั้น ซึ่งข้อมูลที่จำเป็นสามารถประมวลผลและแสดงผลได้ในระหว่างการปรับแต่ง EA หรือการแก้ปัญหาทางคณิตศาสตร์

เราจะมาพิจารณารายละเอียดของการแสดงผลผลการทดสอบของ Expert Advisor ในระหว่างการปรับแต่งตามที่กล่าวถึงในบทความ "การแสดงผลกลยุทธ์ใน MetaTrader 5 Tester".


1. การแสดงผลการเปลี่ยนแปลงยอดเงินในระหว่างการปรับแต่ง

1.1. การดาวน์โหลดไฟล์

EA ชื่อ Moving Averages_With_Frames.mq5 จะต้องถูกคัดลอกไปยัง terminal_data_folder\MQL5\Experts

ไฟล์ที่ใช้ในการทำงานของ EA ได้แก่:

  • FrameGenerator.mqh - คลาส CFrameGenerator ที่ใช้ในการแสดงผลการปรับแต่ง;
  • SpecialChart.mqh - คลาส CSpecialChart ที่ใช้ในการวาดกราฟยอดเงินหลายกราฟ;
  • SimpleTable.mqh - คลาส CSimpleTable เป็นตารางง่ายๆ ที่มีสองคอลัมน์;
  • ColorProgressBar.mqh - คลาส CColorProgressBar เป็นกราฟแท่งความก้าวหน้าที่ใช้สองสี.

ไฟล์เหล่านี้จะต้องถูกคัดลอกไปยัง terminal_data_folder\MQL5\Include

โปรแกรมใน Code Base สามารถดาวน์โหลดได้โดยอัตโนมัติผ่าน MetaTrader 5 terminal (ในแท็บ CodeBase ของหน้าต่าง "Toolbox"). เพื่อทำเช่นนี้ ให้เลือก "ดาวน์โหลด" ทุกโค้ดจะถูกดาวน์โหลดและจัดเก็บในโฟลเดอร์ของมัน

รูปที่ 1. ดาวน์โหลดโปรแกรม CodeBase ผ่าน MetaTrader 5

รูปที่ 1. ดาวน์โหลดโปรแกรม CodeBase ผ่าน MetaTrader 5


1.2. การทดสอบ Expert Advisor

EA ชื่อ Moving Averages_With_Frames.mq5 จะต้องถูกเปิดใน Strategy Tester

การตั้งค่าการทดสอบ:

การตั้งค่า Moving Averages_With_Frames.mq5

รูปที่ 2. การตั้งค่า Moving Averages_With_Frames.mq5

ตัวเลือกการปรับแต่ง:

พารามิเตอร์การปรับแต่ง Moving Averages_With_Frames.mq5

รูปที่ 3. พารามิเตอร์การปรับแต่ง Moving Averages_With_Frames.mq5


ในระหว่างการปรับแต่ง EA จะแสดงการเปลี่ยนแปลงยอดเงินและข้อมูลสถิติจากการปรับแต่ง:

รูปที่ 4. การปรับแต่ง Moving Averages_With_Frames.mq5

รูปที่ 4. การปรับแต่ง Moving Averages_With_Frames.mq5

กระบวนการปรับแต่ง:




1.3. หลักการทำงานของ Expert Advisor

EA ชื่อ Moving Averages_With_Frames.mq5 ถูกสร้างขึ้นจาก Moving Averages.mq5 ที่มีอยู่ในแพ็คเกจมาตรฐานของ MetaTrader 5 (MQL5\Experts\Examples\Moving Average)

โค้ดต่อไปนี้ถูกเพิ่มเข้ามาเพื่อการแสดงผลผลลัพธ์:

//--- เชื่อมต่อโค้ดสำหรับทำงานกับผลการปรับแต่ง
#include <FrameGenerator.mqh>
//--- สร้างกรอบ
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| ฟังก์ชัน Tester                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- ใส่ฟังก์ชันการคำนวณเกณฑ์การปรับแต่งของคุณที่นี่
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- เรียกใช้หลังจากการทดสอบแต่ละครั้งและส่งเกณฑ์การปรับแต่งเป็นพารามิเตอร์
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| ฟังก์ชัน TesterInit                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- เตรียมกราฟสำหรับแสดงหลายเส้นยอดเงิน
   fg.OnTesterInit(3); // พารามิเตอร์ตั้งค่าจำนวนเส้นยอดเงินบนกราฟ
  }
//+------------------------------------------------------------------+
//| ฟังก์ชัน TesterPass                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- จัดการผลการทดสอบที่ได้รับและแสดงกราฟิก
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| ฟังก์ชัน TesterDeinit                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- สิ้นสุดการปรับแต่ง
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  การจัดการเหตุการณ์กราฟ                                    |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- เริ่มแสดงกรอบหลังจากการปรับแต่งเสร็จสิ้นเมื่อคลิกที่หัวเรื่อง
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 คือ ช่วงเวลาที่หยุดในมิลลิวินาทีระหว่างการถ่ายภาพ
  }
//+------------------------------------------------------------------+

โค้ดนี้สามารถนำไปใช้ได้ใน EA ใดๆ ก็ได้

คลาส CFrameGenerator ใช้สำหรับทำงานกับผลการปรับแต่ง คลาสนี้มีวิธีการที่ใช้ในการจัดการเหตุการณ์ของ Strategy Tester (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) และวิธีการสำหรับเหตุการณ์กราฟ (OnChartEvent()). วัตถุกราฟิกที่ใช้จะถูกเตรียมในวิธี OnTesterInit() ของคลาส CFrameGenerator

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

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

กรอบจะถูกจัดการในวิธี OnTesterPass() ของคลาส CFrameGenerator การอ่านการทำงานของกรอบจะถูกดำเนินการโดยฟังก์ชัน FrameNext() การร้องขอพารามิเตอร์การนำเข้าของ Expert Advisor ที่กรอบถูกสร้างขึ้นจะถูกดำเนินการโดยฟังก์ชัน FrameInputs()

หลังจากได้รับข้อมูลแล้ว มันจะถูกแสดงและอัปเดตโดยใช้วิธีการของคลาส CSimpleTable, CColorProgressBar และ CSpecialChart

ควรทราบว่าการจัดการฟังก์ชัน OnTester() จะดำเนินการ บนตัวทดสอบ หลังจากการปรับแต่งปัจจุบันเสร็จสิ้น ซึ่งอนุญาตให้ใช้ความสามารถของ MQL5 Cloud Network ในการทำการคำนวณทางคณิตศาสตร์ที่ซับซ้อนได้ หากต้องการให้วางส่วนการคำนวณในตัวจัดการเหตุการณ์ OnTester

ตัวอย่างการใช้การปรับแต่งเพื่อเร่งการคำนวณทางคณิตศาสตร์ (การแปลงคลื่นต่อเนื่องของ ฟังก์ชัน Weierstrass) จะถูกแสดงในหัวข้อ "การจัดการกระบวนการปรับแต่งในเวลาจริงและการถ่ายโอนข้อมูลจำนวนมากจากเอเจนต์ไปยัง MetaTrader 5".


2. ตัวอย่างการทำงานกับคลาส CSimpleTable, CColorProgressBar และ CSpecialChart

สคริปต์ Test_SimpleTable.mq5 และ Test_CSpecialChart.mq5 ที่แนบมามีตัวอย่างการทำงานกับคลาส CSimpleTable, CColorProgressBar และ CSpecialChart ซึ่งควรถูกคัดลอกไปยัง terminal_data_folder\MQL5\Scripts.

รูปที่ 5. ผลลัพธ์การทำงานของสคริปต์ Test_SimpleTable.mq5

รูปที่ 5. ผลลัพธ์การทำงานของสคริปต์ Test_SimpleTable.mq5

รูปที่ 6. ผลลัพธ์การทำงานของสคริปต์ Test_CSpecialChart.mq5

รูปที่ 6. ผลลัพธ์การทำงานของสคริปต์ Test_CSpecialChart.mq5


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

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