03 พฤศจิกายน, 2026

Expert เทรดอัตโนมัติ “Forex Agent”

Igor Gerasko
RU TH

ปัจจุบันมีวิธีมากมายในการประเมินรสนิยมและแนวโน้มส่วนตัวของบุคคลก่อนที่จะได้พูดคุยกับเขาอย่างลึกซึ้ง ข้อมูลเหล่านี้อาจสะท้อนผ่านเสื้อผ้า ท่าทางการปฏิบัติตนในสังคม หรือแม้แต่ Ringtone ของโทรศัพท์มือถือ

วันนี้เรามีโอกาสฝันถึงความชอบของบุคคลที่เราไม่เคยพบเห็นมาก่อน โดยไม่จำเป็นต้องอาศัยชิ้นส่วนของเสื้อผ้าหรือกลิ่นของน้ำยาดับกลิ่นเลย ทั้งหมดนี้กลับง่ายกว่าที่คิด — และในขณะเดียวกันก็แปลกใหม่กว่าที่คาดไว้เล็กน้อย สิ่งที่เรามีเพียงอย่างเดียวคือ ชื่อแฝงบนฟอรัม (renoshnik), ชื่อ-นามสกุล (ยูริ โวลอชิน) และชื่อของ Expert — Agent_Fx_v07

ยากที่จะบอกว่าความสอดคล้องระหว่างชื่อและเลขเวอร์ชันเป็นเรื่องบังเอิญหรือไม่ แต่ภาพในใจที่ผุดขึ้นคือ “สายลับ 007” และเจมส์ บอนด์ บางทียูริอาจเป็นแฟนตัวยงของหนังชุดบอนด์ หรืออาจชื่นชอบนิยายสายลับโดยทั่วไป หรือบางทีชื่อนี้อาจแฝงนัยยะอื่นที่ลึกซึ้งกว่านั้นก็เป็นได้ — นี่คือช่องว่างให้ใช้จินตนาการได้อย่างเต็มที่

แม้จะอยู่ในช่วงหลังเทศกาลปีใหม่ ซึ่งเหมาะกับการความคิดฟุ้งซ่าน แต่เราก็ขอหันกลับมาสู่เป้าหมายหลักอีกครั้ง นั่นคือการวิเคราะห์แก่นแท้ของโค้ดและ Operator ทั้งหมดที่ประกอบกันเป็นระบบเทรดอัตโนมัติ «Forex Agent»

เวอร์ชันต้นฉบับ

ผลการทดสอบเวอร์ชันต้นฉบับได้ขยายครอบคลุมทั้งปี 2009 และเพื่อความชัดเจนยิ่งขึ้น ทุกการซื้อขายถูกปรับให้มีขนาดคงที่ที่ 0.1 ใช้คู่เงิน EURUSD และ Timeframe H1 (ดูรูปที่ 1):

กราฟนี้แสดงผลลัพธ์การทดสอบแรกในปี 2009 บนคู่เงิน EURUSD โดยแกนซ้ายระบุยอดคงเหลือ (Баланс) และกำไร (Средства) ส่วนแกนล่างคือจำนวนแท่งเทียน การเพิ่มขึ้นของเส้นสีน้ำเงินแสดงให้เห็นถึงแนวโน้มการทำกำไรที่เติบโตขึ้นอย่างต่อเนื่อง

แสดงกำไรสุทธิที่ระดับ 1,218 USD และ Drawdown สูงสุดที่ 598 USD — ซึ่งถือว่าค่อนข้างดีแล้ว แต่หากขยายระยะเวลาการทดสอบออกไปเป็นสองปี โดยรวมปี 2008 ด้วย จะได้ผลลัพธ์ดังนี้ (ดูรูปที่ 2):

กราฟนี้แสดงผลลัพธ์การทดสอบที่ปรึกษาการซื้อขายตั้งแต่ปี 2008-2009 บนคู่เงิน EURUSD โดยมีค่าสมดุลเริ่มต้นที่ 90.00% เส้นสีน้ำเงินแสดงการเปลี่ยนแปลงของยอดเงินตลอดช่วงเวลาทดสอบ

ในกรณีนี้ กำไรสุทธิลดลงเหลือ 1,003 USD ขณะที่ Drawdown สูงสุดเพิ่มขึ้นเป็น 1,562 USD

