ทำไมเรื่องนี้ถึงสำคัญกับคนทำ backtest?

ผมเคยนั่งทำ backtest กลยุทธ์ grid trading บน BTCUSDT แล้วผลออกมากำไร +18% ต่อเดือน พอไปรันจริงกลับขาดทุน สาเหตุหลักไม่ใช่กลยุทธ์ไม่ดี แต่มาจาก ข้อมูล tick ที่ดึงมาใช้ไม่เหมาะกับงาน วันนั้นผมใช้ raw trades ที่มี noise จาก trade เล็ก ๆ ปนอยู่เต็มไปหมด พอเปลี่ยนมาใช้ aggTrades ผลลัพธ์ก็ใกล้เคียงความจริงมากขึ้นทันที

Binance Futures มี endpoint สองตัวที่ให้ข้อมูล trade ระดับ tick ออกมา คือ aggTrades (/fapi/v1/aggTrades) กับ trades (/fapi/v1/trades) ทั้งสองตัวดูคล้ายกันมาก แต่ field, การ aggregate, น้ำหนัก rate limit และการใช้งานต่างกันพอสมควร ถ้าเลือกผิดตั้งแต่ต้น จะเสียเวลาและเงินในภายหลัง

aggTrades คืออะไร? (อธิบายแบบบ้าน ๆ)

aggTrades ย่อมาจาก Aggregated Trades คือ การรวม trade ย่อยที่มีราคาเดียวกันและเกิดในเสี้ยววินาทีเดียวกัน ให้กลายเป็น 1 แถว เช่น ถ้า market maker ยิงคำสั่งซื้อ 12 ครั้งที่ราคา 65,000.50 ภายใน 5 มิลลิวินาที Binance จะรวมเป็น aggTrade แถวเดียวที่มี quantity รวม

Field หลักที่ได้จาก aggTrades มี 7 ตัว:

raw trades (endpoint /trades) คืออะไร?

raw trades หรือที่บางทีเรียกว่า "trades" ตรง ๆ คือ trade ดิบทุกคำสั่งที่เกิดขึ้นจริง ไม่มีการรวม เหมาะสำหรับงานที่ต้องการความละเอียดระดับ fill-by-fill เช่น ตรวจสอบ manipulation หรือทำ microstructure research

Field หลักที่ได้:

ตารางเปรียบเทียบ field และพฤติกรรม

หัวข้อaggTradesraw trades (/trades)
Endpoint/fapi/v1/aggTrades/fapi/v1/trades
การรวม tradeรวม trade ที่ราคา/เวลาเดียวกันไม่รวม 1:1
จำนวน field7 ฟิลด์7 ฟิลด์ (มี quoteQty)
Rate limit weight20 ต่อ request1 ต่อ request (ถี่กว่า 20 เท่าในโควตาเดียวกัน)
Limit สูงสุด/ครั้ง1,000 แถว1,000 แถว
ประวัติย้อนหลังใช้ fromId ต่อเนื่องได้ดีใช้ fromId ได้แต่ถี่กว่า
เหมาะกับงานBacktest, สร้าง candle, footprintMicrostructure, forensic, slippage test
ขนาดไฟล์ 1 วัน BTCUSDT~120 MB~450-900 MB

ภาพหน้าจอแนะนำ: ถ้าเปิด Binance Spot/Futures Testnet ให้ไปที่เมนู "API Documentation" แล้วกดที่ "Market Data" จะเห็นทั้งสอง endpoint พร้อม weight และ example response ฝั่งขวา

ขั้นตอนเรียก API ทั้งสองแบบ (ทำตามได้เลย)

ขั้นแรกติดตั้งไลบรารีที่จำเป็น เปิด terminal แล้วพิมพ์:

pip install requests pandas

แล้วสร้างไฟล์ชื่อ fetch_trades.py แล้ววางโค้ดต่อไปนี้:

import requests
import pandas as pd

========== ดึง aggTrades ==========

