Architecture View: Architecture Overview (รออัพเดต)

ภาพรวมของ 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 สนุกสนาน เนื้อหาหนักหน่วง ไว้รอเสพกันได้ 😊

Leave a Reply

Discover more from

Subscribe now to keep reading and get access to the full archive.

Continue reading