สวัสดีครับ ผมเขียนบทความนี้จากประสบการณ์ตรงที่เคยนั่งงมโค้ดดึงข้อมูล Bybit อยู่ 2 วันเต็ม ๆ เพราะไม่มีคู่มือภาษาไทยแบบ "จับมือทำ" เลย ตอนนั้นผมไม่เคยแตะ API มาก่อน ไม่รู้ว่า API Key คืออะไร ไม่รู้จะเริ่มโค้ดจากบรรทัดไหน จนสุดท้ายต้องร้องไห้แล้วลองผิดลองถูกอีก 1 อาทิตย์กว่าจะได้กราฟที่ backtest ได้จริง บทความนี้จึงถูกเขียนขึ้นมาเพื่อให้คุณไม่ต้องเสียเวลาเท่าผม
Bybit เป็นหนึ่งใน exchange ที่มี API เอกสารครบ และให้ข้อมูล K-line ย้อนหลังได้ฟรีผ่าน endpoint สาธารณะ ซึ่งเพียงพอสำหรับการทำ Quantitative Backtesting (ย้อนทดสอบกลยุทธ์ด้วยข้อมูลในอดีต) ในระดับเริ่มต้นจนถึงระดับกลาง
Bybit API คืออะไร? ทำไมเหมาะกับการ Backtest?
พูดแบบบ้าน ๆ คือ Bybit API คือ "ช่องทางที่เว็บ Bybit เปิดให้เราส่งคำสั่งไปถามข้อมูลได้ด้วยโค้ด" โดยไม่ต้องนั่งคลิกทีละหน้า เช่น ถามว่า "ขอราคา BTCUSDT แบบนาทีต่อนาที ย้อนหลัง 1,000 แท่ง" ก็ได้ข้อมูลกลับมาเป็น JSON นำไปคำนวณต่อได้เลย
ตารางเปรียบเทียบแหล่งข้อมูล K-line สำหรับ Backtest
| แพลตฟอร์ม | แท่งสูงสุด/คำขอ | ข้อมูลย้อนหลัง | Rate Limit | ค่าใช้จ่าย/เดือน | คะแนนชุมชน (GitHub ccxt, Reddit) |
|---|---|---|---|---|---|
| Bybit v5 | 200/ครั้ง | ตั้งแต่ 2018 | 600 req/5s | ฟรี (Public endpoint) | 4.5/5 (r/algotrading) |
| Binance | 1,000/ครั้ง | ตั้งแต่ 2017 | 1,200 req/min | ฟรี | 4.6/5 |
| OKX | 300/ครั้ง | ตั้งแต่ 2018 | 20 req/2s | ฟรี | 4.3/5 |
| CryptoCompare Pro | ไม่จำกัด | ตั้งแต่ 2010 | ตามแพ็กเกจ | ~$79–$799 USD | 4.0/5 |
| CoinGecko Demo | ไม่มี K-line | OHLC รายวัน | 30 req/min | ฟรี (จำกัด) | 4.4/5 |
สรุปสั้น ๆ: ถ้าเพิ่งเริ่มและอยากประหยัดงบ Bybit และ Binance คือตัวเลือกที่ดีที่สุด เพราะฟรีและส่งข้อมูลย้อนหลังได้ละเอียดถึงระดับนาที ต่างจาก CryptoCompare ที่ต้องจ่ายเป็นรายเดือนตั้งแต่ $79 (ประมาณ 2,800 บาท/เดือน) ขึ้นไป ซึ่งต่างกับ Bybit ที่ "0 บาท" สำหรับข้อมูล Public
ขั้นตอนที่ 1: เตรียมเครื่องมือบนคอมพิวเตอร์
คุณไม่ต้องมีคอมเครื่องแรง แค่ติดตั้งสองอย่างนี้ก็พอ:
- Python 3.10 ขึ้นไป (ดาวน์โหลดฟรีจาก python.org)
- Visual Studio Code (โปรแกรมเขียนโค้ดฟรี ดาวน์โหลดจาก code.visualstudio.com)
[ภาพหน้าจอ 1: เปิดเว็บ python.org → คลิกปุ่ม "Download Python 3.x.x" → รันไฟล์ .exe → ติ๊ก "Add Python to PATH" → กด Install Now]
[ภาพหน้าจอ 2: เปิด VS Code → กด Ctrl+Shift+P → พิมพ์ "Python: Create Environment" → เลือก venv → เลือก Python 3.x]
จากนั้นเปิด Terminal ใน VS Code (เมนู Terminal → New Terminal) แล้วพิมพ์:
pip install requests pandas pandas-ta
ทั้งสามคำสั่งนี้คือการติดตั้งเครื่องมือเพื่อ (1) ส่งคำขอผ่านเน็ต, (2) จัดการข้อมูลตาราง, (3) คำนวณ indicator อย่าง MA, RSI
ขั้นตอนที่ 2: สมัคร Bybit และสร้าง API Key
- เข้าเว็บ bybit.com → กดสมัคร/ล็อกอิน
- เมนูด้านบนขวา → รูปโปรไฟล์ → "API Management"
- กด "Create New Key" เลือก "System-generated" → ตั้งชื่อ key (เช่น "backtest")
- ติ๊กเฉพาะ "Read" (ไม่ต้องติ๊ก Trade/Withdraw เพราะเราแค่ดึงข้อมูล)
- กรอกรหัส 2FA → คัดลอก API Key และ Secret เก็บไว้ใน Notepad (ห้ามหลุดเด็ดขาด)
[ภาพหน้าจอ 3: ในหน้า API Management จะเห็นคอลัมน์ "API Key" ยาว ๆ → กดปุ่ม "Copy" ข้าง ๆ]
ถ้าดึงข้อมูล K-line อย่างเดียว จริง ๆ ไม่จำเป็นต้องใช้ Key เลยด้วยซ้ำ เพราะ endpoint ของ K-line เป็นแบบ Public ใช้แค่อินเทอร์เน็ตก็พอ
ขั้นตอนที่ 3: เขียนโค้ดดึงข้อมูล K-line แท่งแรก
สร้างไฟล์ใหม่ชื่อ fetch_bybit.py แล้ววางโค้ดนี้ลงไป:
import requests
import pandas as pd
ดึง K-line BTCUSDT กรอบ 60 นาที ย้อนหลัง 1,000 แท่ง
url = "https://api.bybit.com/v5/market/kline"
params = {
"category": "linear", # linear = USDT perpetual
"symbol": "BTCUSDT",
"interval": "60", # 60 = 1 ชั่วโมง, 1 = 1 นาที, D = รายวัน
"limit": 1000
}
r = requests.get(url, params=params, timeout=10)
data = r.json()
ตรวจสอบสถานะก่อนนำไปใช้
if data["retCode"] != 0:
raise SystemExit(f"Bybit ตอบกลับผิดพลาด: {data['retMsg']}")
rows = data["result"]["list"]
df = pd.DataFrame(rows, columns=[
"timestamp", "open", "high", "low", "close", "volume", "turnover"
])
Bybit คืน timestamp เป็น