

การเขียนโปรแกรมเทรดทองคำ XAU ด้วย MQL4 และ MQL5 คือทักษะที่ช่วยให้เทรดเดอร์สร้างระบบทำกำไรอัตโนมัติได้อย่างแม่นยำ บทความนี้สอนตั้งแต่พื้นฐานโค้ดจนถึงการคำนวณกำไรขาดทุนจริง นักเทรดมักเช็ก ทุนไหล SPDR Gold Flow ประกอบการตัดสินใจ
ทำไมเทรดทองคำ XAU ต้องใช้โปรแกรมเทรดอัตโนมัติ
การเทรดทองคำเป็นการลงทุนที่มีความผันผวนสูงมาก บางครั้งราคาเคลื่อนไหวหลายสิบดอลลาร์ภายในเวลาไม่กี่นาที การนั่งเฝ้าหน้าจอเพื่อกดซื้อขายเองจึงมีความเสี่ยงทั้งในเรื่องของอารมณ์และความเร็วในการตัดสินใจ การนำภาษาโปรแกรมมาใช้สร้างระบบจึงเป็นทางออกที่ดีที่สุด
เมื่อเราเขียนโปรแกรมขึ้นมาสักตัว มันจะทำงานตามกฎที่เรากำหนดไว้โดยไม่มีอคติ ไม่กลัวและไม่โลภ ตัวอย่างเช่น ถ้าเราตั้งกฎไว้ว่าให้เปิดออเดอร์ซื้อเมื่อราคาทองคำปิดเหนือเส้นค่าเฉลี่ย 20 แท่ง โปรแกรมก็จะรอจนกว่าเงื่อนไขนั้นเกิดขึ้นจริงแล้วค่อยส่งคำสั่งไปที่โบรกเกอร์ ทำให้เราไม่พลาดจังหวะเข้าเทรดแม้แต่นาทีเดียว ควรเปรียบกับ ประวัติราคาทองย้อนหลัง เพื่อดูบริบทแนวโน้ม
นอกจากนี้การเขียนระบบเทรดทองคำยังช่วยให้เราทดสอบกลยุทธ์ย้อนหลังได้ เราสามารถเอาโค้ดที่เขียนขึ้นมาไปรันทดสอบกับข้อมูลราคาทองคำในอดีตเพื่อดูว่ากลยุทธ์ของเรามีโอกาสทำกำไรหรือขาดทุนมากน้อยแค่ไหน ก่อนที่จะเอาไปใช้กับเงินจริงในตลาด

