【รายงานทางเทคนิค】กำจัดทอนข้อบกพร่องของ ZeroMQ เปิดใช้งานการเชื่อมต่อโดยตรงที่เร็วที่สุดด้วย cTrader Open API บันทึกเปิดใช้งานการขับเคลื่อนตรง
■ บทนำ: การหลุดพ้นจาก “การประนีประนอม” ในชื่อความยืดหยุ่นทั่วไป
เวลาตีสว่าง กระบวนการสร้างพื้นฐานระบบซื้อขายอัตโนมัติที่ Semura Lab ของเราได้เริ่มต้นขึ้นอีกครั้ง ในเฟสที่ผ่านมา เราได้กำจัดระบบสั่งซื้อแบบสุ่มที่ไม่มีความเหนือกว่าเชิงคณิตศาสตร์ (แบบอย่าง 007) ออกไป และสกัดโครงสร้างที่มั่นคงซึ่งดูแลการบริหารทุนและการบริหารตำแหน่งเดียวอย่างเข้มงวด (แบบอย่าง 008) ให้ออกมาเพียงส่วนที่ต้องการ ในบทความนี้ จะอภิปรายการออกแบบท่อส่ง (pipe) สำหรับการเชื่อมต่อ “สมองส่วนหน้า (ตรรกะการเข้าใช้)” ที่พัฒนาด้วย Python กับ “แขนขา” ที่ใช้งานจริงนี้
แนวทางก่อนหน้านี้ เพื่อการบริหารร่วมกันระหว่าง MT4, MT5, และ cTrader บนแพลตฟอร์มต่างชนิดจาก Python ได้ใช้มาตรฐานการสื่อสารร่วมกันคือ “ZeroMQ” เพื่อรวมเส้นทางเข้าด้วยกัน จึงเป็น “การแสวงหาความยืดหยุ่น” ที่ผ่านไป อย่างไรก็ดี เนื่องจาก Open API ของแอปพลิเคชัน cTrader ที่เราได้ยื่นขอจาก Spotware ได้รับการอนุมัติ ทำให้ข้อสมมติพื้นฐานของการออกแบบระบบพลิกกลับไปโดยสิ้นเชิง
■ 1. จุดเริ่มต้นของการออกแบบกระบวนการ: “ความเสี่ยงที่ใหญ่ที่สุดคือความล่าช้าในการสื่อสาร”
ที่นี่ ผมได้สังเกตเห็น “การประนีประนอม” ทางวิศวกรรมที่ซ่อนอยู่ในคำว่าความยืดหยุ่น จึงเรียกร้องให้ผู้เป็นผู้ดูแลการตรวจสอบในบทบาท AI ผู้บัญชาการเรือออกมาตรวจสอบหนึ่งครั้ง “วิธีที่ดีที่สุดในการสั่งงาน MT4, MT5, และ cTrader จาก Python คืออะไร? ปัญหาที่ใหญ่ที่สุดคือความล่าช้าในการสื่อสาร (ลัค) ซึ่งสถาปัตยกรรมที่ลดความล่าช้านั้นจะเป็นความได้เปรียบขั้นสุดท้าย”
โครงการของเราเป้าหมายคือ ภายใต้ข้อจำกัดสเปรด 0.6 pips ตั้งค่ากำไรที่แคบมากระหว่าง 5–8 pips และการขาดทุนตามความเสี่ยง (รางวัลต่อความเสี่ยง 1:1) เพื่อให้ได้กำไรที่ชนะ 55% และผลตอบแทนต่อเดือน 10% อย่างแม่นยำ ในสภาพการดำเนินงานที่เข้มงวดนี้ การนำ TCP การสื่อสารผ่าน ZeroMQ เข้ามาจะทำให้เกิด “ความล่าช้าในการสื่อสาร (slippage)” ที่เป็นมิลลิวินาที ซึ่งจะกัดกร่อนขอบเล็กๆ อย่างตรงไปตรงมา
ผลสรุปที่ “กัปตันการเดินทาง” คำนวณมาจากระดับความล่าช้าดังนี้
MT5:API ดั้งเดิมทางการ (ความล่าช้าประมาณศูนย์เมื่อเชื่อมต่อด้วยหน่วยความจำโดยตรง ไม่ช้าสุด)
cTrader:API เปิด (การสื่อสารโดยตรงถึงเซิร์ฟเวอร์ด้วยรูปแบบ Protobuf ยุคความล่าช้าต่ำมาก)
MT4:ต้องผ่าน ZeroMQ หรืออินเตอร์เฟซระหว่างเพื่อให้มีโครงสร้างที่มีโอเวอร์เฮด (ล่าช้า) ซึ่งหลีกเลี่ยงไม่ได้
จากการรับฟังรายงานนี้ วิศวกรออกแบบกระบวนการจึงตัดสินใจทันที เราจะFreeze เส้นทาง ZeroMQ ที่เคยมั่นใจในความยืดหยุ่นไว้เป็นกรณีสำรองทั้งหมด เพื่อกำจัดความล่าช้าในการสื่อสารที่เป็น bottleneck ของระบบทั้งหมด และลดเหลือเป็นสถาปัตยกรรมที่ชัดเจนใน MT5 ที่มีการล่าช้าสูงสุดและคู่หูที่มีความล่าช้าต่ำมากของ cTrader