ตามปกติ เราจะพยายามปรับปรุงสถานการณ์ด้วยการศึกษาหลักการทำงานของ Expert อย่างละเอียด และปรับเปลี่ยนตรรกะภายในให้เหมาะสม ขั้นตอนแรกคือการระบุส่วนที่สร้างสัญญาณซื้อขาย — ซึ่งเป็นจุดที่ตัดสินใจเปิดตำแหน่งจริง ดังที่มักพบเห็นบ่อย ๆ การสร้างสัญญาณนี้ใช้โค้ดเพียงไม่กี่บรรทัด:

if(cci[1]<5 && cci[2]<cci[3] && cci[1]<cci[2] && cci[0]>cci[1] &&
Open[2]>Close[2] && Open[1]>Close[1] && Open[0]<Close[0] && Open[1]<Close[0]) pokypka();

if(cci[1]>-5 && cci[2]>cci[3] && cci[1]>cci[2] && cci[0]<cci[1] &&
Open[2]<Close[2] && Open[1]<Close[1] && Open[0]>Close[0] && Open[1]>Close[0]) prodaza();

ตรรกะการทำงานของ Expert

รูปแบบกราฟิกของเงื่อนไขข้างต้นสามารถเห็นได้ในรูปที่ 3:

ฉลาก “Рис. 3. Логика принятия решений в советнике Agent_Fx_V07” แปลว่า รูปที่ 3: ตรรกะการตัดสินใจใน Expert Advisor Agent_Fx_V07 เครื่องหมายบนกราฟแสดงจุดที่ระบบทำการซื้อขายตามกลยุทธ์ที่กำหนดไว้

เมื่อเส้นค่าดัชนี CCI อยู่เหนือระดับ 5.0 และกำลังสร้างจุดสูงสุด (peak) ในขณะที่ 2 แท่งก่อนหน้าเป็นแท่งเขียว (Bullish) และแท่งปัจจุบันเป็นแท่งแดง (Bearish) — ระบบจะเปิดสถานะ Short

ในทางกลับกัน หากเส้น CCI อยู่ต่ำกว่าระดับ -5.0 และกำลังสร้างจุดต่ำสุด (trough) โดยที่ 2 แท่งก่อนหน้าเป็นแท่งแดง และแท่งปัจจุบันเป็นแท่งเขียว — ระบบจะเปิดสถานะ Long

นอกจากนี้ ควรเสริมรายละเอียดสำคัญอีก สองประการ:

ประการแรก: สัญญาณเปิดตำแหน่งไม่ได้หมายความว่าจะเข้าตลาดทันที แต่จะดำเนินการผ่าน Pending Order ประเภท Stop โดยตั้งไว้ห่างจากราคาปัจจุบันเป็นระยะเท่ากับค่าพารามิเตอร์ DistSet ของโปรแกรม ค่าเริ่มต้นคือ 10 points ดังนั้น เราจึงต้องยอมรับว่าความน่าจะเป็นที่ราคาจะกระทบคำสั่งนี้สูงมาก และนั่นเท่ากับว่าเรา “เสีย” ไป 10 points — คือขาดทุนเพิ่มขึ้นหากถูก Stop Loss หรือได้กำไรน้อยลงหากทำกำไรสำเร็จ

ประการที่สอง: โปรแกรมใช้ค่าของแท่งเทียนที่ยังไม่ปิด (แท่งที่ 0) ซึ่งหมายความว่ามีการพยายาม “จับ” ทิคสุดท้ายของแท่งเทียนนั้น ดังนั้น ค่าดัชนีและลักษณะของแท่งเทียนจึงถือว่าเชื่อถือได้ถึง 99% อย่างไรก็ตาม ในโลกแห่งความเป็นจริง การจับทิคสุดท้ายของแท่งเทียนนั้นขึ้นอยู่กับโชค ดังนั้น บางส่วนของการซื้อขายที่ปรากฏในผลการทดสอบอาจไม่เกิดขึ้นจริงเมื่อใช้งานออนไลน์ จึงไม่ชัดเจนว่าเหตุใดผู้เขียน Expert จึงเลือกใช้วิธีนี้ เพราะการเปิดตำแหน่งที่จุดเปิดของแท่งเทียนถัดไปนั้นง่ายกว่ามาก — หลักการนี้จึงถูกนำมาใช้ในเวอร์ชันที่ปรับปรุงแล้ว

