สวัสดีครับ วันนี้ผมจะพาทุกคนมาเรียนรู้เรื่องที่ฟังดูยากแต่จริงๆ แล้วเข้าใจง่ายมากครับ — "การเอาข้อมูล Order Book (ตารางซื้อขาย) ในอดีต มาทดสอบกลยุทธ์ทำกำไร" โดยใช้คู่ BTC/USDT แบบสัญญาถาวร (Perpetual) ซึ่งเป็นที่นิยมมากที่สุดในตลาดคริปโต
ถ้าคุณไม่เคยเขียนโปรแกรมต่อกับ API มาก่อนเลย ไม่ต้องกังวลครับ ผมจะอธิบายทุกขั้นตอนแบบช้าๆ ค่อยๆ เหมือนจับมือทำ และจะใช้ HolySheep AI (สมัครที่นี่) เป็นผู้ช่วยอัจฉริยะคอยช่วยเขียนโค้ด วิเคราะห์ผล และปรับแต่งกลยุทธ์ให้ครับ
สิ่งที่คุณจะได้เรียนรู้วันนี้
- Order Book คืออะไร ดูยังไง
- กลยุทธ์ Market Making ทำเงินจากส่วนต่างราคาซื้อ-ขาย
- ดึงข้อมูล Order Book ย้อนหลังด้วย Python
- เขียนโค้ดทดสอบย้อนหลัง (Backtest) แบบง่ายๆ
- ใช้ AI ช่วยวิเคราะห์และปรับกลยุทธ์
- แก้ปัญหา Error ที่มือใหม่เจอบ่อย
เตรียมเครื่องให้พร้อมก่อนเริ่ม (ใช้เวลา 5 นาที)
ก่อนอื่นเลย เราต้องเตรียมเครื่องคอมพิวเตอร์ให้พร้อมครับ ทำตามนี้ทีละขั้น:
📸 ภาพประกอบขั้นตอน: เปิดเว็บ python.org → คลิกปุ่ม "Downloads" สีเหลือง → เลือกเวอร์ชัน 3.11 ขึ้นไป → ดับเบิลคลิกไฟล์ .exe → ติ๊ก "Add Python to PATH" ให้ติ๊กถูกด้วยนะครับสำคัญมาก
- ติดตั้ง Python: ไปที่
python.orgดาวน์โหลดเวอร์ชันล่าสุด (ตอนนี้คือ 3.12) ติดตั้งลงเครื่อง - ติดตั้งโปรแกรมแก้โค้ด: แนะนำ VS Code (ดาวน์โหลดฟรีที่ code.visualstudio.com) เพราะใช้ง่าย มีสีสันสวยงาม
- เปิดโปรแกรม Terminal: กดปุ่ม Windows + R พิมพ์
cmdแล้วกด Enter - ติดตั้งไลบรารีที่จำเป็น: พิมพ์คำสั่งนี้ลงไป
pip install ccxt pandas numpy requests openai
คำอธิบายแต่ละไลบรารี (ไม่ต้องจำแค่อ่านให้เข้าใจ):
ccxt= ตัวดึงข้อมูลตลาดคริปโตจากหลายเว็บpandas= ตัวจัดการตารางข้อมูล เหมือน Excel ใน Pythonnumpy= ตัวคำนวณตัวเลขเร็วๆrequests= ตัวส่งข้อความไปหาเว็บอื่นopenai= ตัวคุยกับ AI (เราจะใช้คุยกับ HolySheep AI)
Order Book คืออะไร? (อธิบายแบบเข้าใจง่าย)
Order Book คือ "ตารางที่บอกว่ามีคนต้องการซื้อและขาย BTC ในราคาเท่าไหร่บ้าง" ครับ
ลองนึกภาพตลาดสดปลาครับ ฝั่งซ้ายคือพ่อค้าที่ตะโกน "รับซื้อปลากิโลละ 100 บาท" ฝั่งขวาคือชาวบ้านที่ตะโกน "ขายปลากิโลละ 110 บาท" ตาราง Order Book ก็คือการรวบรวมเสียงตะโกนทั้งหมดมาเรียงเป็นตารางนั่นแหละครับ
- Bid (ฝั่งซื้อ) = คนที่อยากซื้อ — อยากได้ของถูก
- Ask (ฝั่งขาย) = คนที่อยากขาย — อยากได้เงินเยอะ
- Spread = ส่วนต่างระหว่าง Ask กับ Bid (กำไรของคนทำ Market Maker)
📸 ภาพประกอบ: หน้าจอ Order Book จะมีลักษณะเป็นตาราง 2 ฝั่ง ฝั่งซ้ายสีเขียวคือ Bid ฝั่งขวาสีแดงคือ Ask ตรงกลางคือราคาล่าสุด
กลยุทธ์ Market Making คืออะไร?
Market Maker คือ "คนที่วางคำสั่งซื้อและขายรอไว้ก่อน" เพื่อหวังว่าจะมีคนมาตอบคำสั่งเรา ถ้าเราวางขายที่ 110 บาท และวางซื้อที่ 100 บาท พอมีคนมาซื้อเราที่ 110 เราก็เอากำไร 10 บาทไปวางซื้อใหม่ที่ 100 เพื่อรอขายรอบต่อไป
ฟังดูง่ายใช่ไหมครับ แต่จริงๆ มีความเสี่ยงเยอะมาก ถ้าราคาวิ่งแรงไปทางเดียว เราอาจขาดทุนได้ เลยต้องมีการ "Backtest ย้อนหลัง" คือเอาข้อมูลเก่ามาเล่นซ้ำ เพื่อดูว่ากลยุทธ์เราจะกำไรหรือขาดทุนครับ
ขั้นที่ 1: สมัคร HolySheep AI และเตรียม API Key
ก่อนเริ่มเขียนโค้ด ผมแนะนำให้สมัคร HolySheep AI ก่อนครับ เพราะเราจะใช้ AI เป็นผู้ช่วยเขียนโค้ดและวิเคราะห์ผลลัพธ์ ซึ่ง HolySheep มีจุดเด่นคือ ราคาถูกมาก (อัตรา 1 เหรียญดอลลาร์ = 1 หยวน ประหยัดกว่าการใช้ OpenAI ตรงๆ ถึง 85%+) จ่ายเงินผ่าน WeChat/Alipay ได้ ความหน่วงต่ำกว่า 50ms และมีเครดิตฟรีให้ทดลองใช้เมื่อลงทะเบียน
📸 ภาพประกอบ: เปิดเว็บ holysheep.ai → คลิกปุ่ม "สมัครสมาชิก" → กรอกอีเมล → ยืนยันอีเมล → เข้าหน้า Dashboard → คลิก "API Keys" → กด "สร้าง Key ใหม่" → ก๊อปปี้ Key ยาวๆ เก็บไว้
พอได้ Key แล้ว ให้เปิด VS Code สร้างไฟล์ใหม่ชื่อ .env (ต้องมีจุดนำหน้า) แล้วพิมพ์:
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
⚠️ สำคัญมาก: ห้ามเอา Key นี้ไปโพสต์ที่สาธารณะเด็ดขาดนะครับ เดี๋ยวคนอื่นเอาไปใช้ฟรี
ขั้นที่ 2: เขียนโค้ดดึงข้อมูล Order Book ย้อนหลัง
เราจะใช้ไลบรารี ccxt ดึงข้อมูลครับ แต่จริงๆ แล้ว Exchange ส่วนใหญ่ให้ดึง Order Book ย้อนหลังได้จำกัด (Binance ให้ดึงย้อนหลังได้แค่ 1000 ออร์เดอร์ล่าสุด) สำหรับข้อมูลเชิงลึกแนะนำใช้บริการของ Kaiko หรือ Tardis แต่วันนี้เราจะใช้วิธีง่ายๆ ดึงแบบ Real-time แล้วเก็บสะสมเองครับ
📸 ภาพประกอบ: สร้างไฟล์ชื่อ backtest.py ในโฟลเดอร์โปรเจกต์ → เปิดไฟล์ด้วย VS Code → เริ่มพิมพ์โค้ด
import ccxt
import pandas as pd
import time
from datetime import datetime
เชื่อมต่อ Binance (ตลาดใหญ่ที่สุดในโลก)
exchange = ccxt.binance({
'enableRateLimit': True, # ป้องกันโดนบล็อก IP
'options': {'defaultType': 'future'} # เลือกตลาด Futures
})
ดึง Order Book BTC/USDT ลึก 20 ระดับ
def fetch_orderbook_snapshot(symbol='BTC/USDT:USDT', limit=20):
try:
orderbook = exchange.fetch_order_book(symbol, limit=limit)
# แปลงเป็น DataFrame (เหมือนตาราง Excel)
bids = pd.DataFrame(orderbook['bids'], columns=['price', 'amount'])
asks = pd.DataFrame(orderbook['asks'], columns=['price', 'amount'])
bids['side'] = 'bid' # ฝั่งซื้อ
asks['side'] = 'ask' # ฝั่งขาย
result = pd.concat([bids, asks], ignore_index=True)
result['timestamp'] = orderbook['timestamp']
result['symbol'] = symbol
return result
except Exception as e:
print(f"เกิดข้อผิดพลาด: {e}")
return None
ทดลองดึงข้อมูลครั้งเดียวก่อน
snapshot = fetch_orderbook_snapshot()
if snapshot is not None:
print(f"ดึงข้อมูลสำเร็จ: {datetime.now()}")
print(f"จำนวนแถวทั้งหมด: {len(snapshot)}")
print(snapshot.head(10)) # แสดง 10 แถวแรก
# คำนวณ Spread (ส่วนต่าง)
best_bid = snapshot[snapshot['side']=='bid']['price'].max()
best_ask = snapshot[snapshot['side']=='ask']['price'].min()
spread = best_ask - best_bid
spread_pct = (spread / best_bid) * 100
print(f"\nราคาซื้อสูงสุด: {best_bid:.2f} USDT")
print(f"ราคาขายต่ำสุด: {best_ask:.2f} USDT")
print(f"ส่วนต่าง (Spread): {spread:.2f} USDT ({spread_pct:.4f}%)")
อธิบายโค้ดทีละบรรทัด:
ccxt.binance(...)= สร้างตัวเชื่อมต่อกับ Binancefetch_order_book()= คำสั่งดึง Order Bookpd.DataFrame(...)= แปลงข้อมูลเป็นตารางbids['side']='bid'= ติดป้ายว่าเป็นฝั่งซื้อspread_pct= ค่าส่วนต่างเป็นเปอร์เซ็นต์ ใช้ดูว่าตลาดมีสภาพคล่องแค่ไหน
ขั้นที่ 3: เขียนกลยุทธ์ Market Making แบบง่าย
กลยุทธ์ที่ผมจะสอนวันนี้เรียกว่า "Simple Spread Capture" ครับ หลักการคือ:
- ดูราคากลางตลาด (Mid Price)
- วางคำสั่งซื้อต่ำกว่าราคากลาง 0.01%
- วางคำสั่งขายสูงกว่าราคากลาง 0.01%
- ถ้ามีคนมาซื้อเรา เราจะได้กำไรจากส่วนต่าง
- เก็บสถิติว่าได้กำไรเท่าไหร่ ขาดทุนเท่าไหร่
import numpy as np
class SimpleMarketMaker:
def __init__(self, spread_pct=0.01, order_size=0.001):
"""
spread_pct = เปอร์เซ็นต์ส่วนต่างที่เราต้องการ (0.01 = 0.01%)
order_size = ขนาดออร์เดอร์ (0.001 BTC ต่อออร์เดอร์)
"""
self.spread_pct = spread_pct
self.order_size = order_size
self.inventory = 0.0 # จำนวน BTC ที่ถืออยู่
self.cash = 10000.0 # เงินสดเริ่มต้น (USDT)
self.trades = [] # ประวัติการเทรด
def calculate_quotes(self, mid_price):
"""คำนวณราคาที่จะวางซื้อและขาย"""
bid_price = mid_price * (1 - self.spread_pct / 100)
ask_price = mid_price * (1 + self.spread_pct / 100)
return round(bid_price, 2), round(ask_price, 2)
def on_orderbook_update(self, orderbook_data):
"""ทำงานเมื่อมีข้อมูล Order Book ใหม่"""
# หา Mid Price (ราคากลาง)
best_bid = orderbook_data[orderbook_data['side']=='bid']['price'].max()
best_ask = orderbook_data[orderbook_data['side']=='ask']['price'].min()
mid_price = (best_bid + best_ask) / 2
# คำนวณราคาที่จะเสนอ
my_bid, my_ask = self.calculate_quotes(mid_price)
# จำลองว่ามีคนมาเทรดกับเรา
# ถ้าเราเสนอซื้อสูงกว่าราคาซื้อสูงสุดในตลาด = มีคนมาขายให้เรา
if my_bid >= best_bid:
self.inventory += self.order_size
self.cash -= my_bid * self.order_size
self.trades.append({'side':'buy','price':my_bid,'qty':self.order_size})
# ถ้าเราเสนอขายต่ำกว่าราคาขายต่ำสุดในตลาด = มีคนมาซื้อจากเรา
if my_ask <= best_ask:
self.inventory -= self.order_size
self.cash += my_ask * self.order_size
self.trades.append({'side':'sell','price':my_ask,'qty':self.order_size})
def get_pnl(self, current_price):
"""คำนวณกำไรขาดทุน"""
position_value = self.inventory * current_price
total_value = self.cash + position_value
pnl = total_value - 10000.0 # เทียบกับเงินเริ่มต้น
return pnl, total_value
ทดลองรัน
mm = SimpleMarketMaker(spread_pct=0.01, order_size=0.001)
print(f"เริ่มต้น: เงินสด {mm.cash} USDT, BTC {mm.inventory}")
print(f"คำนวณราคา: Bid={mm.calculate_quotes(50000)[0]}, Ask={mm.calculate_quotes(50000)[1]}")
ขั้นที่ 4: ใช้ HolySheep AI ช่วยวิเคราะห์ผลลัพธ์
ตรงนี้คือจุดที่เท่ที่สุดครับ หลังจากรัน Backtest เสร็จ เราจะให้ AI ช่วยวิเคราะห์ว่ากลยุทธ์เราเป็นยังไง แล้วแนะนำวิธีปรับปรุง ซึ่งการใช้ HolySheep AI ผ่าน base_url https://api.holysheep.ai/v1 จะช่วยประหยัดเงินได้เยอะมากครับ ลองดูตารางเปรียบเทียบด้านล่างนี้
| โมเดล | ราคา (USD/MTok) 2026 | ราคา (¥/MTok) | ความเร็ว (Latency) | เหมาะกับงาน |
|---|---|---|---|---|
| GPT-4.1 (ผ่าน HolySheep) | $8.00 | ¥8.00 | <50ms | วิเคราะห์ซับซ้อน, คิดลึก |
| Claude Sonnet 4.5 (ผ่าน HolySheep) | $15.00 | ¥15.00 | <50ms | เขียนโค้ดยาว, อธิบายละเอียด |
| Gemini 2.5 Flash (ผ่าน HolySheep) | $2.50 | ¥2.50 | <50ms | งานเร็ว, ประหยัด |
| DeepSeek V3.2 (ผ่าน HolySheep) | $0.42 | ¥0.42 | <50ms | งานทั่วไป, ถูกสุด |
| GPT-4.1 (ตรงจาก OpenAI) | $8.00 | ~¥58 | 100-200ms | เหมือนกัน แต่แพงกว่า 7 เท่า |
| Claude Sonnet 4.5 (ตรงจาก Anthropic) | $15.00 | ~¥108 | 100-200ms | เหมือนกัน แต่แพงกว่า 7 เท่า |
สังเกตไหมครับ: ถ้าใช้ Claude Sonnet 4.5 ผ่าน HolySheep จ่าย