

การเขียนโปรแกรม EA เพื่อเทรดทองคำหรือ XAU ด้วยภาษา MQL4 และ MQL5 ถือเป็นทักษะที่เทรดเดอร์ไทยหลายคนอยากเรียนรู้ เพื่อสร้างระบบเทรดอัตโนมัติที่มีวินัยและทำงานตลอด 24 ชั่วโมงโดยไม่ต้องนั่งจ้องหน้าจอ ในบทความนี้เราจะมาเจาะลึกทุกขั้นตอนตั้งแต่พื้นฐานโค้ดไปจนถึงการคำนวณขนาดล็อตและการจัดการความเสี่ยงสำหรับตลาดทองคำโดยเฉพาะ นักเทรดมักเช็ก ทุนไหล SPDR Gold Flow ประกอบการตัดสินใจ
ทำไมตลาดทองคำถึงต้องใช้ EA และความท้าทายของนักเขียนโปรแกรม
ทองคำเป็นสินทรัพย์ที่มีความผันผวนสูงมาก การเคลื่อนไหวของราคาในแต่ละวันอาจกว้างกว่าคู่เงินหลักหลายเท่า การใช้ EA จึงเป็นทางออกที่ดีในการควบคุมอารมณ์และความโลภของเราได้อย่างมีประสิทธิภาพ
สำหรับนักเขียนโปรแกรมมือใหม่ ตลาดทองคำมีความท้าทายที่ต่างจากคู่เงินอย่างยูโรดอลลาร์อย่างสิ้นเชิง ปัญหาแรกคือเรื่องของค่าทศนิยมและขนาดสเปรดที่กว้าง บางโบรกเกอร์กำหนดราคาทองคำไว้ที่ 2 ตำแหน่งทศนิยม บางที่ก็กำหนดไว้ที่ 3 ตำแหน่ง ถ้าเราเขียนโค้ดแบบตายตัวโดยไม่ระบุค่าพอยต์แบบอัตโนมัติ EA ของเราอาจคำนวณระยะการตัดขาดทุนผิดพลาดได้ ควรเปรียบกับ ประวัติราคาทองย้อนหลัง เพื่อดูบริบทแนวโน้ม
อีกหนึ่งปัญหาคือเรื่องของสภาพคล่องในช่วงเวลาที่ตลาดเปิดหรือปิด ทองคำมักจะมีช่วงที่ราคากระโดดสูงมาก การเขียน EA โดยไม่คำนึงถึงสลิปเปจหรือระยะห่างของราคาที่ยอมรับได้ อาจทำให้เราเปิดออเดอร์ที่ราคาแย่กว่าที่คาดไว้มาก ดังนั้นโครงสร้างโค้ดต้องรองรับการตรวจสอบสภาพตลาดก่อนส่งคำสั่งซื้อขายเสมอ
โครงสร้างพื้นฐานของ EA ทองคำใน MQL4
การเขียน EA ด้วยภาษา MQL4 ถือเป็นจุดเริ่มต้นที่ดีเพราะมีโครงสร้างที่เข้าใจง่าย ฟังก์ชันหลักที่ต้องรู้จักคือ OnInit, OnTick และ OnDeinit ซึ่งทำงานตามวงจรชีวิตของ EA
ฟังก์ชัน OnInit จะทำงานครั้งแรกเพียงครั้งเดียวเมื่อเราลาก EA ไปวางบนกราฟ เราจะใช้จุดนี้ในการตรวจสอบว่ากราฟที่เราเปิดอยู่เป็นทองคำหรือไม่ และตั้งค่าพารามิเตอร์เบื้องต้น ส่วน OnTick จะทำงานทุกครั้งที่ราคาเปลี่ยนแปลง นี่คือหัวใจสำคัญที่เราจะใส่เงื่อนไขการเทรดเข้าไป ไม่ว่าจะเป็นการเช็คเส้นค่าเฉลี่ยหรือการส่งคำสั่งเปิดออเดอร์
ในการเปิดออเดอร์ซื้อทองคำด้วย MQL4 เราจะใช้ฟังก์ชัน OrderSend ซึ่งต้องระบุสัญลักษณ์คู่เงิน ประเภทคำสั่ง ขนาดล็อต ราคาเปิด จุดตัดขาดทุน จุดทำกำไร และข้อความหมายเหตุ ตัวอย่างเช่น ถ้าเราต้องการซื้อทองคำที่ราคา 2569 ดอลลาร์ เราต้องแปลงค่าพอยต์ให้ถูกต้อง ถ้าโบรกเกอร์มี 2 ตำแหน่งทศนิยม 1 พอยต์จะเท่ากับ 0.01 ดอลลาร์ การตั้งค่าสต็อปลอสที่ 5 ดอลลาร์จึงเท่ากับ 500 พอยต์ ซึ่งเป็นจุดที่มือใหม่มักสับสนบ่อยครั้ง
การอ่านค่าอินดิเคเตอร์เพื่อใช้ในการตัดสินใจเทรด
เมื่อเราต้องการให้ EA ทองคำทำงานตามเส้นค่าเฉลี่ย 20 แท่ง เราต้องเรียกใช้ฟังก์ชัน iMA ใน MQL4 โดยระบุชื่อสัญลักษณ์ กรอบเวลา จำนวนแท่งเทียน และราคาที่ใช้คำนวณ การดึงค่านี้มาเปรียบเทียบกับราคาปัจจุบันจะช่วยให้เราตัดสินใจได้ว่าควรเปิดออเดอร์ซื้อหรือขาย
การจัดการออเดอร์ที่ค้างอยู่
ใน MQL4 การเลือกออเดอร์เก่ามาตรวจสอบต้องใช้ฟังก์ชัน OrderSelect ร่วมกับลูปวนรอบตามจำนวนออเดอร์ทั้งหมด เราต้องเช็คสัญลักษณ์ว่าเป็นทองคำหรือไม่ และตรวจสอบหมายเลขเวทย์มัจจุราเพื่อให้แน่ใจว่าเป็นออเดอร์ของ EA ตัวนี้ ไม่ใช่ของ EA ตัวอื่นที่รันอยู่ในบัญชีเดียวกัน
ความแตกต่างของ MQL5 ที่เทรดเดอร์ต้องเข้าใจ
การย้ายมาเขียน EA ทองคำด้วย MQL5 ต้องปรับกระบวนการคิดใหม่ เพราะโครงสร้างภายในเปลี่ยนไปใช้ระบบคำขอคำสั่งแทนการเรียกฟังก์ชันเดียวจบ ทำให้ซับซ้อนขึ้นแต่ทำงานได้เร็วและแม่นยำกว่าเดิม
ใน MQL5 การส่งคำสั่งซื้อขายจะใช้โครงสร้างข้อมูลที่เรียกว่า MqlTradeRequest และ MqlTradeResult เราต้องกำหนดค่าต่างๆ ลงในโครงสร้างนี้ก่อน แล้วจึงส่งผ่านฟังก์ชัน OrderSend ข้อดีคือมีการตรวจสอบความถูกต้องของคำสั่งก่อนส่งไปยังเซิร์ฟเวอร์ ลดโอกาสเกิดข้อผิดพลาดจากการตั้งค่าพารามิเตอร์ผิด
อีกหนึ่งจุดสำคัญคือ MQL5 ไม่มีฟังก์ชันแยกสำหรับการปิดออเดอร์โดยตรง การปิดออเดอร์ทองคำที่เปิดอยู่ต้องทำผ่านการส่งคำสั่งซื้อขายในทิศทางตรงกันข้ามด้วยขนาดล็อตที่เท่ากัน ซึ่งเรียกว่าการทำตำแหน่งตรงข้าม นี่คือความแตกต่างที่คนเคยชินกับ MQL4 ต้องระวังเป็นอย่างมาก
การใช้งานคลาสมาตรฐานเพื่อความสะดวก
MQL5 มาพร้อมกับไลบรารีคลาสมาตรฐานที่ช่วยลดความซับซ้อนในการเขียนโค้ด เช่น คลาส CTrade ที่รวมฟังก์ชันการเปิดปิดออเดอร์ไว้ในรูปแบบที่เรียกใช้งานง่ายขึ้น เราสามารถใช้เมธอด Buy และ Sell ของคลาสนี้เพื่อเปิดออเดอร์ทองคำได้โดยตรง โดยไม่ต้องจัดการโครงสร้างข้อมูลยาวๆ เอง แต่ก็ต้องแลกกับการต้องเรียนรู้วิธีการสร้างวัตถุและเรียกใช้งานคลาสให้ถูกต้อง
การคำนวณขนาดล็อตและการจัดการความเสี่ยงสำหรับทองคำ
การคำนวณขนาดล็อตเป็นหัวใจสำคัญที่สุดในการเขียน EA ทองคำ เพราะถ้าคำนวณผิดกำไรอาจกลายเป็นขาดทุนหนักได้ ทองคำ 1 ล็อตมีมูลค่าต่อ 1 ดอลลาร์เท่ากับ 100 ดอลลาร์ ซึ่งสูงมากเมื่อเทียบกับคู่เงินทั่วไป
วิธีที่เมนเทอร์แนะนำคือการคำนวณล็อตจากเปอร์เซ็นต์ความเสี่ยงที่เรายอมรับได้ต่อไม้ สมมติเรามีเงินทุน 10,000 ดอลลาร์ ยอมรับความเสี่ยง 2 เปอร์เซ็นต์ต่อการเทรดหนึ่งครั้ง ความเสี่ยงที่ใช้ได้คือ 200 ดอลลาร์ ถ้าเราตั้งสต็อปลอสไว้ที่ 5 ดอลลาร์จากราคาเปิด ขนาดล็อตที่เหมาะสมจะเท่ากับ 200 หารด้วยผลคูณของ 5 ดอลลาร์และ 100 ดอลลาร์ ซึ่งก็คือ 0.4 ล็อต
ในการเขียนโค้ด MQL4 เราต้องดึงค่าเงินทุนปัจจุบันด้วยฟังก์ชัน AccountBalance และคำนวณตามสูตรข้างต้น ส่วน MQL5 จะใช้ฟังก์ชัน AccountInfoDouble ร่วมกับค่าคงที่ ACCOUNT_BALANCE เพื่อดึงยอดเงินมาคำนวณ สิ่งสำคัญคือต้องตรวจสอบเสมอว่าขนาดล็อตที่คำนวณได้ไม่ต่ำกว่าขั้นต่ำที่โบรกเกอร์กำหนด และไม่เกินขีดจำกัดสูงสุดที่อนุญาต มิฉะนั้นคำสั่งจะถูกปฏิเสธ
ตัวอย่างการคำนวณกำไรขาดทุนจากการเทรดทองคำจริง
สมมติเราเปิดออเดอร์ซื้อทองคำ 0.4 ล็อตที่ราคา 2569 ดอลลาร์ ตั้งสต็อปลอสไว้ที่ 2564 ดอลลาร์และเป้าหมายทำกำไรที่ 2579 ดอลลาร์ ถ้าราคาไปถึงเป้าหมาย ระยะทำกำไรคือ 10 ดอลลาร์ คำนวณได้จาก 10 คูณ 100 คูณ 0.4 เท่ากับ 400 ดอลลาร์ แต่ถ้าราคาตกไปโดนสต็อปลอสที่ 2564 ดอลลาร์ ระยะขาดทุนคือ 5 ดอลลาร์ คำนวณได้จาก 5 คูณ 100 คูณ 0.4 เท่ากับ 200 ดอลลาร์ ซึ่งตรงกับเป้าหมายความเสี่ยงที่เราตั้งไว้ นี่คือตัวอย่างที่แสดงให้เห็นว่าการจัดการล็อตและสต็อปลอสต้องสอดคล้องกันเสมอ
การตั้งค่าสต็อปลอสและเทคพรอฟิตให้สมเหตุสมผลกับทองคำ
การตั้งจุดตัดขาดทุนสำหรับทองคำต้องคำนึงถึงความผันผวนในแต่ละช่วงเวลา ถ้าตั้งไว้ใกล้เกินไปจะโดนสปรีดหรือการย้อนราคาเล็กน้อยก็ตัดออกก่อน แต่ถ้าไกลเกินไปก็เสียเปรียบในเรื่องอัตรากำไรต่อความเสี่ยง
วิธีที่ดีคือการใช้ค่าเฉลี่ยของระยะเคลื่อนไหวราคาหรือที่เรียกว่าค่าเฉลี่ยช่วงราคาย้อนหลัง ใน MQL4 เราสามารถดึงค่านี้ได้จากฟังก์ชัน iATR โดยระบุระยะเวลาย้อนหลัง 14 แท่งเทียน ถ้าค่าที่ได้คือ 3.5 ดอลลาร์ เราอาจตั้งสต็อปลอสไว้ที่ 1.5 เท่าของค่านี้ หรือประมาณ 5.25 ดอลลาร์จากราคาเปิด วิธีนี้จะทำให้ระยะตัดขาดทุนปรับตัวตามสภาพตลาดโดยอัตโนมัติ ไม่ว่าจะในช่วงที่ตลาดเงียบหรือมีข่าวใหญ่ก็ตาม
สำหรับการตั้งเป้าหมายทำกำไร เทรดเดอร์มืออาชีพมักใช้อัตราส่วนกำไรต่อความเสี่ยงอย่างน้อย 1 ต่อ 2 หรือ 1 ต่อ 3 ขึ้นไป ถ้าสต็อปลอสอยู่ที่ 5 ดอลลาร์ เป้าหมายทำกำไรควรอยู่ที่ 10 ถึง 15 ดอลลาร์ การเขียนโค้ดให้ EA คำนวณอัตโนมัติจะช่วยให้เราไม่ต้องมานั่งคำนวณเองทุกครั้ง และที่สำคัญคือต้องเช็คเสมอว่าระยะเหล่านี้ไม่เข้าเงื่อนไขระยะห้ามของโบรกเกอร์ ซึ่งหากเข้าเงื่อนไข EA ต้องมีระบบปรับระยะให้พอดีโดยอัตโนมัติ
การทดสอบ EA ทองคำย้อนหลังและข้อควรระวัง
ก่อนนำ EA ทองคำไปใช้จริง การทดสอบย้อนหลังเป็นขั้นตอนที่ข้ามไม่ได้เลย โปรแกรมเทสเตอร์ในแพลตฟอร์มเทรดมีให้เลือกหลายโหมด แต่สำหรับทองคำควรเลือกโหมดจำลองทุกติ๊กเพื่อให้ผลลัพธ์ใกล้เคียงความเป็นจริงมากที่สุด
ข้อควรระวังสำคัญคือคุณภาพของข้อมูลย้อนหลัง ถ้าข้อมูลมีรูพรุนผลการทดสอบจะผิดเพี้ยนทันที ควรดาวน์โหลดข้อมูลราคาทองคำให้ครบถ้วนและตรวจสอบค่าคุณภาพให้เป็น 90 เปอร์เซ็นต์ขึ้นไป นอกจากนี้ควรทดสอบในหลายกรอบเวลาและหลายช่วงเวลา เพื่อให้มั่นใจว่า EA ของเราทำงานได้ดีในทุกสภาวะตลาด ไม่ใช่แค่ช่วงที่ทองคำเป็นขาขึ้นเท่านั้น
อีกประเด็นที่ต้องใส่ใจคือเรื่องสภาพคล่องและสลิปเปจในการทดสอบ ในโลกความจริงการเปิดออเดอร์ทองคำขนาดใหญ่อาจได้ราคาที่แย่กว่าที่ต้องการ แต่ในการทดสอบย้อนหลังมักจะสมมุติว่าได้ราคาตามที่กำหนดเสมอ เราจึงควรตั้งค่าสลิปเปจในการทดสอบให้สมจริง และทดสอบกับหลายโบรกเกอร์เพื่อเปรียบเทียบผลลัพธ์ การทำเช่นนี้จะช่วยให้เราเห็นภาพรวมที่ชัดเจนว่า EA ทองคำของเราพร้อมลุยตลาดจริงหรือยังต้องปรับปรุง
| หัวข้อเปรียบเทียบ | MQL4 | MQL5 | ผลกระทบต่อการเทรดทองคำ |
|---|---|---|---|
| การส่งคำสั่งซื้อขาย | ใช้ฟังก์ชัน OrderSend ครั้งเดียวจบ | ต้องสร้างโครงสร้างคำขอก่อนส่งคำสั่ง | MQL5 ตรวจสอบความถูกต้องได้ละเอียดกว่า ลดโอกาสส่งคำสั่งผิดพลาดในช่วงราคาทองผันผวน |
| การปิดออเดอร์ | เรียกฟังก์ชัน OrderClose โดยตรง | ทำผ่านการส่งคำสั่งตรงกันข้าม | ต้องเขียนโค้ดระบุตำแหน่งให้ถูกต้อง มิฉะนั้นอาจปิดออเดอร์ทองคำผิดคู่หรือผิดทิศทาง |
| การจัดการออเดอร์ | ใช้ลูปวนรอบตามจำนวนออเดอร์ทั้งหมด | เลือกจากตำแหน่งที่เปิดอยู่โดยตรง | MQL5 เข้าถึงข้อมูลออเดอร์ทองคำได้เร็วกว่า ทำให้การตัดสินใจในตลาดที่เคลื่อนไหวเร็วแม่นยำขึ้น |
| การอ่านค่าอินดิเคเตอร์ | เรียกใช้ฟังก์ชันเช่น iMA และ iATR ได้ทันที | ต้องสร้างตัวจัดการข้อมูลอินดิเคเตอร์ก่อน | MQL4 เหมาะกับมือใหม่เพราะเขียนสั้นและเข้าใจง่าย ส่วน MQL5 ซับซ้อนแต่ใช้ทรัพยากรเครื่องน้อยกว่า |
การปรับแต่งและนำ EA ทองคำไปใช้งานจริง
เมื่อผ่านการทดสอบย้อนหลังมาแล้ว ขั้นตอนสุดท้ายคือการนำ EA ไปรันบนบัญชีทดลองก่อนอย่างน้อย 1 เดือน เพื่อดูพฤติกรรมในสภาพตลาดจริง การทำเช่นนี้จะเผยให้เห็นปัญหาที่ไม่พบในการทดสอบ เช่น การเชื่อมต่อที่ไม่เสถียรหรือความล่าช้าของเซิร์ฟเวอร์
ในช่วงแรกของการใช้งานจริง ควรตั้งขนาดล็อตให้เล็กกว่าที่ทดสอบไว้ เพื่อเป็นการประคองตัวและสังเกตว่า EA ทำงานตามตรรกะที่เราเขียนไว้จริงหรือไม่ ถ้าพบว่ามีออเดอร์ที่เปิดผิดพลาดหรือการตัดขาดทุนไม่ทำงาน ต้องหยุด EA ทันทีและกลับไปตรวจสอบโค้ด อย่าปล่อยให้ระบบเทรดอัตโนมัติทำงานโดยไม่มีการดูแล เพราะสภาพตลาดทองคำสามารถเปลี่ยนแปลงได้อย่างรวดเร็ว
สุดท้ายนี้ การเขียน EA เทรดทองคำไม่ใช่เรื่องของการเขียนโค้ดครั้งเดียวแล้วจบ มันเป็นกระบวนการพัฒนาอย่างต่อเนื่อง เมื่อพฤติกรรมตลาดเปลี่ยนไป เงื่อนไขการเทรดของเราก็ต้องปรับเปลี่ยนตาม คอยติดตามผลการทำงาน บันทึกข้อผิดพลาดที่พบ และนำกลับมาปรับปรุงโค้ด MQL4 หรือ MQL5 อยู่เสมอ นี่คือหนทางที่จะทำให้เรากลายเป็นนักเขียนโปรแกรมระบบเทรดที่ประสบความสำเร็จและสามารถสร้างรายได้จากตลาดทองคำในระยะยาวได้อย่างยั่งยืน
▶ เปิดบัญชีโบรกเกอร์ที่แนะนำ คลิกที่นี่
คำถามที่พบบ่อย
MQL4 กับ MQL5 ต่างกันยังไง ควรเริ่มจากตัวไหนดี
MQL4 และ MQL5 มีความแตกต่างกันในด้านโครงสร้างโค้ดและการทำงานภายใน MQL4 ใช้ระบบฟังก์ชันเดียวเรียกใช้งานทั้งหมด ทำให้เขียนได้ง่ายและเหมาะกับมือใหม่ ส่วน MQL5 แยกฟังก์ชันการขอคำสั่งและการส่งคำสั่งออกไป ทำให้ซับซ้อนขึ้นแต่ทำงานเร็วและจัดการความเสี่ยงได้ดีกว่า ถ้าเพิ่งเริ่มต้นแนะนำให้เริ่มจาก MQL4 ก่อนเพื่อให้เข้าใจตรรกะของระบบเทรด พอชำนาญแล้วค่อยย้ายไปใช้ MQL5 เพื่อให้ใช้ทรัพยากรเครื่องได้คุ้มค่าที่สุด
เขียน EA เทรดทองคำต้องตั้งค่าพอยต์และพิปยังไง
ทองคำหรือ XAU มีการเคลื่อนไหวของราคาที่รุนแรงกว่าคู่เงินทั่วไป ดังนั้นการระบุค่าพอยต์ในโค้ดจึงสำคัญมาก ใน MQL4 เราต้องเช็คค่า Point และ Digits ของโบรกเกอร์ว่าทองคำมีกี่จุดทศนิยม เพื่อคำนวณระยะสต็อปลอสให้ถูกต้อง ส่วน MQL5 มีระบบ _Point ที่อ่านค่าอัตโนมัติได้สะดวกกว่า การตั้งค่าให้เข้ากับโบรกเกอร์จะช่วยให้ EA ไม่เปิดออเดอร์ผิดพลาดจากการคำนวณระยะที่ไม่ตรง
ทำไม EA ทองคำที่เขียนขึ้นมาเองถึงเปิดออเดอร์ไม่ติด
สาเหตุหลักมาจากการตั้งค่าระยะสต็อปลอสและเทคพรอฟิตใกล้ราคาปัจจุบันเกินไป จนโบรกเกอร์ปฏิเสธคำสั่งเพราะเข้าเงื่อนไข Stop Level อีกสาเหตุคือการส่งคำสั่งซื้อขายโดยไม่ระบุสลิปเปจ ทำให้ราคาเปลี่ยนแปลงเร็วเกินไปในช่วงข่าว ต้องเช็คเสมอว่าโค้ดมีการจัดการสลิปเปจและตรวจสอบระยะห่างของจุดตัดขาดทุนกับราคาตลาดให้เหมาะสมกับความผันผวนของทองคำ
ใช้ Trailing Stop กับทองคำควรตั้งระยะเท่าไรถึงจปลอดภัย
ทองคำมีแรงเสียดทานจากการย้อนราคาค่อนข้างสูง การตั้งค่าสต็อปลอสตามทิศทางหรือ Trailing Stop ถ้าชิดเกินไปจะโดนตัดกำไรก่อนจะวิ่งต่อ ควรตั้งระยะ Trailing Stop ขั้นต่ำที่ราว 150-200 พอยต์หรือประมาณ 1.5-2 ดอลลาร์ ขึ้นไป ขึ้นอยู่กับกรอบเวลาที่ใช้เทรด ยิ่งกรอบเวลาใหญ่ยิ่งต้องให้พื้นที่ราคาหายใจมากขึ้น การทดสอบย้อนหลังจะช่วยหาระยะที่เหมาะสมกับสไตล์การเทรดของเราได้ดีที่สุด
เขียน EA ทองคำแล้วต้องเทสกับข้อมูลย้อนหลังแบบไหนถึงจะน่าเชื่อถือ
การเทสด้วยข้อมูลแบบ Every Tick จะให้ผลลัพธ์ที่ใกล้เคียงความเป็นจริงมากที่สุดเพราะจำลองการเคลื่อนไหวของราคาทุกติ๊ก ควรเทสย้อนหลังอย่างน้อย 1-2 ปีเพื่อให้เห็นพฤติกรรมของ EA ในช่วงตลาดขาขึ้น ขาลง และไซด์เวย์ นอกจากนี้ต้องเช็คค่า Quality ของข้อมูลให้เป็น 90 เปอร์เซ็นต์ขึ้นไป และควรเทสในหลายโบรกเกอร์เพื่อเปรียบเทียบผลลัพธ์ เพราะสภาพแวดล้อมของทองคำในแต่ละที่อาจแตกต่างกัน
อ่านเพิ่มเติม
📱 ดาวน์โหลดแอป iCafeFX ฟรี — รับสัญญาณเทรด Forex และทองคำ XAU/USD แบบ Real-time
ดาวน์โหลดเลย







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