ความแตกต่างระหว่าง MQL4 และ MQL5 สำหรับมือใหม่
ภาษาทั้งสองตัวนี้มีไวยากรณ์คล้ายกันมาก แต่การทำงานภายในต่างกันพอสมควร MQL4 เป็นภาษาเก่าที่ใช้กับโปรแกรมเทอร์มินัลรุ่นเก่า ส่วน MQL5 เป็นภาษาที่พัฒนาขึ้นมาเพื่อรองรับการทำงานที่เร็วและซับซ้อนกว่าเดิม
จุดที่แตกต่างกันชัดเจนที่สุดคือการส่งคำสั่งเปิดออเดอร์ ใน MQL4 เราสามารถใช้ฟังก์ชันส่งคำสั่งซื้อขายได้โดยตรงในบรรทัดเดียว โดยระบุสัญลักษณ์ ขนาดล็อต ราคา จุดตัดขาดทุน และจุดรับทุนลงไปเลย โค้ดจึงสั้นและเข้าใจง่ายสำหรับคนที่เพิ่งเริ่มต้นเขียนโปรแกรม
ในขณะที่ MQL5 ต้องมีการสร้างโครงสร้างคำขอขึ้นมาก่อน แล้วค่อยส่งคำขอนั้นผ่านฟังก์ชันส่งคำสั่งซื้อขาย วิธีนี้ดูยุ่งยากกว่าแต่มันช่วยให้เราควบคุมคำสั่งได้ละเอียดกว่า เช่น การกำหนดประเภทการส่งคำสั่งแบบตลาดหรือแบบจำกัดราคา รวมถึงการติดตามสถานะของคำสั่งว่าโบรกเกอร์รับเข้าระบบหรือไม่
วิธีอ่านค่าราคาทองคำในโปรแกรมอย่างถูกต้อง
การอ่านค่าราคาทองคำในโค้ดมีความสำคัญมาก เพราะถ้าอ่านผิดก็จะส่งผลให้การคำนวณขนาดล็อตและจุดตัดขาดทุนผิดไปด้วย ทองคำมีจุดทศนิยมที่ต่างจากคู่เงินทั่วไป จึงต้องเข้าใจกลไกการอ่านค่าเหล่านี้ให้ดี
ในโปรแกรมเทอร์มินัล ทองคำมักจะแสดงทศนิยมสองตำแหน่ง ค่าพอยต์หนึ่งพอยต์จึงเท่ากับการเคลื่อนที่ศูนย์จุดศูนย์หนึ่งดอลลาร์ แต่เรามักจะนิยมนับกันเป็นพิป ซึ่งหนึ่งพิปของทองคำมักจะเท่ากับสิบพอยต์หรือการเคลื่อนที่ศูนย์จุดหนึ่งดอลลาร์ ดังนั้นในโค้ดเราต้องแปลงค่าพอยต์ให้เป็นพิปก่อนเสมอเวลาจะคำนวณระยะการตัดขาดทุน
วิธีที่ถูกต้องคือต้องเช็คจำนวนหลักทศนิยมของคู่เงินนั้นก่อน ถ้าทองคำมีทศนิยมสองตำแหน่ง ค่าพอยต์จะเท่ากับศูนย์จุดศูนย์หนึ่ง แต่ถ้าทองคำมีทศนิยมสามตำแหน่ง ค่าพอยต์จะเท่ากับศูนย์จุดศูนย์ศูนย์หนึ่ง การเขียนโค้ดต้องระวังเรื่องนี้เป็นพิเศษ เพราะโบรกเกอร์แต่ละแห่งอาจกำหนดทศนิยมของทองคำไม่เท่ากัน ถ้าโค้ดเราไม่ยืดหยุ่น ระบบอาจจะคำนวณตำแหน่งราคาผิดพลาดได้
การเขียนเงื่อนไขเปิดออเดอร์ซื้อขายทองคำ
หัวใจของโปรแกรมเทรดคือเงื่อนไขการเปิดออเดอร์ ถ้าเงื่อนไขดีโปรแกรมก็จะทำกำไรได้ แต่ถ้าเงื่อนไขไม่ดีโปรแกรมก็จะขาดทุน เรามาดูวิธีเขียนเงื่อนไขง่ายๆ ที่นิยมใช้กัน
วิธีที่นิยมที่สุดคือการใช้เส้นค่าเฉลี่ยเคลื่อนที่มาสองเส้น สมมติว่าเราใช้เส้นค่าเฉลี่ยจากยี่สิบแท่งราคาล่าสุดและเส้นค่าเฉลี่ยจากห้าสิบแท่งราคาล่าสุด เงื่อนไขการเปิดออเดอร์ซื้อคือเมื่อเส้นยี่สิบแท่งตัดขึ้นไปอยู่เหนือเส้นห้าสิบแท่ง แสดงว่าทองคำกำลังจะเป็นขาขึ้น ในทางกลับกันถ้าเส้นยี่สิบแท่งตัดลงมาอยู่ใต้เส้นห้าสิบแท่ง ก็ให้เปิดออเดอร์ขายเพราะทองคำกำลังจะเป็นขาล่อง
ในโค้ดเราต้องเรียกค่าเส้นค่าเฉลี่ยมาเก็บไว้ในตัวแปรก่อน แล้วเปรียบเทียบค่าของสองตัวแปรนั้น ถ้าค่าของเส้นยี่สิบแท่งมากกว่าค่าของเส้นห้าสิบแท่ง โปรแกรมก็จะทริกเกอร์คำสั่งเปิดออเดอร์ซื้อ แต่ก่อนที่จะส่งคำสั่งเปิดออเดอร์ เราควรเช็คก่อนว่ามีออเดอร์ที่เปิดอยู่แล้วหรือไม่ เพื่อป้องกันการเปิดออเดอร์ซ้อนทับจนเกินขนาดพอร์ตที่เรากำหนดไว้
การตรวจสอบจำนวนออเดอร์ที่เปิดอยู่
ก่อนที่โปรแกรมจะส่งคำสั่งเปิดออเดอร์ใหม่ จำเป็นต้องนับจำนวนออเดอร์ที่ยังคงเปิดอยู่ในตลาด ถ้ามีออเดอร์เปิดอยู่แล้ว โปรแกรมอาจจะข้ามการส่งคำสั่งไปก่อน เพื่อไม่ให้พอร์ตการลงทุนมีความเสี่ยงสูงเกินไป การนับออเดอร์ใน MQL4 ทำได้โดยการวนลูปตรวจสอบออเดอร์ทั้งหมดที่มีอยู่ แล้วกรองเฉพาะออเดอร์ที่สัญลักษณ์ตรงกับทองคำและสถานะเป็นออเดอร์ที่ยังเปิดอยู่
การคำนวณขนาดล็อตและระยะตัดขาดทุนให้เหมาะสม
การคำนวณขนาดล็อตเป็นเรื่องที่สำคัญที่สุดในการเขียนโปรแกรมเทรด ถ้าล็อตใหญ่เกินไปพอร์ตอาจจะพังในไม่กี่ออเดอร์ แต่ถ้าล็อตเล็กเกินไปกำไรก็จะน้อย การกำหนดระยะตัดขาดทุนก็เช่นเดียวกัน ต้องให้สมเหตุสมผลกับความผันผวนของราคาทองคำในขณะนั้น
วิธีที่นิยมคือการกำหนดความเสี่ยงต่อหนึ่งออเดอร์เป็นเปอร์เซ็นต์ของเงินทุน สมมติว่าเรามีเงินทุนหนึ่งหมื่นดอลลาร์ และยอมรับความเสี่ยงร้อยละสองต่อเดอร์ ความเสี่ยงที่เรายอมรับก็คือสองร้อยดอลลาร์ จากนั้นเราต้องแปลงระยะตัดขาดทุนจากพิปเป็นดอลลาร์ เพื่อหารหาขนาดล็อตที่เหมาะสม
ตัวอย่างเช่น ถ้าเราตั้งระยะตัดขาดทุนไว้ที่ห้าพิป และทราบว่าทองคำหนึ่งพิปมีค่าเท่ากับหนึ่งดอลลาร์ต่อหนึ่งล็อตมาตรฐาน การเสี่ยงสองร้อยดอลลาร์ในระยะห้าพิปก็จะได้ขนาดล็อตที่เหมาะสม แต่ถ้าระยะตัดขาดทุนกว้างขึ้นเป็นสิบพิป ขนาดล็อตก็จะลดลงมาเป็นครึ่งหนึ่งเพื่อรักษาความเสี่ยงให้อยู่ที่สองร้อยดอลลาร์เท่าเดิม
ตัวอย่างการคำนวณกำไรขาดทุนจริง
สมมติว่าเราเปิดออเดอร์ซื้อทองค้าที่ราคาสองพันห้าร้อยดอลลาร์ ขนาดล็อตเป็นหนึ่งล็อตมาตรฐาน โดยตั้งจุดตัดขาดทุนไว้ที่ห่างจากราคาเปิดออเดอร์ลงไปสิบพิป และตั้งจุดรับทุนไว้ที่ห่างจากราคาเปิดออเดอร์ขึ้นไปยี่สิบพิป ในทองคำหนึ่งพิปมักจะเท่ากับหนึ่งดอลลาร์ต่อหนึ่งล็อตมาตรฐาน ดังนั้นถ้าราคาทองคำขึ้นไปถึงจุดรับทุนที่สองพันห้าร้อยสองดอลลาร์ เราก็จะได้กำไรยี่สิบดอลลาร์ แต่ถ้าราคาทองคำลงไปแตะจุดตัดขาดทุนที่สองพันสี่ร้อยเก้าสิบดอลลาร์ เราก็จะขาดทุนสิบดอลลาร์ แต่ถ้าเราเปิดออเดอร์ขนาดสองล็อต กำไรและขาดทุนก็จะเพิ่มเป็นสองเท่าคือกำไรสี่สิบดอลลาร์และขาดทุนยี่สิบดอลลาร์ตามลำดับ การเข้าใจการคำนวณนี้จะช่วยให้เราตั้งค่าพารามิเตอร์ในโค้ดได้อย่างแม่นยำและควบคุมความเสี่ยงได้จริง
การส่งคำสั่งเปิดออเดอร์ใน MQL4 และ MQL5
การส่งคำสั่งเปิดออเดอร์เป็นขั้นตอนสุดท้ายของการทำงาน ใน MQL4 การส่งคำสั่งทำได้ง่ายมาก เพียงแค่เรียกใช้ฟังก์ชันส่งคำสั่งซื้อขายแล้วระบุพารามิเตอร์ที่จำเป็นลงไป โครงสร้างโค้ดจึงดูกระชับและเข้าใจได้ไม่ยาก
แต่ใน MQL5 จะซับซ้อนกว่าเพราะต้องสร้างตัวแปรโครงสร้างคำขอขึ้นมาก่อน แล้วจึงกำหนดค่าต่างๆ ลงไปในโครงสร้างนั้นทีละบรรทัด ไม่ว่าจะเป็นสัญลักษณ์ทองคำ ขนาดล็อต ราคาที่ต้องการเปิด ประเภทคำสั่ง จุดตัดขาดทุน และจุดรับทุน หลังจากนั้นถึงส่งคำขอนั้นผ่านฟังก์ชันส่งคำสั่งซื้อขายไปยังโบรกเกอร์ แม้จะดูยากกว่าแต่ก็ทำให้เราสามารถจัดการคำสั่งได้หลากหลายกว่า
สิ่งที่ต้องระวังในการส่งคำสั่งคือการจัดการข้อผิดพลาด บางครั้งโบรกเกอร์อาจจะปฏิเสธคำสั่งเปิดออเดอร์เนื่องจากราคาเคลื่อนไหวเร็วเกินไปหรือสเปรดกว้างผิดปกติ โปรแกรมที่ดีต้องสามารถตรวจจับข้อผิดพลาดเหล่านี้ได้ และพิมพ์ข้อความแจ้งเตือนออกมาในล็อกไฟล์เพื่อให้เราทราบและนำไปแก้ไขต่อไป

