【รายงานทางเทคนิค】MT4×Python直結パイプ開通録:ZeroMQ連携と物理的遅延の受容
■ บทนำ: ทำไมต้องกลับสู่สถาปัตยกรรมรุ่นเก่าในตอนนี้
เรา Semura Lab ได้ออกแบบกระบวนการเพื่อดึงค่าเฉลี่ยจากตลาดให้ได้อย่างดีที่สุดและเร็วที่สุดเสมอ ในแพลตฟอร์มสมัยใหม่อย่าง MT5 หรือ cTrader เราได้ใช้งาน API อย่างเป็นทางการ และดำเนินการ “สลิปเลส ไดร์ฟ” ที่ต่อเชื่อมผลการคำนวณของ Python (สมองส่วนกลาง) โดยไม่มีเสียงรบกวนของดีเลย์ไปยังแพลตฟอร์ม (ฝ่ายปฏิบัติการ) อย่างตรงไปตรงมา
จากมุมมองทางวิศวกรรม ความเหมาะสมในการใช้ MT4 ซึ่งเป็นมรดกของสถาปัตยกรรม 32 บิตแทบไม่มีเลย แต่เมื่อเราในฐานะวิศวกรออกแบบกระบวนการมองภาพรวมของระบบ เราพบกับความท้าทายเชิงโครงสร้างหนึ่ง—ข้อมูลประวัติศาสตร์มหาศาลที่เราได้สะสมมาเป็นเวลานาน และฐานการตรวจสอบ Walk Forward Analysis (WFA) ที่พึ่งพาโครงสร้างข้อมูลของ MT4 อย่างลึกซึ้ง
การเปลี่ยนแพลตฟอร์มเพื่อให้ได้ความเร็วในการใช้งานเพียงผิวเผินจะทำลายความต่อเนื่องของข้อมูลในอดีต และเป็นแหล่งที่มาของการปรับแต่งมากเกินไป (overfitting) สิ่งที่เราต้องการในตอนนี้ไม่ใช่เพียงความเร็วของการทำออเดอร์ แต่เป็น“พื้นฐานการตรวจสอบที่มั่นคงในการนำข้อมูลการทดสอบในอดีตมาฝ่าวงจรไปข้างหน้าโดยไม่ تختلفไปจากเกณฑ์” เพื่อสร้างพื้นฐานการตรวจสอบที่ดี เราจึงตัดสินใจลงลึกไปยังระบบ legacy MT4 เพื่อสร้างรากฐานนี้
■ 1. การกำจัดภาพลวงตา: การละทิ้ง ‘สลิปเลสแบบสมบูรณ์’ และการนำ ZMQ มาใช้
ใน MT4 ไม่มีโมดูลเชื่อมต่อกับ Python แบบ native เหมือน MT5 วิธีแก้ปัญหาสถาปัตยกรรมที่เป็นไปได้คือการสร้างการสื่อสารผ่านซ็อกเก็ตท้องถิ่นโดยใช้ ZeroMQ (ZMQ)
ตรงนี้เราอดทนยอมรับความจริงทางกายภาพที่โหดร้าย เมื่อเราแทรกซ็อกเก็ตสื่อสารภายนอกอย่าง ZMQ เข้าไป ระดับความสมบูรณ์แบบของ “สลิปเลสแบบสมบูรณ์” ที่ทำบน MT5 จึงเป็นไปไม่ได้ทางกายภาพ การสื่อสารระหว่างกระบวนการจะมีดีเลย์ไม่กี่มิลลิวินาทีอยู่แล้ว อย่างไรก็ตาม การออกแบบกระบวนการคือการหาคำตอบที่ดีที่สุดท่ามกลางข้อจำกัด หากยอมให้ความล่าช้าบ้างและรวมพลังของการคำนวณขั้นสูงของ Python เข้ากับข้อมูลประวัติศาสตร์ของ MT4 จำเป็นต้องรวมกัน มิฉะนั้นการพัฒนาระบบจะหยุดลง เราจึงละทิ้งภาพลวงตาและยอมรับขอบเขตทางกายภาพนี้