อธิบาย Code MQL4 ของ VR Smart Grid Lite Algorithm

ฉบับย่อ

  • VR Smart Grid Lite Algorithm (VSG) คือ ขั้นตอนวิธีการทำงานที่ถูกกำหนดไว้อย่างชัดเจนเพื่อแก้ไขปัญหาหรือทำงานที่กำหนดไว้เป็นลำดับ
  • บทความนี้สอนการใช้งาน Meta Editor เพื่อแก้ไข Code VSG (เบื้องต้น)
  • นอกจากนี้เราจะอธิบายถึงการงานของ Code MQL4 ของ VSG EA อย่างละเอียดอีกด้วย
  • Download EA Free

การใช้งานโปรแกรม Meta Editor

VR Smart Grid Lite Algorithm (VSG) คือ ขั้นตอนวิธีการทำงานที่ถูกกำหนดไว้อย่างชัดเจนเพื่อแก้ไขปัญหาหรือทำงานที่กำหนดไว้เป็นลำดับ โดยในบทนี้ผมจะอธิบายแบ่งออกเป็นสองส่วนด้วยกัน คือ

  1. ส่วนของการใช้งานโปรแกรม Meta editor เพื่อแก้ไขปรับปรุง EA Forex เบื้องต้น
  2. การอธิบายโค้ดการทำงานภาษา MQL4 ของ VR Smart Grid Lite EA Forex

 

ความสำเร็จของ EA Forex ไม่ได้อยู่ที่ความฉลาดของโค้ดแต่อยู่ที่การปรับปรุง EA Forex อย่างต่อเนื่อง

การแก้ไขปรับปรุง EA Forex ด้วย Meta Editor เป็นกระบวนการที่มีความซับซ้อน แต่อย่างไรก็ตามหากเรามีความรู้พื้นฐานอยู่แล้วสามารถทำได้ดังนี้

  1. เปิดโปรแกรม Meta Editor โดยการคลิ๊กที่ปุ่ม “Meta Editor” ในเมนูของ MetaTrader 4
รูปที่ 1 แสดงวิธีการเรียกใช้งานโปรแกรม Meta Editor

 

  1. การเลือกไฟล์ที่ต้องการแก้ไข โดยคลิ๊กที่ File แล้วเลือก Open จากนั้นเลือกชื่อไฟล์ “VR Smart Grid Lite EA Forex” ซึ่งใน Folder ที่เราเก็บข้อมูลไว้
รูปที่ 2 แสดงวิธีการเรียก File Source Code ของ EA

 

  1. การดู Source Code ของ EA Forex เมื่อไฟล์ถูกเปิดขึ้นมาแล้วให้คลิ๊กที่ Tabs “Code Base”เพื่อดูSource Code และ Function ต่าง ๆ ที่ใช้งานใน EA Forex
รูปที่ 3 แสดง Tabs Source Code ของ EA
  • การ Edit Source Code ทำการแก้ไข Code Source โดยใช้ภาษา MQL4

 

  1. การ Complie EA Forex Source Code หลังจากที่แก้ไขเสร็จเรียบร้อย ให้คลิ๊กที่ “Complier” เพื่อทำการคอมไพล์โค้ด
รูปที่ 4 แสดงวิธี Compile Source Code ของ EA

 

  1. EA Forex Complete File หากไม่มีข้อผิดพลาดเกิดขึ้น จะได้ไฟล์ EX4 กับ MQL4 ที่ถูกสร้างขึ้นมาและสามารถนำไฟล์นี้ ไปใช้งานกับ Meta Trader 4 ได้ทันที

 

การทำงานภาษา MQL4 ของ VSG Part 1

  1. EA Forex Information
รูปที่ 5 ระหว่างบรรทัดที่ 1-21 แสดง Informatiom ของ EA

 

  1. ส่วนประกาศตัวแปรของ EA Forex ตัวแปรประเภท enum (enumeration) จากรูปก่อนหน้านี้ ประกาศตัวแปรชื่อ ENUM_ST ประกอบไปด้วยสมาชิก 2 ตัว คือ Awerage กับ PartClose
รูปที่ 6 ระหว่างบรรทัดที่ 22-26 แสดงโครงสร้างตัวแปรประเภท enum

 

  1. ตัวแปรประเภท Global Variable
  • iTakeProfit : ระบุ Take Profit มีหน่วยเป็น Points
  • iStartLots : ระบุ Lot เริ่มต้น
  • iMaximalLots : ระบุ Lot สูงสุดที่สามารถใช้ได้
  • iCloseOrder : ระบุประเภทการปิดการซื้อขาย
  • iPointOrderStep : ระบุระยะห่างระหว่างคำสั่งการซื้อขายมีหน่วยเป็น Points
  • iMinimalProfit : ระบุกำไรขั้นต่ำที่ใช้ในการปิดคำสั่งการซื้อขายมีหน่วยเป็น Points
  • iMagicNumber : ระบุเลข Magic Number ในรูปแบบตัวเลข
  • iSlipage : ระบุ Slippage ในหน่วย Points
