ผมเพิ่งจบโปรเจ็กต์ที่ปวดหัวที่สุดในรอบหลายเดือน — การพัฒนากลยุทธ์ HFT (High-Frequency Trading) บนคริปโตให้ลูกค้ากองทุนฮ่องกงที่ต้องการ backtest ย้อนหลัง 3 ปี บนกราฟ 1 นาทีของ 50 คู่เหรียญ เริ่มแรกผมใช้ Binance เพราะคุ้นเคย แต่พอดึงข้อมูล 1.2 ล้านแท่ง ระบบค้างไป 40 นาที ผมเลยตัดสินใจทดสอบ API ทั้งสามเจ้าแบบจริงจัง เพื่อหาคำตอบว่า REST API ตัวไหนเหมาะกับการดึง OHLCV จำนวนมากที่สุด
1. ทำไม Latency ของ OHLCV API ถึงสำคัญกับ HFT Backtest
หลายคนเข้าใจผิดว่า HFT ใช้แค่ WebSocket — จริง ๆ แล้ว backtesting layer ต้องอาศัย REST API ในการดึง historical candles ย้อนหลังหลายล้านแท่ง ถ้า endpoint หนึ่งใช้เวลา 200ms หมายความว่าการดึง 50,000 แท่ง (แบบ batch 1000) จะใช้เวลานานขึ้น 10 เท่าเมื่อเทียบกับ endpoint ที่ใช้ 20ms ผมเคยเจอเคสที่ทีม data engineer เลือก API ผิด ทำให้ backtest ที่ควรใช้เวลา 2 ชั่วโมง กลายเป็น 18 ชั่วโมง และ timeout ก่อนได้ผลลัพธ์
จุดสำคัญที่ผมวัด: p50 latency, p95 latency, rate limit, ขนาด batch สูงสุด, ความสมบูรณ์ของข้อมูล (missing candles)
2. เปรียบเทียบ Latency จริงที่วัดได้ (Bangkok → Singapore Edge)
ผมทดสอบจาก VPS Singapore (DigitalOcean SGP1) ดึง candles 1m ของ BTCUSDT ย้อนหลัง 30 วัน จำนวน 43,200 แท่ง ทำซ้ำ 50 รอบ ผลลัพธ์เฉลี่ย:
| เกณฑ์ | Binance | Bybit | OKX |
|---|---|---|---|
| Endpoint | /api/v3/klines | /v5/market/kline | /api/v5/market/candles |
| p50 latency | 87 ms | 112 ms | 146 ms |
| p95 latency |