*NOTE: กลไกตัวนี้เลิกใช้แล้ว เนื่องจากเวอร์ชั่นปัจจุบันได้แยกโมเดล ML/DL/RL ออกไป โดยมี REST API มาครอบ เพื่อความสะดวกในการจัดการโมเดล ML/DL/RL มากขึ้น แต่บทความนี้ผมไม่ได้ลบ เนื่องจากเก็บไว้ให้ศึกษา และเผื่อนำบางส่วนมาใช้หรือพัฒนาต่อยอดได้ในอนาคต

กลไกส่วน distributed data pipeline using asynchronous messaging, dataset mapping และสรุป use case ของการใช้ data คร่าวๆ ทั้งส่วน price, indicators, features, trade dataกลไกนี้สามารถรันแบบ local บนเครื่องเดียวกับ frontend robot (MT4/5, cTrader, Amibroker) และ backend robot (Python) ได้ หรือจะแบ่งส่วนกระจายรันหลายเครื่องก็ได้


ลำดับคร่าวๆ ของ data flow (ขอยกตัวอย่างเป็น FOREX):
*กรณีที่มี dataset มากกว่า 1 ตัว ใช้ราคาจาก symbol เดียวกัน และ timeframe เดียวกัน ระบบจะใช้การ copy DataFrame ราคา ก่อนเริ่ม build feature เพื่อลด concurrently access ไปยังข้อมูลราคาเดียวกันพร้อมกัน เนื่องจาก dataset interceptor แต่ละตัวรันเป็น thread และโดยปกติ dataset แต่ละตัวมักใช้อินดิเคเตอร์และฟีจเจอร์ไม่เหมือนกันอยู่แล้ว


Design Rationale
:
รองรับทั้งการเทรด หุ้น, TFEX, FOREX, cryptocurrency ฯลฯความยากและความท้าทายคือ การ normalize & generalize data pipeline และโครงสร้างการทำงานทั้งหมด ให้รองรับการเทรดหลายชนิดสินค้าและหลายตลาดได้ และต้อง platform/library/framework/tool independence เหนือกาลเวลา มี wrapper เพียบ ยอมช้านิดนึงเพื่อแลกความยืดหยุ่น เป็น “trade-off but less sensitivity and low risk from technology impact”
ช่วยให้ทำ trading model & predictive model ได้ง่าย สะดวก ไม่ต้องเตรียม manual เองเยอะ และการทำงานและโครงสร้างประสานและ transparent ทั้งส่วนทำ dataset เพื่อเอาไปสร้างโมเดล, ส่วนรันเทรดจริง และ ส่วน backtest
และอีกความท้าทายคือ การกำหนด System Boundary ให้แชร์ resource ในจุดจำเป็นเท่านั้น ลดการ centralize ที่ไม่จำเป็น และรองรับ partial failure ถ้ามีส่วนไหนพังหรือหยุดการทำงาน ต้องไม่ฉุดชุดโรบอทในสินค้าอื่นหรือตลาดอื่น และต้องรองรับการ scale ได้และยังช่วยให้การติดตั้ง circuit breaker service, health check service สะดวกและคุมง่าย
ในอนาคตเมื่อทำ auto asset allocation, distributed portfolio และการกระจายกระเป๋าตังค์ ก็จะสะดวกเพราะในชุด docker 1 ตัวมีความเป็น modularity สูง คุม coupling เข้มงวด และคุมทิศทางของ call เข้มงวด.ผมเปลี่ยนสถาปัตยกรรมระบบหลายจุด เพื่อให้นำไปรันบนเครื่องพีซีธรรมดาเครื่องเดียวก็ได้ ไม่ต้องคลัสต้งคลัสเตอร์เว่อร์วังก็ได้ แต่ถ้าปรารถนาก็รองรับ
แบ่ง Level of Abstraction ของการอิมพลีเม้นต์ เพื่อให้ผู้ใช้นำไปใช้และพัฒนาส่วนต่างๆ ไว้หลาย levelโดยไล่ตั้งแต่ระดับง่ายสุด แค่ปรับค่า strategy setting ยากขึ้นอีกก็นิดก็ทำ dataset, trading model, predictive model เอง ไปจนส่วนยากสุด (ผู้ใช้ปรับแต่งทุกส่วนได้เองตามชอบ)
ในส่วน backend จับยัดใส่ docker หมด เพื่อผู้ใช้จะได้ไม่ต้องไปลงและเซ็ตเองให้เมื่อยตุ้มไปโฟกัสการทำ trading model & predictive model เต็มที่ไปเลย
predictive model จะใช้ rule base หรือ machine learning ก็ได้ตามชอบ รองรับ Deep Learning ได้นะเออ ![]()
แนวทางที่ผมมักใช้ออกแบบระบบบ่อยๆ เช่น