การปรับปรุงกลยุทธ์

เราจึงค่อย ๆ เปลี่ยนผ่านสู่การปรับปรุงกลยุทธ์ โดยเริ่มจากการเปลี่ยนเวลาการตั้งคำสั่งแบบ BuyStop และ SellStop จาก “ช่วงปลายสุดของแท่งเทียนปัจจุบัน” เป็น “ทิคแรกของแท่งเทียนถัดไป”

ข้อความอธิบายการปรับปรุงกลยุทธ์การซื้อขายโดยเปลี่ยนจากการใช้คำสั่งแบบ Stop เป็น Limit orders เพื่อเพิ่มกำไรประมาณ 20 จุดต่อธุรกรรม นอกจากนี้ยังมีการลบฟังก์ชันการย้ายคำสั่งอัตโนมัติออกและจำกัดการติดตามราคาไว้ที่ระยะ DistSet จากจุดเปิดของแท่งเทียนใหม่

ผลลัพธ์สุดท้าย คือเวอร์ชันที่ 8 ของ Expert ซึ่งเมื่อทดสอบกับข้อมูลราคาสองปีล่าสุด (2008–2009) ได้ผลดังนี้ (ดูรูปที่ 4–7):

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่เงิน EURUSD โดยแกนตั้งแสดงระดับราคาตั้งแต่ 9812 ถึง 12713 และแกนนอนแสดงช่วงเวลาตั้งแต่ 0 ถึง 253 เส้นสีน้ำเงินแสดงแนวโน้มราคาที่เปลี่ยนแปลงขึ้นลงตลอดช่วงการทดสอบ

รูปแบบของเส้น Equity คล้ายกับรูปที่ 2 อย่างมาก แสดงว่าโครงสร้างพื้นฐานของกลยุทธ์ยังคงไม่เปลี่ยนแปลง แต่ตัวเลขประสิทธิภาพนั้นดีขึ้นอย่างชัดเจน: กำไรสุทธิเพิ่มขึ้นเป็น 2,742 USD ขณะที่ Drawdown สูงสุดยังคงอยู่ที่ระดับ 1,524 USD

หากวิเคราะห์เปรียบเทียบสถิติระหว่างเวอร์ชันต้นฉบับกับเวอร์ชันที่ปรับปรุงแล้ว จะพบว่ากำไรเพิ่มเติมที่ได้มาเกิดขึ้นโดยตรงจากการเปลี่ยนเวลาการตั้งคำสั่งจากช่วงท้ายแท่ง เป็นต้นแท่งถัดไป (ไม่ได้เปลี่ยนชนิด Order เป็น Limit ในโค้ด แต่เปลี่ยนจังหวะการวาง Pending Order)

สิ่งนี้ยืนยันได้จากข้อเท็จจริงที่ว่าสัดส่วนการซื้อขายที่ทำกำไรในทั้งสองกรณีใกล้เคียงกันมาก — 74% และ 81% ตามลำดับ แต่กำไรเฉลี่ยต่อการซื้อขายที่ทำกำไรในกรณีแรกอยู่ที่ 27 USD ขณะที่ในกรณีที่สองเพิ่มขึ้นเกือบสองเท่าเป็น 51 USD

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่สกุลเงิน USDCHF โดยแกนตั้งแสดงระดับราคาและแกนนอนแสดงช่วงเวลา การทดสอบเริ่มจากยอดคงเหลือประมาณ 10115 และลดลงมาอยู่ที่ระดับต่ำสุดใกล้ 8546 ก่อนที่จะดีดตัวขึ้นเล็กน้อยในช่วงท้าย

สำหรับคู่เงิน USDCHF ไม่มีอะไรน่าภูมิใจนัก อาจต้องปรับแต่งพารามิเตอร์ trailing stop หรือระยะห่างระหว่างราคาเปิดคำสั่งแบบรอและราคาตลาดปัจจุบันให้ละเอียดยิ่งขึ้น พารามิเตอร์ที่ใช้กับ EURUSD นั้นไม่เหมาะสมกับคู่เงินนี้อย่างชัดเจน — กำไรสุทธิอยู่ที่ -1,061 USD

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่เงิน GBPUSD โดยแกนตั้งคือยอดคงเหลือ/ средства (Balance/Funds) และแกนนอนคือจำนวนแท่งเทียน
เส้นสีน้ำเงินแสดงการเปลี่ยนแปลงของยอดคงเหลือในช่วงเวลาทดสอบ ซึ่งเริ่มจากประมาณ 9575 และสิ้นสุดที่ประมาณ 11284 โดยมีค่าสูงสุดใกล้ 11284 และต่ำสุดใกล้ 9575

