Custom Functions คือ

ฉบับย่อ

  • Custom functions คือ ฟังก์ชันที่ผู้เขียนกำหนดเพื่อที่จะแยก Logic ที่ซับซ้อน หรือ ที่มีการใช้งานซ้ำๆ ออกจาก code หลักเพื่อทำให้มันง่ายขึ้น
  • เราได้อธิบายการจัดรูปแบบ Custom functions พอสังเขปเอาไว้ให้ดูด้านล่างพร้อมผลการ backtest

Custom functions คือ ฟังก์ชันที่ผู้เขียนกำหนดเอง เพื่อที่จะแยก Logic ที่ซับซ้อน หรือ มีการใช้งานซ้ำๆ ออกจากส่วนหลักของ code ซึ่งทำให้ code สะอาด และง่ายต่อการอ่าน และเช็คข้อผิดพลาดมากขึ้น

การสร้าง custom function ใน MQL สามารถทำได้โดยการใช้คำสั่ง “void” หรือ “double”, “int”, “string” ขึ้นอยู่กับประเภทของข้อมูลที่คุณต้องการให้ฟังก์ชันคืนค่า ในบทนี้ผมจะแบ่งหัวข้อในการอธิบายออกเป็นสองข้อ

  • หัวข้อที่ 1 คือ การจัดการแบ่ง Source Code เก่าให้อยู่ในรูป Custom Functions โดยที่ Custom Function คือ การเขียนโปรแกรมฟังก์ชั่นตามต้องการของผู้ใช้งานเอง ฟังก์ชั่นเหล่านี้สามารถถูกเรียกใช้ในโปรแกรม MQL4 โดยอ้างอิงชื่อของฟังก์ชั่นและส่งค่าพารามิเตอร์เข้าไปในฟังก์ชั่น
    • ข้อดี คือ ทำให้ง่ายง่ายต่อการเรียกใช้งานและปรับปรุง Source Code และหลังจากนั้นจะดำเนินการเพิ่ม Stop loss ให้กับ EA Forex  ซึ่งจากประสบการณ์ของผู้เขียนพบว่า “การเพิ่ม Stoploss ให้กับ EA ระบบ Grid Martingale นั้นจะช่วยให้ Drawndown ของระบบลดลง”
  • หัวข้อที่สอง ผมจะแสดงผลการ Backtest ของ EA ก่อนและหลังปรับปรุง Source Code

 

การใช้งานฟังก์ชันสำเร็จรูปเป็นวิธีที่ดีในการลดการเขียนโค้ดที่ซ้ำซ้อน”

 

 

ส่วนที่ 1 การจัดรูปแบบ Custom Functions

วิธีหนึ่งที่ช่วยให้การจัดการ code เก่าให้มีประสิทธิภาพและสามารถบำรุงรักษาได้ง่ายขึ้นโดยเน้นการแบ่ง code ออกเป็นฟังก์ชันเล็ก ๆ ที่มีหน้าที่เฉพาะหน้าและมีความสัมพันธ์กันอย่างชัดเจน ทำให้ง่ายต่อการอ่านและแก้ไข code ในอนาคตและช่วยลดความซับซ้อนของ code ลงด้วย ซึ่งวิธีการมีดังนี้ครับ

 

1. เปิด Source Code VR Smart Grid Lite

รูปที่ 1 แสดงวิธีการเปิด Source Code VR Smart Grid Lite (Original) ผ่าน โปรแกรม Meta Editor

 

2. Save As ไฟล์ Source Code เป็นชื่ออื่น

3. เริ่มต้น Modified EA Forex

3.1. สร้าง Custom Functions ชื่อ CountOreder() พิมพ์โค้ดตาม

รูปที่ 2 แสดงการสร้าง Custom Functions ชื่อ CountOrder ของ EA Forex

 

3.2. Copy Source Code บรรทัดที่ 52-63, บรรทัดที่ 108,130 มาวางที่ส่วนประกาศตัวแปรเพื่อปรับคุณสมบัติของตัวแปรให้เป็นแบบ Global Variable

