สวัสดีครับ ผมเขียนบทความนี้จากประสบการณ์ตรงที่เคยนั่งงมโค้ดดึงข้อมูล 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 v5200/ครั้งตั้งแต่ 2018600 req/5sฟรี (Public endpoint)4.5/5 (r/algotrading)
Binance1,000/ครั้งตั้งแต่ 20171,200 req/minฟรี4.6/5
OKX300/ครั้งตั้งแต่ 201820 req/2sฟรี4.3/5
CryptoCompare Proไม่จำกัดตั้งแต่ 2010ตามแพ็กเกจ~$79–$799 USD4.0/5
CoinGecko Demoไม่มี K-lineOHLC รายวัน30 req/minฟรี (จำกัด)4.4/5

สรุปสั้น ๆ: ถ้าเพิ่งเริ่มและอยากประหยัดงบ Bybit และ Binance คือตัวเลือกที่ดีที่สุด เพราะฟรีและส่งข้อมูลย้อนหลังได้ละเอียดถึงระดับนาที ต่างจาก CryptoCompare ที่ต้องจ่ายเป็นรายเดือนตั้งแต่ $79 (ประมาณ 2,800 บาท/เดือน) ขึ้นไป ซึ่งต่างกับ Bybit ที่ "0 บาท" สำหรับข้อมูล Public

ขั้นตอนที่ 1: เตรียมเครื่องมือบนคอมพิวเตอร์

คุณไม่ต้องมีคอมเครื่องแรง แค่ติดตั้งสองอย่างนี้ก็พอ:

[ภาพหน้าจอ 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

  1. เข้าเว็บ bybit.com → กดสมัคร/ล็อกอิน
  2. เมนูด้านบนขวา → รูปโปรไฟล์ → "API Management"
  3. กด "Create New Key" เลือก "System-generated" → ตั้งชื่อ key (เช่น "backtest")
  4. ติ๊กเฉพาะ "Read" (ไม่ต้องติ๊ก Trade/Withdraw เพราะเราแค่ดึงข้อมูล)
  5. กรอกรหัส 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 เป็น