ผลการทดสอบกับคู่เงิน GBPUSD ให้ผลลัพธ์สุดท้ายเป็นบวก โดยมีกำไรสุทธิ 941 USD แต่ Drawdown สูงสุดกลับพุ่งสูงถึง 1,716 USD ซึ่งในกรณีนี้ผลลัพธ์สอดคล้องกับ USDCHF — นั่นคือ ต้อง Optimize พารามิเตอร์เฉพาะสำหรับคู่นี้

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่เงิน USDJPY โดยแกนตั้งคือยอดคงเหลือ (Баланс) และแกนนอนคือจำนวนแท่งเทียน (ทิก) ตั้งแต่ 0 ถึง 202 เส้นสีน้ำเงินแสดงให้เห็นความผันผวนของยอดเงินที่เริ่มต้นใกล้ 10304 ลดลงต่ำสุดประมาณ 8753 และดีดตัวกลับขึ้นมาในช่วงท้ายของการทดสอบ

จากกราฟจะเห็นว่ามีช่วงที่ทำกำไรได้น้อยมาก ส่วนใหญ่เป็นช่วงเวลาที่ยาวนานของออเดอร์ที่ขาดทุน แม้เส้น Equity จะมีความมั่นคงมากกว่า USDCHF แต่ข้อสรุปยังคงเหมือนเดิม

การปรับแต่ง Forex Agent

เมื่อเราสรุปได้ว่าสำหรับคู่เงินที่ยังไม่ให้ผลลัพธ์ที่ยอมรับได้ จำเป็นต้องปรับแต่งพารามิเตอร์ เราจึงดำเนินการปรับแต่ง Expert อย่างเป็นทางการ กระบวนการปรับแต่งทั้งหมดจะไม่กล่าวถึงโดยละเอียด แต่จะนำเสนอเฉพาะพารามิเตอร์สุดท้ายและผลลัพธ์ที่ได้

การปรับแต่งนี้ดำเนินการบนพารามิเตอร์สามตัวของโปรแกรม:

DistSet — ระยะห่างระหว่างราคาปัจจุบันกับคำสั่งแบบรอ
MinProfit — ระดับกำไร (เป็นจุด) ที่เมื่อถึงแล้วจะย้าย Stop Loss หนึ่งครั้งต่อแท่งเทียนในโซนที่ทำกำไร
Tr_Stop — ระยะที่ Stop Loss จะย้ายออกจากราคาปัจจุบัน

ผลลัพธ์แรกคือสำหรับคู่เงิน USDJPY (ดูรูปที่ 8) พารามิเตอร์ที่ใช้คือ: DistSet = 14, MinProfit = 15, Tr_Stop = 50

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่เงิน USDJPY หลังจากทำการปรับให้เหมาะสมแล้ว โดยเส้นสีน้ำเงินแสดงแนวโน้มกำไรที่เพิ่มขึ้นจากประมาณ 9703 ไปสู่ 12550 ตามแกนตั้ง

กำไรสุทธิอยู่ที่ 2,259 USD และ Drawdown สูงสุดเพียง 783 USD — ซึ่งดีกว่าผลลัพธ์ที่ได้จาก EURUSD และถือว่าดีที่สุดในขณะนี้ เนื่องจาก Recovery Factor อยู่ที่ 2.89

ผลลัพธ์ถัดไปคือสำหรับคู่เงิน GBPUSD (ดูรูปที่ 9) พารามิเตอร์ที่เหมาะสมที่สุดคือ: DistSet = 24, MinProfit = 40, Tr_Stop = 45

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่เงิน GBPUSD หลังการปรับให้เหมาะสมที่สุด โดยแกนตั้งแสดงยอดคงเหลือ (Баланс) ที่เพิ่มขึ้นจากประมาณ 9405 ไปสู่ 13534 ตามแกนนอนที่เป็นจำนวนแท่งเทียน