รูปที่ 7 ระหว่างบรรทัดที่ 27-41 แสดง โครงสร้างตัวแปรประเภท Global Variable EA

 

  1. OnInit ( ) Function : โค้ดดังกล่าวเป็นฟังก์ชั่น OnInit() ในภาษา MQL4 ที่ใช้สำหรับการเริ่มต้นการทำงาน ของ EA โดยฟังก์ชั่นนี้จะต้องส่งค่ากลับเป็น INIT_SUCCEEDED เมื่อเรียกใช้งานได้สำเร็จซึ่งจะแสดงว่าการเริ่มต้นการทำงานเสร็จสมบูรณ์แล้ว
รูปที่ 8 ระหว่างบรรทัดที่ 42-46 แสดง โครงสร้าง Function OnInit() ของ EA

 

การทำงานภาษา MQL4 ของ VSG Part 2

  1. OnTick () Function : ฟังก์ชั่นนี้จะถูกเรียกใช้งานโดยอัตโนมัติทุก ๆ ครั้งที่มีการเปลี่ยนแปลงราคาของสินทรัพย์ที่กำลังซื้อขายอยู่ในตลาดเพราะฉะนั้นการเขียนโปรแกรมไว้ในฟังก์ชั่นนี้จะช่วยให้ EA สามารถตรวจสอบและดำเนินการตามราคาที่เกิดขึ้นในตลาดได้อย่างถูกต้องและรวดเร็ว
รูปที่ 9 แสดงโครงสร้างFunction OnTick() ของ EA
  •  Source Code บรรทัดที่ 51-55
    • BuyPriceMax, BuyPriceMin, BuyPriceMaxLot, BuyPriceMinLot, SelPriceMin, SelPriceMax, SelPriceMinLot และ SelPriceMaxLot เป็นตัวแปร double ที่ใช้เก็บราคาซื้อ-ขายสูงสุดและต่ำสุด รวมถึงปริมาณที่ซื้อ-ขายสูงสุดและต่ำสุดของการเทรด
รูปที่ 10 ระหว่างบรรทัดที่ 51-55 แสดงการประกาศ Internal Variable ของ EA
  • Source Code บรรทัดที่ 56-58
    • BuyPriceMaxTic, BuyPriceMinTic, SelPriceMaxTic และSelPriceMinTic เป็นตัวแปร int ที่ใช้เก็บเลขที่ใบสั่งซื้อ-ขายที่มีราคาซื้อ-ขายสูงสุดและต่ำสุดของการเทรด
รูปที่ 11 ระหว่างบรรทัดที่ 56-58 แสดงการประกาศ Internal Variable ของ EA
  • Source Code บรรทัดที่ 58-60
    • op, lt และ tp เป็นตัวแปร double ที่ใช้เก็บราคาเปิดการเทรด ปริมาณการเทรด และราคาที่เป้าหมายของการเทรด
รูปที่ 12 ระหว่างบรรทัดที่ 58-60 แสดงการประกาศ Internal Variable ของ EA
  • Source Code บรรทัดที่ 62-64
    • tk เป็นตัวแปร int ที่ใช้เก็บเลขที่ใบสั่งซื้อ-ขายของการเทรด, b: จำนวนรายการที่เป็นการซื้อ และ s: จำนวนรายการที่เป็นการขาย
รูปที่ 13 ระหว่างบรรทัดที่ 62-64 แสดงการประกาศ Internal Variable ของ EA
  • Source Code บรรทัดที่ 65-107
    • โค้ดนี้จะวนลูปผ่านรายการซื้อ-ขาย และนับจำนวนรายการการซื้อและการขาย นอกจากนี้ยังหาค่าต่ำสุดและสูงสุดของราคาซื้อและราคาขาย รวมถึงจำนวน Lot ที่ซื้อ-ขายได้มากที่สุดและน้อยที่สุด
    • และเก็บ Tickets ของรายการที่ได้รับราคาสูงสุดและต่ำสุดเอาไว้เพื่อใช้ในการบริหารการเงินในภายหลัง
รูปที่ 14 ระหว่างบรรทัดที่ 65-88 แสดง Code ของ EA

 

รูปที่ 15 ระหว่างบรรทัดที่ 89-107 แสดง Code ของ EA

 

การทำงานภาษา MQL4 ของ VSG Part 3

  • Source Code บรรทัดที่ 108-118
    • เงื่อนไข if จะเช็คว่า iCloseOrder เท่ากับ Awerage หรือไม่ ถ้าใช่จะทำการคำนวณค่า AwerageBuyPrice และ AwerageSelPrice ตามสูตรที่กำหนด ในการคำนวณ โดยจะเพิ่มหรือลดค่า iMinimalProfit โดยค่า iMinimalProfit นั้นจะถูกกำหนดค่าโดยผู้ใช้งาน
