จากประสบการณ์ตรงของผู้เขียนที่เคยงมงายกับ orderbook ของทั้งสองแพลตฟอร์มอยู่หลายเดือน ผมพบว่าจุดที่ทำให้มือใหม่ติดขัดมากที่สุดไม่ใช่ตัวโค้ด แต่เป็น "โครงสร้างข้อมูล" ที่ต่างกันราวฟ้ากับดิน บทความนี้จะพาเดินทีละขั้น ตั้งแต่เปิดเทอร์มินัลเป็นครั้งแรก ไปจนถึงอ่าน depth ออกมาเป็นตัวเลขราคาและปริมาณที่ใช้งานได้จริง โดยไม่ต้องมีพื้นฐาน API มาก่อนเลย

ทำไมต้องเปรียบเทียบ Hyperliquid L2 กับ Binance USDⓈ-M Depth

ทั้งสองเป็นตลาด Futures ที่มีปริมาณซื้อขายสูงสุดในโลก แต่ใช้ "ภาษา" ในการส่งข้อมูล orderbook คนละแบบ ถ้าเข้าใจโครงสร้างทั้งสอง คุณจะย้ายโค้ดจาก CEX ไป DEX หรือกลับกันได้ภายใน 1 ชั่วโมง ซึ่งสำคัญมากสำหรับคนที่อยากสร้างบอทเทรดหรือแดชบอร์ดวิเคราะห์สภาพคล่อง

Orderbook L2 คืออะไร (อธิบายแบบไม่ง้อศัพท์)

ให้คิดแบบนี้: ตลาดแลกเปลี่ยนคือ "ตลาดนัด" ที่มีคนตะโกนราคาซื้อและราคาขาย Orderbook คือกระดานรวมคำตะโกนทั้งหมด L1 คือเห็นแค่ราคาดีที่สุดด้านละ 1 ราคา ส่วน L2 คือเห็นลึกลงไปหลายระดับ เช่น 20-50 ระดับ เพื่อให้รู้ว่าถ้าซื้อเยอะๆ จะเจอราคาขยับขึ้นไปแค่ไหน (เรียกว่า slippage)

Hyperliquid L2 Snapshot คืออะไร

Hyperliquid เป็นกระดาซื้อขาย Futures แบบ On-chain บน L1 ของตัวเอง ข้อมูล orderbook จะถูกส่งผ่าน WebSocket แบบ Real-time โดยใช้ช่องสัญญาณที่เรียกว่า l2Book ผลลัพธ์ที่ได้จะอยู่ในรูป JSON ที่มีฟิลด์ levels แบ่งเป็น bids (ฝั่งซื้อ) และ asks (ฝั่งขาย) แต่ละฝั่งเป็นอาเรย์ของ tuple [price, size, n_orders]

Binance USDⓈ-M Depth Snapshot คืออะไร

Binance Futures แบบ USDⓈ-M (ใช้ USDT เป็นมาร์จิ้น) ให้บริการข้อมูล Depth ผ่าน REST API แบบดึงเป็นรอบๆ (Snapshot) ที่ endpoint /fapi/v1/depth โครงสร้างจะเป็น JSON ที่มี lastUpdateId, bids, asks ซึ่งแต่ละฝั่งเป็น string ของคู่ "ราคา,ปริมาณ" ไม่ใช่ตัวเลข (ต้องแปลงเอง)

ขั้นตอนที่ 1: เตรียมเครื่องมือก่อนเริ่มเขียนโค้ด

ก่อนเปิดโปรแกรมใดๆ ให้ทำตามนี้ทีละจุด เหมือนเช็กลิสต์ก่อนออกบ้าน

ขั้นตอนที่ 2: ติดตั้งไลบรารีที่จำเป็น (ใช้เวลา 30 วินาที)

พิมพ์คำสั่งนี้ในหน้าต่าง cmd ที่เปิดค้างไว้ รอจนขึ้นข้อความ Successfully installed ทั้งหมด

pip install requests websockets hyperliquid-python-sdk

ขั้นตอนที่ 3: ดึง Depth จาก Binance USDⓈ-M (คัดลอกและรันได้เลย)

เปิด Notepad → วางโค้ดด้านล่าง → บันทึกเป็น binance_depth.py ในโฟลเดอร์ C:\orderbook-lab

import requests, json

url = "https://fapi.binance.com/fapi/v1/depth"
params = {"symbol": "BTCUSDT", "limit": 20}

resp = requests.get(url, params=params, timeout=10)
resp.raise_for_status()
data = resp.json()

print("lastUpdateId:", data["lastUpdateId"])
print("\nฝั่งซื้อ (Bids) - 5 ระดับแรก:")
for price, qty in data["bids"][:5]:
    print(f"  ราคา {float(price):>10,.2f} USDT  | ปริมาณ {float(qty):>8,.4f} BTC")

print("\nฝั่งข