เหตุผลที่เลือกใช้ InfluxDB เก็บราคาและ time series data

เราใช้ influxdb (https://www.influxdata.com/products/influxdb-overview/) ในระบบเรา (รันอยู่ใน docker) ในการเก็บข้อมูลประเภท time series data เช่น ราคา, trade action, trade statistics, trade position ฯ

เครดิตรูปภาพจาก https://medium.com/analytics-vidhya/watch-your-stock-shares-with-grafana-and-influxdb-4df7a99c6d64

ส่วนเหตุผล (design rationale) ที่ผมเลือกใช้ InfluxDB คือ

  1. เป็น time series database อันดับต้นๆ เลย
  2. doc ดีมาก มีตัวอย่างเยอะ มี REST API
  3. คนใช้เยอะ benchmark ดี
  4. ผมถามเพื่อนๆ น้องๆ ที่รู้จัก ที่เค้าใช้ในสเกลใหญ่ๆ เค้าแนะนำ influxdb
  5. มันขึ้นชื่อเรื่องเร็วมาก
  6. คำสั่งเป็น SQL คล้าย SQL ใน RDBMS ทำให้เรียนรู้ไม่ยาก
  7. รองรับฟังก์ชั่น, การคำนวณ และการทำงานแบบ time series เช่น การ aggregate ตามเวลา, insert or update โดยเช็กจาก time ซึ่งอันนี้สะดวกมาก เหมาะกับงานเราสุดๆ เวลามีราคาใหม่ฟีดเข้ามา แต่แท่งยังไม่จบก็ update ทับ แต่ถ้าขึ้นแท่งราคาใหม่ก็ insert
  8. รูปแบบการตั้ง index (tag) ก็เหมาะกับงานเราดี
  9. มี official python library และอัพเดตบ่อยใช้ได้

ประยุกต์ Software Product Line ใช้ในระบบ Algo Trading


Software Product Line เน้นเรื่องการสร้าง reusable asset เพื่อจะได้ประหยัดเวลา ค่าใช้จ่าย และหยาดเหงื่อ ในการพัฒนาระบบ (โปรดักต์) ใหม่ๆ

ระบบ algorithmic trading ของเรา ผมจึงผสาน software product line architecture เข้าไปด้วย…. เพราะเป้าหมายส่วนตัวของผมเอง ผมจะสร้างโรบอทหลายสิบ หรือกว่าร้อยตัว จึงต้องเน้นคุมโครงสร้างโรบอทให้มีเอกภาพ เพื่อจะให้มี resilient สูง (ยืดหยุ่นสูง) จะได้ปรับปรุงและสร้างโรบอทเพิ่มได้ง่ายในอนาคต

Investor Object Synchronization in Settrade Open API & SDK

เซสชั่นใน Settrade Open API & SDK เป็นแบบ single session ผมทดลองเขียนโค้ดแบบ synchronized object รับมือกับปัญหาและข้อจำกัดตรงนี้ได้ละครับ 😊

PROBLEM CONTEXT:

เนื่องจากแพลตฟอร์ม streaming pro ทำงานแบบ single session เช่น เราล็อกอินผ่านมือ และล็อกอินผ่านมือถืออีกเครื่องด้วยบัญชีเดียวกัน มันจะเตะ session ของ streaming pro ในมือมือเครื่องแรกทิ้ง ทำให้ใช้งานต่อไม่ได้ ถ้าจะใช้ต่อต้องล็อกอินใหม่ แต่มันก็จะเตะ session ในมือถือเครื่องที่สองทิ้ง