url_agg = "https://fapi.binance.com/fapi/v1/aggTrades" params_agg = { "symbol": "BTCUSDT", "limit": 1000 # สูงสุด 1000 ต่อ request } resp = requests.get(url_agg, params=params_agg, timeout=10) resp.raise_for_status() agg = pd.DataFrame(resp.json())

แปลง timestamp เป็นเวลาในโซน Asia/Bangkok

agg["datetime"] = ( pd.to_datetime(agg["T"], unit="ms", utc=True) .dt.tz_convert("Asia/Bangkok") ) print("=== aggTrades ===") print("จำนวน tick:", len(agg)) print("คอลัมน์:", list(agg.columns)) print(agg[["a", "p", "q", "T", "datetime", "m"]].head())

รันด้วย python fetch_trades.py จะเห็น output ประมาณ 1,000 แถว ใช้เวลา ~120 ms ต่อ request (ตามที่ Binance ระบุไว้ว่า weight = 20)

import requests
import pandas as pd

========== ดึง raw trades ==========

url_raw = "https://fapi.binance.com/fapi/v1/trades" params_raw = { "symbol": "BTCUSDT", "limit": 1000 } resp = requests.get(url_raw, params=params_raw, timeout=10) resp.raise_for_status() raw = pd.DataFrame(resp.json()) raw["datetime"] = ( pd.to_datetime(raw["time"], unit="ms", utc=True) .dt.tz_convert("Asia/Bangkok") ) print("=== raw trades ===") print("จำนวน trade ดิบ:", len(raw)) print("คอลัมน์:", list(raw.columns)) print(raw[["id", "price", "qty", "quoteQty", "time", "datetime"]].head())

เทียบจำนวนแถวในช่วงเวลาเดียวกัน จะเห็นว่า raw trades มีจำนวนมากกว่า aggTrades ประมาณ 4-8 เท่า (ขึ้นกับความผันผวน)

ใช้ AI ช่วยวิเคราะห์ข้อมูล tick แบบอัตโนมัติ

พอดึง tick มาเป็นแสนแถวแล้ว มือใหม่หลายคนจะตาว่อน ๆ ว่าจะ filter ยังไง โชคดีว่าเรามี AI ให้ใช้ สมัคร HolySheep แล้วส่งตัวอย่าง tick ให้โมเดลช่วยสรุป pattern ได้ทันที:

import requests
import json

เตรียม tick ตัวอย่าง 50 แถวแรกส่งให้ AI

sample = agg.head(50).to_dict(orient="records") url = "https://api.holysheep.ai/v1/chat/completions" headers = { "Authorization": "Bearer YOUR_HOLYSHEEP_API_KEY", "Content-Type": "application/json" } payload = { "model": "deepseek-v3.2", # $0.42/MTok ประหยัดกว่า GPT-4.1 ถึง 19 เท่า "messages": [ {"role": "system", "content": "คุณคือนักวิเคราะห์ quantitative trading"}, {"role": "user", "content": ( "วิเคราะห์ข้อมูล aggTrades ต่อไปนี้ " "แล้วบอกว่าช่วงนี้ฝั่งซื้อหรือฝั่งขายกดดันตลาดมากกว่า: " f"{json.dumps(sample, default=str)}" )} ], "max_tokens": 400, "temperature": 0.3 } resp = requests.post(url, headers=headers, json=payload, timeout=30) print(resp.json()["choices"][0]["message"]["content"])

ลองรันดูจะได้คำตอบเป็นภาษาไทยแบบที่อ่านเข้าใจง่าย เช่น "ในช่วง 50 แถวแรก มี sell aggressor 62% ของปริมาณ แสดงถึงแรงกดดันฝั่งขาย" เป็นต้น

เหมาะกับใคร / ไม่เหมาะกับใคร

เหมาะกับ

ไม่เหมาะกับ

ราคาและ ROI ของการใช้ AI ช่วยวิเคราะห์

โมเดลราคา 2026 (USD/MTok)ค่าใช้จ่ายต่อคำขอ 1,000 tick*ความเร็วเฉลี่ย
DeepSeek V3.2$0.42~$0.0002542 ms
Gemini 2.5 Flash$2.50~$0.001538 ms
GPT-4.1$8.00~$0.0048165 ms
Claude Sonnet 4.5$15.00~$0.0090210 ms

*คำนวณจาก prompt 2,000 tokens + completion 400 tokens

ถ้าเปลี่ยนจาก GPT-4.1 ($8/MTok) มาใช้ DeepSeek V3.2 ($0.42/MTok) ประหยัดได้ประมาณ 94.75% และความเร็วเพิ่มขึ้นเกือบ 4 เท่า ส่วน HolySheep คิดในอัตรา 1¥ = $1 (ส่วนใหญ่ราคาถูกกว่าคู่แข่งที่คิด ¥7-¥8/$1 ถึง 85%+) จ่ายผ่าน WeChat หรือ Alipay ได้ และทดสอบ latency จริงได้ <50 ms