กำไรสุทธิ 3,575 USD กับ Drawdown สูงสุด 1,437 USD ให้ Recovery Factor ที่ 2.49 และเส้น Equity มีความมั่นคงมากขึ้น

คู่เงินสุดท้ายคือ USDCHF (ดูรูปที่ 10) พารามิเตอร์ที่เหมาะสมคือ: DistSet = 24, MinProfit = 25, Tr_Stop = 10

กราฟนี้แสดงผลลัพธ์การทดสอบเวอร์ชันที่ 8 บนคู่เงิน EUR/USD หลังการปรับให้เหมาะสมที่สุด โดยแกนตั้งแสดงยอดคงเหลือ/เงินทุน ที่เพิ่มขึ้นจากประมาณ 9566 เป็น 11267 ตามช่วงเวลาบนแกนนอน

น่าเสียดายที่แม้การปรับแต่งพารามิเตอร์แล้วก็ยังไม่ได้ผลลัพธ์ที่น่าพอใจ อย่างไรก็ตาม กำไรสุทธิยังคงเป็นบวกที่ 1,212 USD และ Drawdown สูงสุดยังอยู่ในระดับที่ยอมรับได้ที่ 796 USD แต่ Recovery Factor ยังไม่ถึง 2 — มีเพียง 1.52 เท่านั้น

บทสรุป

การวิเคราะห์ที่ดำเนินการ และการปรับปรุงกลยุทธ์แบบจุดต่อจุด แสดงให้เห็นอย่างชัดเจนว่าผลลัพธ์สามารถเปลี่ยนแปลงได้อย่างมากเพียงเพราะการแทรกแซงตรรกะของโปรแกรมเพียงเล็กน้อย และความจริงที่ว่าการเปลี่ยนแปลงเหล่านี้มีขอบเขตจำกัดยิ่งยืนยันคำกล่าวที่ว่า “ความสำเร็จอยู่ใกล้มือ แค่เอื้อมไปคว้า”

ดาวน์โหลด

Test.zip — ผลการทดสอบ Expert แบบละเอียด;
Agent_Fx_v07.mq4 — เวอร์ชันต้นฉบับของ Expert;
Agent_Fx_v08_edit.mq4 — เวอร์ชันที่แก้ไขและปรับปรุงกลยุทธ์แล้ว

ติดตามเราทาง Telegram

Fortrader contentUrl Suite 11, Second Floor, Sound & Vision House, Francis Rachel Str. Victoria Victoria, Mahe, Seychelles +7 10 248 2640568

เพิ่มเติมจากหมวดหมู่นี้

บทความทั้งหมด

การดัดแปลงโปรแกรม MetaTrader4 ด้วยตนเอง (ตอนที่ 2)

บทความตอนที่ 2 ของซีรีส์การเขียนโปรแกรม MQL4 ที่อธิบายแนวคิดพื้นฐาน เช่น ตัวแปร ตัวดำเนินการ เงื่อนไข ลูป และฟังก์ชัน พร้อมแนวทางปฏิบัติสำหรับการดัดแปลงโปรแกรมด้วยตนเอง

ปรับแต่งโปรแกรม MetaTrader 4 ด้วยตนเอง (ตอนที่ 1)

เรียนรู้วิธีปรับแต่งโปรแกรมสำหรับ MetaTrader 4 ด้วยตนเอง: ตั้งแต่การหาซอร์สโค้ด วางไฟล์ให้ถูกต้อง ไปจนถึงเข้าใจโครงสร้างและอัลกอริทึมของ MQL4

การปรับแต่งโปรแกรมสำหรับ MetaTrader 4 ด้วยตนเอง (ตอนที่ 1)

เรียนรู้วิธีปรับแต่งโปรแกรมสำหรับ MetaTrader 4 ด้วยตนเอง: ตั้งแต่การหาซอร์สโค้ด การวางไฟล์ให้ถูกต้อง ไปจนถึงการเข้าใจโครงสร้างและอัลกอริทึมของ MQL4

และอีกครั้งกับ ZigZag

การวิเคราะห์ระบบการซื้อขายที่ใช้ ZigZag สร้างสามเหลี่ยมและกรองสัญญาณด้วย MACD เพื่อเพิ่มประสิทธิภาพและลด Drawdown

บทความเพื่อการศึกษาล่าสุด

บทความทั้งหมด

บรรณาธิการแนะนำ

บทความทั้งหมด