รูปที่ 3 แสดงการ Copy Source Code มาวางในส่วนประกาศตัวแปร

 

3.3. Cut Source Code บรรทัดที่ 52-106 มาวางภายใน Functions CountOrder และ ลองกดปุ่ม Compile เพื่อตรวจสอบ Errors

รูปที่ 4 แสดงการ Copy Source Code มาวางในส่วนประกาศตัวแปร

 

รูปที่ 5 แสดงการ Cut Source Code มาวางใน Functions CountOrder ของ EA Forex ต่อจากรูปที่ 4

 

3.4. สร้าง Custom Functions ชื่อ LotsCalculation() พิมพ์โค้ดตามรูป 6 ที่ด้านล่างสุดของ Code

รูปที่ 6 แสดงการสร้าง Custom Functions ชื่อ LotsCalculation

 

3.5. Cut Source Code บรรทัดที่108-148 มาวางภายใน Functions LotsCalculation และ ลองกดปุ่ม Compile เพื่อตรวจสอบ Errors

รูปที่ 7 แสดงการ Cut Source Code บรรทัดที่ 108-148 มาวางใน Functions LotsCalculation

 

รูปที่ 8 แสดงการ Cut Source Code บรรทัดที่ 108-148 มาวางใน Functions LotsCalculation ต่อจากรูปที่ 7

                                        

3.6. สร้าง Custom Functions ชื่อ EntryOrder() พิมพ์โค้ดตามรูป 9 ที่ด้านล่างสุดของ Code

รูปที่ 9 แสดงการสร้าง Custom Functions ชื่อ EntryOrder

 

3.7. Cut Source Code บรรทัดที่ 150-160 มาวางภายในFunctions EntryOrder และ ลองกดปุ่ม Compile เพื่อตรวจสอบ Errors

รูปที่ 10 แสดงการ Cut Source Code บรรทัดที่ 150-160 มาวางใน Functions EntryOrder  ของ EA Forex พร้อมทั้งพิมพ์โค้ด MQL4 เพิ่มเติม

 

3.8. สร้าง Custom Functions ชื่อ ExitOrder() พิมพ์โค้ดตามรูป 11 ที่ด้านล่างสุดของ Code

รูปที่ 11 แสดงการสร้าง Custom Functions ชื่อ ExitOrder

 

3.9. Cut Source Code บรรทัดที่ 162-231 มาวางภายใน Functions ExitOrder และ ลองกดปุ่ม Compile เพื่อตรวจสอบErrors

รูปที่ 12 แสดงการ Cut Source Code บรรทัดที่ 162-231 มาวาง Functions ExitOrder ของ EA Forex

 

รูปที่ 13 แสดงการ Cut Source Code บรรทัดที่ 162-231 มาวาง Functions ExitOrder ของ EA Forex ต่อจากรูปที่ 12

 

รูปที่ 14 แสดงการ Cut Source Code บรรทัดที่ 162-231 มาวาง Functions ExitOrder ของ EA Forex ต่อจากรูปที่ 13

 

3.10. แก้ไข Functions ชื่อ OnTick() พิมพ์โค้ดตามรูป 15 ที่ด้านล่างสุดของ Code

รูปที่ 15 แสดงการ แก้ไข Functions ชื่อ OnTick() ของ EA Forex

 

ส่วนที่ 2 การเปรียบเทียบผลการ Backtest

รูปที่ 16 แสดงผลการ Backtest XAU/USD TF1H Year2019 ของ Original EA Forex

 

รูปที่ 17 แสดงผลการ Backtest XAU/USD TF1H Year2019 ของ Modified EA Forex

 

คำเตือน

จากผลของการ Backtest ที่ผมนำเสนอเป็นเพียงการ Backtest ที่ Model Quality 88.47% เท่านั้นก่อนนำไปใช้งานจริงผู้ใช้ควรทดสอบด้วยตนเองหลาย ๆ รอบทั้ง Forward Test และ Backtest

 

ทีมงาน eaforexcenter.com

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *