ตัวกรองที่มีประโยชน์ตอบคำถามง่าย ๆ ว่า EA นี้สามารถพิจารณาเปิดสถานะใหม่ด้วยข้อมูลที่มีอยู่ได้หรือไม่ ชื่อช่วงซื้อขายหรือปฏิทินว่างเพียงอย่างเดียวตอบไม่ได้ กฎต้องอาศัยเวลาที่ตรวจสอบแล้ว ขอบเขตเหตุการณ์ที่ชัดเจน และราคาปัจจุบันของสัญลักษณ์ที่ซื้อขาย
เริ่มจากการแยกหน้าที่ให้ชัดเจน: จัดการความเสี่ยงของสถานะเดิมตามกฎของมัน และอนุญาตให้พิจารณาเข้าใหม่เมื่อผ่านการตรวจที่จำเป็นแล้วเท่านั้น คู่มือนี้อธิบายการแยกหน้าที่ แสดงบันทึกการตัดสินใจสั้น ๆ และวิธีทดสอบ ไม่ใช่ EA สำเร็จรูปหรือหลักฐานว่าทำกำไรได้
1. กำหนดว่าตัวกรองควบคุมอะไร
แยกกฎช่วงซื้อขาย ข้อจำกัดจากข่าวตามกำหนด และเงื่อนไขเข้าของกลยุทธ์ออกจากกัน กฎช่วงซื้อขายกำหนดเวลาที่อนุญาต กฎข่าวตัดช่วงเวลาที่เลือกออก ส่วนเงื่อนไขกลยุทธ์กำหนดโอกาสเทรด การผ่านสองข้อแรกไม่ได้สร้างโอกาสขึ้นมา และไม่ได้ยกเลิกข้อจำกัดด้านการส่งคำสั่งหรือความเสี่ยงของบัญชี
ใช้ผลลัพธ์ที่ชัดเจนสามแบบ: PASS, BLOCK และ UNKNOWN เป็นป้ายสถานะข้อมูลที่ผู้เขียนกำหนด ไม่ใช่รหัสข้อผิดพลาด MT4 ช่วงปิดที่ทราบแน่ชัดอาจบล็อกได้ แต่ข้อมูลที่หายไปไม่ใช่เหตุผลให้ผ่าน ในนโยบายตัวอย่างนี้ ทั้งการบล็อกและข้อมูลจำเป็นที่ยังไม่ทราบจะพักการพิจารณาเข้าใหม่ ส่วนการจัดการสถานะต้องตรวจข้อมูลและสิทธิ์ของตนเอง
2. เขียนกฎเวลาและความครอบคลุมก่อนทดสอบ
ใช้การเทียบเวลาตามวันที่จากคู่มือช่วงเวลาซื้อขาย และนิยามเหตุการณ์จากคู่มือปฏิทินเศรษฐกิจ บันทึกกฎเป็นข้อกำหนดที่มีเวอร์ชัน เพื่อให้ผู้อื่นนำไปใช้กับข้อมูลชุดเดียวกันได้
- ตราสารและขอบเขต: โบรกเกอร์ บัญชี สัญลักษณ์ สกุลเงินที่เกี่ยวข้อง และกลุ่มเหตุการณ์ที่เลือก รวมถึงขั้นตอนที่ตามมา
- ช่วงซื้อขาย: วันที่เต็ม เขตเวลา กฎวันในสัปดาห์ และขอบเขตที่รวมหรือไม่รวมอย่างชัดเจน
- การเทียบเวลา: ความสัมพันธ์ที่ตรวจสอบแล้วระหว่าง UTC กฎเวลาท้องถิ่นที่ใช้ และเวลาเซิร์ฟเวอร์โบรกเกอร์ในแต่ละวันที่เกี่ยวข้อง
- ช่วงงดเพราะข่าว: แหล่งเวลาเหตุการณ์ ระยะก่อนและหลัง ช่วงทับซ้อน และการจัดการเหตุการณ์ที่ยังไม่แน่นอน เลื่อน หรือเปลี่ยนกำหนด
- ข้อกำหนดข้อมูล: วันที่และสกุลเงินที่ต้องครอบคลุม โครงสร้าง เวอร์ชันแหล่งข้อมูล สถานะอัปเดต และขีดจำกัดอายุข้อมูล
- การตอบสนองเมื่อผิดพลาด: สิ่งที่ทำให้พักการเข้าใหม่ วิธีติดตามและจัดการสถานะต่อ และสถานะที่ต้องตรวจเทียบก่อนกลับมาทำงาน
หากช่วงซื้อขายท้องถิ่นข้ามเที่ยงคืน ให้กำหนดว่าเป็นวันซื้อขายใดและจัดการการเปลี่ยนวันที่อย่างชัดเจน รวมเหตุการณ์จากวันข้างเคียงหากช่วงงดของมันมาถึงเวลาตัดสินใจ เมื่อเปลี่ยนเวลาออมแสง ให้ตรวจวิธีแปลงเวลาท้องถิ่นที่ซ้ำหรือไม่มีอยู่จริง หากไม่มีการเทียบเวลา อย่าเปลี่ยนไปใช้เขตเวลาที่คอมพิวเตอร์แสดงโดยไม่แจ้ง
3. ตรวจสแนปช็อตปฏิทิน ไม่ใช่แค่ดาวน์โหลดสำเร็จ
สแนปช็อตคือปฏิทินเวอร์ชันที่บันทึกไว้เพื่อใช้ตัดสินใจ การดาวน์โหลดสำเร็จหรือรายการเหตุการณ์ว่างไม่ได้ยืนยันว่าข้อมูลครบ ต้องตรวจว่าผู้ให้บริการรองรับสกุลเงิน วันที่ และประเภทเหตุการณ์ที่ขอ ดึงระเบียนจำเป็นครบแล้ว และอ่านเวลา หน่วย และเวอร์ชันได้ถูกต้อง
เก็บข้อมูลอัปเดตของผู้ให้บริการแยกจากเวลาที่เรารับข้อมูล คำตอบที่เพิ่งได้รับอาจมีข้อมูลเก่า เปลี่ยนสแนปช็อตที่ใช้งานเมื่อเวอร์ชันใหม่ทั้งชุดผ่านการตรวจแล้วเท่านั้น ไฟล์ไม่ครบหรือรายการที่อัปเดตครึ่งเดียวต้องไม่ถือว่าใช้ได้ การอัปเดตล้มเหลวหรืออ่านแคชซ้ำต้องไม่รีเซ็ตอายุของเวอร์ชันที่ตรวจไว้ล่าสุด
สแนปช็อตที่ตรวจสอบแล้วและใหม่เพียงพอยืนยันได้ว่าไม่มีช่วงงดที่เลือกไว้ทำงานอยู่ภายในขอบเขตที่ประกาศ แต่หากข้อมูลไม่ครอบคลุม กำหนดการเปลี่ยนแล้วยังไม่ชัด เวลาเหตุการณ์สำคัญไม่ทราบ หรือสแนปช็อตหมดอายุ ให้คงสถานะไม่ทราบ พักการเข้าใหม่ที่พึ่งข้อมูลนั้นตามแผน และดำเนินการจัดการข้อผิดพลาดกับสถานะเดิมต่อ ข่าวที่ไม่ได้กำหนดล่วงหน้าอยู่นอกการป้องกันของปฏิทิน
4. ตรวจราคาของสัญลักษณ์ที่ซื้อขายแยกต่างหาก
ติดตามเวลารับและความถูกต้องของ Bid/Ask สำหรับสัญลักษณ์นั้น โดยวัดเวลาที่ผ่านไปด้วยวิธีรองรับการเริ่มใหม่และการเปลี่ยนนาฬิกา การเพิ่งรับราคาไม่ได้พิสูจน์ว่าข้อมูลต้นทางใหม่หรือส่งคำสั่งได้จริง ตรวจฟีด บริบทเวลา สเปรด และสิทธิ์ซื้อขายแยกกัน ดูการติดตาม EA
ใน MT4 ค่า TimeCurrent() ภายใน OnTick() อ้างถึงทิกที่กำลังประมวลผล แต่ในตัวจัดการอื่นอาจสะท้อนราคาล่าสุดจากสัญลักษณ์ใดก็ได้ใน Market Watch จึงไม่ใช่หลักฐานว่าสัญลักษณ์ของเรามีราคาใหม่ ในการทำงานจริง TimeGMT() ขึ้นกับการตั้งเวลาคอมพิวเตอร์ ส่วนในตัวทดสอบ MT4 จะเท่ากับ TimeCurrent() ที่จำลองขึ้น ผลต่างในตัวทดสอบจึงใช้สร้างส่วนต่างเวลาโบรกเกอร์ย้อนหลังไม่ได้
5. ดูบันทึกการตัดสินใจสมมติ
เฉพาะตัวอย่างนี้ ใช้ช่วงซื้อขาย UTC [08:00, 17:00) ของวันที่ 2026-03-16 และช่วงรวมข่าว A/B สมมติ [12:15, 13:05) จากคู่มือก่อนหน้า สมมติว่าความครอบคลุมและข้อมูลกำกับที่จำเป็นตรวจแล้วทั้งหมด เหตุการณ์ครอบคลุมเต็มวัน UTC ซึ่งพอสำหรับการตรวจช่วงกลางวันเหล่านี้และระยะเผื่อ ไม่มีการอ้างถึงผู้ให้บริการหรือประกาศจริง
เพื่ออธิบายการคำนวณ เลือกอายุสแนปช็อตไม่เกิน 30 นาที และอายุราคาของสัญลักษณ์ไม่เกิน 5 วินาที เป็นค่าอินพุตที่ผู้เขียนเลือก ไม่ใช่ค่าความถี่อัปเดตที่แนะนำหรือการรับประกันความปลอดภัย สแนปช็อตแรกตรวจตอน 12:00:00 และตรวจชุดใหม่ที่ครบและเป็นปัจจุบันตอน 13:06:00 เวลา 17:00:00 มีอีกชุดที่ใช้ได้ อายุทั้งหมดสมมติว่ามาจากการวัดเวลาที่ตรวจสอบแล้วและเทียบกันได้
| เวลาตัดสินใจ · UTC | อายุสแนปช็อต | อายุราคาสัญลักษณ์ | ผลตรวจเวลาและข้อมูลเท่านั้น |
|---|---|---|---|
12:10:00 | 10 min | 1 s | ผ่านส่วนนี้ แล้วตรวจส่วนอื่นต่อ |
12:20:00 | 20 min | 1 s | บล็อก: อยู่ในช่วงงดเพราะข่าว |
13:05:00 | 65 min | 1 s | พัก: ปฏิทินเก่า |
13:06:06 | 6 s | 12 s | พัก: ราคาสัญลักษณ์เก่า |
13:06:07 | 7 s | 1 s | ผ่านส่วนนี้ แล้วตรวจส่วนอื่นต่อ |
17:00:00 | 0 s | 1 s | บล็อก: นอกช่วงซื้อขาย |
เวลา 13:05:00 ช่วงงดเพราะข่าวจบ แต่สแนปช็อตเดิมมีอายุ 65 นาที เวลา 13:06:06 ชุดใหม่มีอายุ 6 วินาที แต่ราคาสัญลักษณ์ที่รับล่าสุดตอน 13:05:54 มีอายุ 12 วินาที หากรับตอน 13:06:06 จะมีอายุเพียง 1 วินาที ณ 13:06:07 แถวนั้นผ่านเฉพาะการตรวจเวลาและข้อมูลในตัวอย่าง ไม่ใช่กลยุทธ์ การส่งคำสั่ง หรือความเสี่ยง ขอบเขต 17:00 ไม่รวมอยู่ในช่วง ไม่มีการจำลองออเดอร์ การออก หรือผลตอบแทน
6. คงการจัดการและตรวจเทียบคำสั่งที่โบรกเกอร์
การบล็อกเข้าใหม่ต้องไม่ข้ามการติดตามและจัดการสถานะเดิมตามแผน การจัดการยังต้องมีข้อมูลและสิทธิ์ที่ถูกต้องของตนเอง ราคาขาดไม่ได้อนุญาตให้แก้ stop โดยไม่ตรวจ กำหนดแยกว่าจะเก็บหรือยกเลิกคำสั่งรอดำเนินการอย่างไร และตรวจสถานะที่โบรกเกอร์ยอมรับ แทนการคิดว่าคำขอยกเลิกสำเร็จแล้ว
ปุ่ม AutoTrading ของ MT4 ห้ามส่งคำขอซื้อขายอัตโนมัติ แต่ EA และ OnTick() อาจยังทำงานต่อ จึงไม่ใช่ปุ่มพักเฉพาะเข้าใหม่ เพราะการจัดการที่ต้องส่งคำขอซื้อขายอาจถูกกระทบด้วย แยกปุ่มนี้จากการถอด EA หรือการตัดการเชื่อมต่อเทอร์มินัล การป้องกันที่มีอยู่ฝั่งโบรกเกอร์และการจัดการฝั่งไคลเอนต์เป็นคนละกลไก ดูการจัดการความเสี่ยง
7. อย่าให้การดึงข้อมูลบล็อกการตัดสินใจ
ใช้แคชที่ครบและตรวจสอบแล้วในการตัดสินใจ และมีกระบวนการอัปเดตที่ควบคุมได้ กำหนดเวลารอสูงสุด การแจ้งข้อผิดพลาด และวิธีเปิดใช้เวอร์ชันใหม่ การเรียกจัดการหนึ่งครั้งก่อนคำขอที่ช้า ไม่ได้ทำให้การจัดการทำงานต่อระหว่างที่คำขอนั้นบล็อก EA เดียวกัน
อ่านเพิ่มเติม: ข้อจำกัดเครือข่ายและเหตุการณ์ของ MT4
ฟังก์ชัน WebRequest() ของ MQL4 ทำงานแบบซิงโครนัส ย้ายจาก OnTick() ไป OnTimer() ใน EA เดียวกันก็ไม่ทำให้เป็นอะซิงโครนัส การรอคำตอบยังทำให้โปรแกรมล่าช้าได้ องค์ประกอบดึงข้อมูลที่แยกต่างหากอาจส่งสแนปช็อตที่ตรวจแล้วให้ แต่ต้องตรวจการส่งต่อและข้อผิดพลาดด้วย ตัวจับเวลาใช้กำหนดเวลาทำงาน ไม่ได้รับประกันว่าการจัดการจะไม่หยุดชะงัก
ลำดับเชิงตรรกะคือ เรียกเส้นทางจัดการและติดตามตามแผน ประเมินเงื่อนไขจำเป็นสำหรับเข้าใหม่ และเมื่อผ่านแล้วจึงพิจารณาเงื่อนไขกลยุทธ์ปัจจุบันพร้อมควบคุมการส่งคำสั่งและความเสี่ยง นี่คือการแบ่งหน้าที่ตัดสินใจ ไม่ใช่โค้ด MQL4 ที่รันได้หรือการรับประกันว่าจะประมวลผลทันเวลา ต้องทดสอบการเชื่อมระบบจริง สิทธิ์ และพฤติกรรมเมื่อผิดพลาดก่อนพึ่งพา
8. เก็บบันทึกการตัดสินใจให้คงอยู่หลังเริ่มใหม่
บันทึกเวลาตัดสินใจ UTC เวลาเซิร์ฟเวอร์และการเทียบที่ตรวจแล้ว เวอร์ชันกฎ รหัสสแนปช็อต เวลาแหล่งข้อมูลและเวลารับ ความครอบคลุม เวลารับและอายุราคา ช่วงงดที่ทำงาน และเหตุผลของผลลัพธ์ เก็บทั้งกรณีที่ไม่ผ่านและการตรวจที่ผ่าน บันทึกควรอธิบายเหตุผลการพักได้โดยไม่ต้องสร้างบันทึกย้อนหลังจากปฏิทินที่แก้ไขแล้ว
หลังเริ่มใหม่หรือเชื่อมต่ออีกครั้ง ให้ตรวจเทียบสถานะเดิม คำสั่งรอ และคำขอที่ยังไม่ชัดกับโบรกเกอร์ กู้คืนเฉพาะสถานะที่ตรวจได้ การเริ่มใหม่ไม่ได้หมายความว่าบัญชีไม่มีสถานะหรือแคชเป็นปัจจุบัน ป้องกันการประมวลผลกรณีเดิมซ้ำ หากสถานะจำเป็นยังไม่ทราบ ให้พักการเข้าใหม่จนตรวจเทียบเสร็จ และทำการตอบสนองข้อผิดพลาดกับการจัดการต่อไป
9. ทดสอบความถูกต้องก่อนตีความแบ็กเทสต์
ก่อนวัดผลในตลาด ให้สร้างกรณีเล็ก ๆ แบบคงที่พร้อมผลที่คาดไว้ รวมถึง:
- รวมเวลาเริ่มช่วงซื้อขาย ไม่รวมเวลาจบ และช่วงที่ข้ามเที่ยงคืน
- จุดเริ่มและจบช่วงงดข่าว เหตุการณ์ทับซ้อน และกำหนดการที่เลื่อนหรือเปลี่ยน
- ข้อมูลปฏิทินขาด ไม่ครบ รูปแบบผิด หรืออยู่นอกขอบเขต รวมถึงคำตอบว่างที่ยังไม่ตรวจ
- อายุข้อมูลตรงขีดจำกัดที่เลือกและเกินเล็กน้อย รวมทั้งกรณีมีทิกใหม่จากสัญลักษณ์อื่น แต่สัญลักษณ์ที่เทรดยังเก่า
- เริ่มใหม่ นาฬิกากระโดด อัปเดตล้มเหลว และเปลี่ยนสแนปช็อตไม่เสร็จ โดยไม่รีเซ็ตอายุข้อมูล
- คำสั่งฝั่งโบรกเกอร์และเส้นทางจัดการระหว่างบล็อกเข้าใหม่ รวมถึงยกเลิกถูกปฏิเสธและไม่มีสิทธิ์ซื้อขาย
Strategy Tester ของ MT4 ไม่เรียกใช้ WebRequest() และไม่จัดการเหตุการณ์ Timer ทดสอบตรรกะตัดสินใจร่วมด้วยข้อมูลที่ตรึงไว้และการเทียบเวลาย้อนหลังที่ตรวจแล้ว ผ่านเส้นทางทดสอบที่รองรับ นำแต่ละสแนปช็อตมาใช้เมื่อถึงเวลาที่มันควรมีให้ใช้จริงเท่านั้น ตารางเหตุการณ์ย้อนหลังอย่างเดียวไม่จำลองการดึงข้อมูลสดหรือการกำหนดเวลาของตัวจับเวลา ดูข้อจำกัดเพิ่มเติมในคู่มือแบ็กเทสต์ MT4
10. ตรวจประโยชน์แยกจากการทำงานถูกต้อง
ตัวกรองที่เขียนถูกอาจตัดทั้งเทรดกำไรและเทรดขาดทุน เปรียบเทียบกฎที่เสนอกับเกณฑ์อ้างอิงที่ประกาศไว้ โดยใช้กลยุทธ์ ข้อมูล และสมมติฐานต้นทุนเดียวกัน เก็บกรณีที่พิจารณาและเหตุผลที่ปฏิเสธทั้งหมด แยกข้อมูลช่วงหลังไว้ตรวจสอบ และรวมต้นทุนการส่งคำสั่งที่สมจริง การค้นหลายช่วงเวลาแล้วรายงานเฉพาะตัวที่ดีที่สุดอาจทำให้เข้ากับตัวอย่างมากเกินไป
จากนั้นติดตามการเชื่อมระบบจริงในเดโม ทั้งข้อมูลปกติและกรณีผิดพลาด วัดการอัปเดตล้มเหลว การพักเพราะข้อมูลเก่า ช่องว่างราคา ความล่าช้าในการจัดการ และคำตอบจากโบรกเกอร์ บันทึกที่สะอาดบอกว่าระบบทำอะไร แต่ไม่ได้พิสูจน์กำไรในอนาคต ก่อนขยายการใช้งาน ให้ยืนยันว่า:
- มีเอกสารข้อกำหนดพร้อมเวอร์ชัน การเทียบเวลา และนโยบายเลือกเหตุการณ์
- การตรวจความครอบคลุมและอายุข้อมูลแยกสถานะไม่มีข้อจำกัด ถูกบล็อก และไม่ทราบได้
- กรณีขอบเขตและข้อผิดพลาดได้ผลตรงที่คาดไว้
- การทดสอบย้อนหลังรักษาเวลาที่ข้อมูลมีให้ใช้และเปิดเผยประวัติที่ขาด
- เดโมตรวจการดึงข้อมูล การเริ่มใหม่ ความต่อเนื่องของการจัดการ และสถานะคำสั่งฝั่งโบรกเกอร์
- ประโยชน์ที่กล่าวอ้างถูกประเมินแยก โดยมีต้นทุนและข้อมูลช่วงหลัง ไม่ใช้ตัวเลขผลงานที่แต่งขึ้น
11. คำถามเกี่ยวกับตัวกรอง EA
ถ้าปฏิทินไม่มีข้อจำกัด EA ควรเข้าเลยหรือไม่?
ไม่ ปฏิทินที่ตรวจแล้วว่าไม่มีข้อจำกัดผ่านเพียงส่วนหนึ่ง ยังต้องตรวจช่วงซื้อขาย คุณภาพราคา การส่งคำสั่ง ความเสี่ยงบัญชี และเงื่อนไขกลยุทธ์ปัจจุบัน ข่าวไม่คาดคิดอาจเกิดนอกกำหนดได้
ทำไมเพิ่งดาวน์โหลดแล้วยังได้สถานะไม่ทราบ?
คำตอบอาจเก่า ไม่ครบ อยู่นอกขอบเขตที่ต้องการ หรืออ่านผิด เวลารับอย่างเดียวไม่ยืนยันข้อมูลผู้ให้บริการ ให้คงการพักที่ขึ้นกับข้อมูลจำเป็นจนกว่าการตรวจที่เกี่ยวข้องจะผ่าน
ทดสอบดาวน์โหลดข่าวสดในตัวทดสอบ MT4 ได้หรือไม่?
ตัวทดสอบตามเอกสารไม่เรียก WebRequest และไม่จัดการเหตุการณ์ Timer ใช้ข้อมูลตรึงที่มีเวอร์ชันและเส้นทางที่รองรับเพื่อตรวจตรรกะร่วม แล้วตรวจการดึงข้อมูลและการกำหนดเวลาจริงแยกในเดโม
ควรใช้ AutoTrading เป็นปุ่มพักช่วงข่าวหรือไม่?
ผลไม่ได้จำกัดแค่เข้าใหม่ คำขออัตโนมัติที่ใช้จัดการสถานะก็อาจถูกห้าม แบบที่กล่าวถึงนี้คือการควบคุมเข้าใหม่ภายในระบบ โดยตรวจหน้าที่จัดการแยกต่างหาก ไม่ใช่สวิตช์อเนกประสงค์สำหรับลบความเสี่ยงที่ถืออยู่
12. แหล่งอ้างอิงและขอบเขต
เอกสารอ้างอิง MQL4 WebRequest อย่างเป็นทางการอธิบายคำขอแบบซิงโครนัสและข้อจำกัด ส่วนข้อจำกัดของ Strategy Tester ใน MT4ระบุการจำลองเวลาและฟังก์ชันภายนอกกับเหตุการณ์ที่ไม่รองรับ ตรวจฟังก์ชันที่ใช้ได้ในแพลตฟอร์มและการเชื่อมระบบของคุณจริง ๆ แทนการคิดว่าตัวอย่างของอีกแพลตฟอร์มใช้แทนได้ ตรวจเอกสารเมื่อ 2026-10-17
คู่มือนี้ปิดชุดคู่มือช่วงซื้อขายและข่าวด้วยกรอบกฎและการตรวจสอบ กำหนดการ สแนปช็อต อายุข้อมูล และผลลัพธ์เป็นกรณีสมมติเพื่อสอน ขีดจำกัดไม่ใช่คำแนะนำ และไม่มีการอ้างว่าได้รัน EA หรือมีผลเทรด ตัวกรองไม่สามารถขจัดความเสี่ยงตลาด การส่งคำสั่ง หรือบัญชีได้