การทดสอบและปรับแต่งโปรแกรมให้ทำกำไรได้จริง
หลังจากเขียนโค้ดเสร็จแล้ว การทดสอบเป็นขั้นตอนที่ข้ามไม่ได้เลย โปรแกรมที่ยังไม่ผ่านการทดสอบอาจจะมีข้อผิดพลาดที่ทำให้เงินทุนหายไปอย่างรวดเร็ว การทดสอบช่วยให้เราเห็นจุดอ่อนของระบบก่อนที่จะเอาไปใช้จริง
โปรแกรมเทอร์มินัลมีเครื่องมือทดสอบกลยุทธ์ในตัว เราสามารถเลือกโปรแกรมที่เขียนขึ้นมา กำหนดคู่เงินเป็นทองคำ เลือกช่วงเวลาที่ต้องการทดสอบ แล้วกดเริ่มทดสอบได้เลย โปรแกรมจะจำลองการเทรดย้อนหลังโดยใช้ข้อมูลราคาทองคำในอดีต แล้วแสดงผลกำไรขาดทุนรวมถึงค่าดรอว์ดาวน์ให้เราเห็น
ถ้าผลลัพธ์ไม่ดี อย่าเพิ่งท้อแท้ ให้กลับไปปรับพารามิเตอร์ต่างๆ เช่น ระยะตัดขาดทุน ระยะรับทุน หรือเปลี่ยนเงื่อนไขการเปิดออเดอร์ แล้วทดสอบใหม่จนกว่าจะได้ผลลัพธ์ที่น่าพอใจ ข้อควรระวังคืออย่าปรับพารามิเตอร์จนเกินไปเพื่อให้ผลลัพธ์ย้อนหลังดูดีเกินจริง เพราะโปรแกรมที่ปรับแต่งมากเกินไปมักจะใช้งานไม่ได้ดีในตลาดจริง
ข้อผิดพลาดที่มือใหม่มักทำพลาดบ่อย
มือใหม่ที่เพิ่งเริ่มเขียนโปรแกรมเทรดทองคำมักจะเผลอลืมเช็คจำนวนทศนิยมของราคาทองคำ ทำให้การคำนวณจุดตัดขาดทุนผิดพลาดไปหมด ข้อผิดพลาดอีกอย่างคือการไม่จำกัดจำนวนออเดอร์ที่เปิดพร้อมกัน โปรแกรมอาจจะเปิดออเดอร์ไม่หยุดจนเงินทุนหมดตัว ดังนั้นควรตั้งค่าจำกัดจำนวนออเดอร์สูงสุดไว้เสมอ
นอกจากนี้การใช้ค่าพารามิเตอร์ที่เหมาะกับทองคำในช่วงเวลาหนึ่งแต่นำไปใช้ในอีกช่วงเวลาหนึ่งก็ไม่ได้ผลเสมอไป ทองคำมีพฤติกรรมราคาที่เปลี่ยนแปลงไปตามสภาวะเศรษฐกิจ โปรแกรมที่เคยทำกำไรในช่วงตลาดนิ่งอาจจะขาดทุนหนักในช่วงตลาดผันผวนสูง จึงควรทดสอบโปรแกรมในหลายสภาวะตลาดเพื่อให้มั่นใจว่ามันทำงานได้อย่างเสถียร
| หัวข้อเปรียบเทียบ | MQL4 | MQL5 | ผลกระทบต่อการเทรดทองคำ |
|---|---|---|---|
| การส่งคำสั่งเปิดออเดอร์ | ใช้ฟังก์ชันเดียวจบในบรรทัดเดียว | ต้องสร้างโครงสร้างคำขอและส่งผ่านฟังก์ชัน | MQL4 เหมาะกับมือใหม่เพราะโค้ดสั้นเข้าใจง่าย |
| ความเร็วในการทำงาน | ประมวลผลช้ากว่าเล็กน้อย | ประมวลผลเร็วและรองรับการทดสอบแบบหลายสกุลเงิน | MQL5 เหมาะกับการเทรดทองคำในช่วงข่าวที่ราคาเคลื่อนไหวเร็ว |
| การจัดการออเดอร์ | เรียกดูออเดอร์ที่เปิดอยู่ได้โดยตรง | ต้องเลือกตำแหน่งและประวัติออเดอร์แยกจากกัน | MQL5 ช่วยให้วิเคราะห์ประวัติการเทรดทองคำได้ละเอียดกว่า |
| การทดสอบกลยุทธ์ย้อนหลัง | ทดสอบได้ทีละคู่เงิน | ทดสอบหลายคู่เงินพร้อมกันได้ | MQL5 ทำให้เทรดทองคำควบคู่กับคู่เงินอื่นได้สมจริงกว่า |


▶ เปิดบัญชีโบรกเกอร์ที่แนะนำ คลิกที่นี่
คำถามที่พบบ่อย
MQL4 กับ MQL5 ต่างกันยังไง และควรเริ่มจากตัวไหนก่อน
MQL4 ใช้ฟังก์ชัน OrderSend แบบเดิมได้ทุกโบรกเกอร์ ส่วน MQL5 ใช้ระบบ OrderRequest ที่ซับซ้อนกว่าแต่ทันสมัยและเร็วกว่า สำหรับมือใหม่ที่เพิ่งจะเขียนโปรแกรมเทรดทองคำ แนะนำให้เริ่มจาก MQL4 ก่อน เพราะโค้ดสั้น เข้าใจง่าย และมีตัวอย่างให้ศึกษาเยอะกว่า พอเข้าใจโลจิกการเทรดทองคำแล้ว ค่อยย้ายไปเขียน MQL5 เพื่อใช้งานฟีเจอร์ขั้นสูงเพิ่มเติม
การเขียน EA เทรดทองคำต้องคำนึงเรื่องพิปหรือพอยต์อย่างไร
ทองคำมีค่าพอยต์ต่อหนึ่งพิปไม่เท่ากันทุกโบรกเกอร์ บางแห่งกำหนดหนึ่งพิปเท่ากับสิบพอยต์ บางแห่งกำหนดหนึ่งพิปเท่ากับหนึ่งพอยต์ ดังนั้นในโค้ดต้องเช็คค่า Digits ของคู่เงิน XAUUSD ก่อนเสมอ แล้วคูณหรือหารค่าพอยต์ให้ถูกต้องก่อนนำไปตั้งจุดตัดขาดทุนและจุดรับทุน ถ้าไม่เช็คให้ดี ระบบอาจจะตัดสินใจผิดพลาดและเปิดออเดอร์ด้วยขนาดล็อตที่ผิดไปจากที่วางแผนไว้
จะทดสอบ EA ทองคำก่อนเอาไปใช้จริงต้องทำยังไง
ให้เปิดโปรแกรมเทอร์มินัลแล้วกดเข้าไปที่ส่วน Strategy Tester จากนั้นเลือก Expert Advisor ที่เราเขียนขึ้นมา กำหนดคู่เงินเป็น XAUUSD เลือกช่วงเวลาย้อนหลังอย่างน้อยหนึ่งปีและเลือกโมเดลทดสอบแบบทุกติ๊กเพื่อความแม่นยำ จากนั้นกดเริ่มทดสอบแล้วสังเกตผลกำไรขาดทุนรวมถึงค่าดรอว์ดาวน์ หากผลลัพธ์ไม่ดีให้ปรับพารามิเตอร์แล้วทดสอบใหม่จนกว่าจะได้ผลลัพธ์ที่น่าพอใจ
ทำไม EA ทองคำที่เทสผ่านพอขึ้นจริงถึงใช้งานไม่ได้ดีเท่า
การเทสย้อนหลังมักจะไม่คำนึงถึงสภาพแวดล้อมจริงเช่นสลิปเปจและสเปรดที่ขยายตัวตอนข่าวสำคัญ นอกจากนี้โบรกเกอร์จริงอาจจะมีการรีโควตออเดอร์หรือมีค่าสเปรดของทองคำที่กว้างกว่าช่วงเวลาทดสอบ ดังนั้นควรเอา EA ไปรันบนบัญชีทดลองก่อนอย่างน้อยหนึ่งเดือนเพื่อดูผลลัพธ์ในสภาวะตลาดจริง แล้วค่อยตัดสินใจลงทุนด้วยเงินจริง
เขียนโปรแกรมให้รู้ว่าทองคำเป็นขาขึ้นหรือขาล่องได้อย่างไร
วิธีที่นิยมใช้ในการเขียนโค้ดคือการเรียกค่าเส้นค่าเฉลี่ยราคาสองเส้นมาเปรียบเทียบกัน โดยเส้นที่คำนวณจากยี่สิบแท่งล่าสุดและเส้นที่คำนวณจากห้าสิบแท่งล่าสุด ถ้าเส้นยี่สิบแท่งอยู่เหนือเส้นห้าสิบแท่งก็แปลว่าตอนนี้ทองคำอยู่ในช่วงขาขึ้น แต่ถ้าเส้นยี่สิบแท่งลงไปอยู่ใต้เส้นห้าสิบแท่งก็ถือว่าทองคำอยู่ในช่วงขาล่อง แล้วนำเงื่อนไขนี้ไปกำหนดทิศทางการเปิดออเดอร์ในโปรแกรมต่อไป
อ่านเพิ่มเติม
📱 ดาวน์โหลดแอป iCafeFX ฟรี — รับสัญญาณเทรด Forex และทองคำ XAU/USD แบบ Real-time
ดาวน์โหลดเลย




TH ▼
English
Tiếng Việt
Indonesia
Melayu
ខ្មែរ
ລາວ
日本語
한국어
简体中文