รูปที่ 16 ระหว่างบรรทัดที่ 108-118 แสดง Code ของ EA

 

  • Source Code บรรทัดที่ 119-128
    • เงื่อนไข if ถ้า iCloseOrder เท่ากับ PartClose ให้ดำเนินการต่อไป โดยในกรณีที่ b (สัญญาณซื้อ) มีค่ามากกว่าหรือเท่ากับ 2 จะทำการคำนวณ AwerageBuyPrice และในกรณีที่ s (สัญญาณขาย) มีค่ามากกว่าหรือเท่ากับ 2 จะทำการคำนวณ AwerageSelPrice
รูปที่ 17 ระหว่างบรรทัดที่ 119-128 แสดงCode ของ EA

 

  • Source Code บรรทัดที่ 130-138
    • กำหนดค่าของตัวแปร BuyLot และ SelLot โดยจะให้ค่าเริ่มต้นเท่ากับ iStartLots ในกรณีที่ BuyPriceMinLot หรือ SelPriceMaxLot เป็น 0
    • แต่ถ้าหากไม่ใช่ จะกำหนดค่า BuyLot เท่ากับค่า BuyPriceMinLot คูณด้วย 2 และกำหนดค่า SelLot เท่ากับค่า SelPriceMaxLot คูณด้วย 2
รูปที่ 18 ระหว่างบรรทัดที่ 130-138 แสดงCode ของ EA
  • Source Code บรรทัดที่ 140-148
    • ถ้า iMaximalLots มีค่ามากว่า 0 ให้ดำเนินการต่อ
    • ถ้า BuyLot มีค่ามากกว่า iMaximalLots ให้กำหนด BuyLot เป็น iMaximalLots
    • ถ้า SelLot มีค่ามากกว่า iMaximalLots ให้กำหนดค่า SelLot เป็น iMaximalLots
รูปที่ 19 ระหว่างบรรทัดที่ 140-148 แสดง Code ของ EA
  • Source Code บรรทัดที่ 150-154
    • ถ้าราคาปิดของแท่งเทียนก่อนหน้า (Close[1]) มากกว่าราคาเปิดของแท่งเทียนก่อนหน้า (Open[1]) ให้ดำเนินการต่อไป คือ ถ้าตัวแปร b เท่ากับ 0 หรือ b มีค่ามากกว่า 0 และ (BuyPriceMin – Ask) มากกว่า (iPointOrderStep * Point()) ให้ OrderSend()
รูปที่ 20 ระหว่างบรรทัดที่ 150-154 แสดง Code ของ EA
  • Source Code บรรทัดที่ 155-160
    • ถ้าราคาปิดของแท่งเทียนก่อนหน้า (Close[1]) น้อยว่าราคาเปิดของแท่งเทียนก่อนหน้า (Open[1]) ให้ดำเนินการต่อไป คือ ถ้าตัวแปร s เท่ากับ 0 หรือ s มีค่ามากกว่า 0 และ (Bid – SelPriceMax) มากกว่า (iPointOrderStep * Point()) ให้ OrderSend()
รูปที่ 21 ระหว่างบรรทัดที่ 156-160 แสดง Code ของ EA

การทำงานภาษา MQL4 ของ VSG Part 4

  • Source Code บรรทัดที่ 162-182
    • เป็นการค้นหาคำสั่งซื้อหรือขาย (trade orders) ของบัญชีการเทรด โดยจะเลือกด้วยตำแหน่ง (position) และเช็คว่าคำสั่งนั้นมีเลข magic number และ Symbol() ที่กำหนดไว้ในโปรแกรม ถ้าข้อมูลเป็นTrue จะทำการแก้ไขคำสั่งโดยกำหนด take profit ใหม่โดยใช้ OrderModify()
รูปที่ 22 ระหว่างบรรทัดที่ 162-182 แสดง Code ของ EA
  •  Source Code บรรทัดที่ 184-210
    • เป็นโค้ดที่มีเงื่อนไขคือถ้า iCloseOrder เท่ากับ Awerage EA Forex จะทำการเรียกใช้ฟังก์ชั่น OrderModify โดยการใส่ Take Profit ทุก Order ให้โดยอัตโนมัติ
รูปที่ 23 ระหว่างบรรทัดที่ 184-210แสดง Code ของ EA
  1. Check Volume Value Function
    • Source Code บรรทัดที่ 242-262 เป็นฟังก์ชัน CheckVolumeValue ใช้สำหรับตรวจสอบว่าปริมาณการซื้อขายที่ระบุเข้ามามีค่าอยู่ในช่วงประเภทการซื้อขายที่ถูกต้องหรือไม่
รูปที่ 24 ระหว่างบรรทัดที่ 242-262 แสดง Code ของ EA Forex

 

บทสรุป

หลังจากที่ท่านอ่านบทความนี้จบผู้เขียนหวังเป็นอย่างยิ่งที่จะทำให้ท่านได้เข้าใจ Concept ในการเขียน EA Forex ของคุณ Vladimir Pastushak ซึ่งจะเป็นประโยชน์อย่างยิ่งในการนำ Source Code ชุดนี้มา Modified ในบทความบทต่อ ๆ ไป

 

ทีมงาน eaforexcenter.com

ใส่ความเห็น

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