Posted on August 15, 2021 by minimallife
Leave a Comment
ภาพรวมของ DeepQuant Algorithmic System Architecture คือ มีชุดโรบอทกระจายไปเทรดในหลาย cloud instance เพื่อเทรดในหลายตลาด ซึ่งสามารถติดตามการทำงานและการลงทุนได้ผ่าน mobile app โดยมีรายละเอียดดังนี้
หัวใจสำคัญของ architecture นี้คือการเป็น unified architecture ที่ช่วยให้สร้างโรบอทเทรดได้ในหลายตลาดและหลายแพลตฟอร์ม เนื่องจากแต่ละตลาดมักมีหลายแพลตฟอร์ม เช่น ตลาด FOREX มีทั้ง MT4, OANDA Open API และอีกหลายแพลตฟอร์ม
Unified architecture ครอบคลุมทั้งด้าน architectural process (กระบวนการทำงานของระบบ), data schema (มี data schema กลางสำหรับ position, order, account), market/exchange gateway (ระบบเชื่อมต่อกับตลาด/โบรกเกอร์/exchange ที่ใช้ common interface เดียวกัน), model & robot template (เทมเพลตโค้ดและโมเดล) ซึ่งช่วยลด learning curve ให้แก่ผู้ใช้ ไม่ต้องไปเรียนรู้แพลตฟอร์มในตลาดต่างๆ ที่มีมากมายและหลากหลายมาก ทั้งหลายภาษาโปรแกรม, หลายเทคโนโลยี ฯ กล่าวสั้นๆ คือ เหนื่อยศึกษาครั้งแรกทีเดียว ก็สามารถสร้างโรบอทเทรดได้ในหลายตลาด ซึ่งการสร้างโมเดลและโรบอทในการเทรดในแต่ละตลาดมีส่วนแตกต่างกันเพียงเล็กน้อยเท่านั้น ทำให้ผู้ใช้ไปมุ่งเน้นที่การสร้างโมเดลและโรบอทได้เต็มที่
ผู้ใช้ติดตามพอร์ตโฟลิโอ, การทำงานของโรบอท และปรับค่า strategy setting ผ่าน mobile app
มีระบบกลาง (control system) ที่ช่วยเชื่อมต่อกับระบบติดตามการทำงานของชุดโรบอทต่างๆ (monitoring system)
แต่ละชุดโรบอทประกอบด้วย trading robot และ trading model หลายตัว ที่เทรดในตลาดเดียวกันและโบรกเกอร์หรือ exchange เดียวกัน
แต่ละชุดโรบอททำงานอยู่ใน container (Docker) เพื่อสะดวกในด้าน portability เช่น การรับส่งชุดไฟล์, การนำไปใช้, การก๊อปปี้แจกไฟล์ให้สมาชิกในกลุ่ม deepquant, การติดตั้ง ฯ
แต่ละชุดโรบอทมีเซอร์วิสด้าน log agent และ metrics agent เพื่อทำหน้าที่ส่ง log (สถานะการทำงานของโรบอทและสถานะพอร์ตโฟลิโอกับสถานะบัญชี) กับ metrics (สถานะการใช้ทรัพยากรเครื่อง เช่น ซีพียู, หน่วยความจำ, ดิสก์ ฯ) ไปยังระบบ monitoring system ซึ่งรับผิดชอบโดยชุด ELK stack (elasticsearch, logstash, kibana), Prometheus
ข้อมูล log ซึ่งปกติเป็น text เก็บลงในฐานข้อมูล elasticsearch ซึ่งเก่งในด้าน full text search ช่วยให้ค้นหาข้อความ เช่น operation log, error message, json payload เป็นต้น
ข้อมูล metrics ซึ่งเป็นปกติเป็นข้อมูลตัวเลข เก็บลงระบบ Prometheus
ใน Docker ของชุดโรบอท ประกอบด้วยเซอร์วิส web ซึ่งใช้ Flask เป็น web server ขนาดเล็ก เนื่องจากโรบอทไม่ได้ทำงานหนัก ไม่ได้รับโหลดหนักมาก, ใช้ Redis เป็น cache เพื่อใช้พักข้อมูล, ใช้ InfluxDB เป็น time series database เพื่อเก็บข้อมูลราคาและข้อมูลอื่นๆ ที่ชุดโรบอทใช้
ใน Docker ของชุดโรบอท ยังมีเซอร์วิส log agent กับ metrics agent อยู่ด้วย
ใน Docker ของบางชุดโรบอท มีเซอร์วิสระบบ data feed รันอยู่ด้วย เช่น ชุดโรบอทที่เทรด TFEX ผ่าน Settrade Open API, ชุดโรบอทที่เทรด crypto เป็นต้น
*NOTE: architecture นี้ไม่ได้ตั้งใจออกแบบเพื่อจะไปประกวดชิงรางวัลที่ไหน ดังนั้นยังมีอีกหลายจุดมากที่ยังต้องได้รับการปรับปรุง และยังสามารถพัฒนาต่อยอดให้ฉลาดและสมบูรณ์ขึ้นได้อีกมาก มาช่วยๆ กันครับ ^^
Architecture Overview
ใครสนใจด้าน software architecture ไว้จะทำคลิปสอนด้าน algorithmic system architecture นะครับ รวมถึงทำคลิปสอนด้าน data architecture for algorithmic trading system สนุกสนาน เนื้อหาหนักหน่วง ไว้รอเสพกันได้
Like this: Like Loading...