ทำไมต้องดึงข้อมูลประวัติคำสั่งซื้อขายจาก Binance
หากคุณเป็นนักเทรดคริปโตที่ใช้ Binance อยู่แล้ว คุณอาจต้องการวิเคราะห์ผลการซื้อขายย้อนหลัง ไม่ว่าจะเพื่อดูว่าช่วงไหนทำกำไรได้ดี หรือเพื่อนำข้อมูลไปใช้กับระบบเทรดอัตโนมัติ การดึงข้อมูลประวัติคำสั่งซื้อขาย (Historical Orders) ผ่าน API คือวิธีที่สะดวกและรวดเร็วที่สุด แทนที่จะต้องมานั่งคัดลอกข้อมูลจากหน้าเว็บทีละออร์เดอร์
ในบทความนี้ ผมจะพาคุณตั้งค่า API กับ Binance ตั้งแต่ขั้นตอนแรกจนสามารถดึงข้อมูลประวัติคำสั่งซื้อขายได้จริง โดยไม่ต้องมีความรู้เรื่องการเขียนโปรแกรมมาก่อนเลย
ขั้นตอนที่ 1: สร้าง API Key บน Binance
ก่อนอื่นเราต้องสร้างกุญแจ API บน Binance กันก่อน ซึ่งก็เหมือนกับการสร้างรหัสผ่านพิเศษที่อนุญาตให้โปรแกรมเข้าถึงข้อมูลบัญชีของเราได้
วิธีสร้าง API Key
- เข้าสู่ระบบบัญชี Binance ที่ www.binance.com
- คลิกที่ไอคอนโปรไฟล์ของคุณตรงมุมขวาบน แล้วเลือก API Management
- ตั้งชื่อสำหรับ API ของคุณ เช่น "MyTradingBot" แล้วกด Create
- ระบบจะแสดง API Key และ Secret Key คุณต้องคัดลอกเก็บไว้ทันที เพราะ Secret Key จะแสดงเพียงครั้งเดียว
⚠️ สำคัญมาก: อย่าแชร์ API Key และ Secret Key ให้ใครเด็ดขาด เพราะใครก็ตามที่มีข้อมูลนี้จะสามารถเข้าถึงบัญชีของคุณได้
ตั้งค่าสิทธิ์ของ API
หลังจากสร้าง API แล้ว คุณต้องตั้งค่าสิทธิ์ให้เหมาะกับการใช้งาน โดยไปที่หน้าจัดการ API แล้วเปิดสิทธิ์ดังนี้
- เปิด Enable Spot & Margin Trading ถ้าต้องการดูประวัติการเทรด
- เปิด Enable Reading เพื่อให้อ่านข้อมูลได้
- ปิด Enable Withdrawals เพื่อความปลอดภัย
ขั้นตอนที่ 2: ติดตั้งโปรแกรมสำหรับเรียกใช้ API
ในการใช้งาน API เราต้องมีสคริปต์ที่ทำหน้าที่ขอข้อมูลจาก Binance แล้วส่งให้เรา ผมจะใช้ Python เพราะเป็นภาษาที่เข้าใจง่ายและได้รับความนิยมมากที่สุดในการทำงานกับ API
ติดตั้ง Python และไลบรารีที่จำเป็น
# เปิด Command Prompt หรือ Terminal แล้วพิมพ์คำสั่งนี้
pip install python-requests
# หลังติดตั้ง requests เสร็จ ให้สร้างไฟล์ใหม่ชื่อ get_orders.py
แล้วใส่โค้ดด้านล่างนี้ลงไป
import requests
import time
import hashlib
import hmac
ข้อมูลที่คุณได้จาก Binance
API_KEY = "YOUR_BINANCE_API_KEY"
SECRET_KEY = "YOUR_BINANCE_SECRET_KEY"
BASE_URL = "https://api.binance.com"
def get_historical_orders(symbol="BTCUSDT", limit=100):
"""ดึงข้อมูลประวัติคำสั่งซื้อขาย"""
endpoint = "/api/v3/allOrders"
params = {
"symbol": symbol,
"limit": limit,
"timestamp": int(time.time() * 1000)
}
# สร้างลายเซ็นดิจิทัล
query_string = "&".join([f"{k}={v}" for k, v in params.items()])
signature = hmac.new(
SECRET_KEY.encode("utf-8"),
query_string.encode("utf-8"),
hashlib.sha256
).hexdigest()
# ส่งคำขอไปยัง Binance
headers = {"X-MBX-APIKEY": API_KEY}
url = BASE_URL + endpoint + "?" + query_string + "&signature=" + signature
response = requests.get(url, headers=headers)
if response.status_code == 200:
orders = response.json()
print(f"พบ {len(orders)} รายการ")
for order in orders[:5]: # แสดง 5 รายการแรก
print(f"คู่เทรด: {order['symbol']} | ราคา: {order['price']} | จำนวน: {order['executedQty']}")
return orders
else:
print(f"เกิดข้อผิดพลาด: {response.status_code}")
print(response.text)
return None
ทดสอบเรียกใช้
if __name__ == "__main__":
get_historical_orders("BTCUSDT", 50)
ขั้นตอนที่ 3: รันสคริปต์และตรวจสอบผลลัพธ์
หลังจากเตรียมโค้ดเรียบร้อยแล้ว ถึงเวลาทดสอบว่าทุกอย่างทำงานได้หรือไม่
วิธีรันสคริปต์
- เปิด Command Prompt หรือ Terminal
- ไปยังโฟลเดอร์ที่เก็บไฟล์ get_orders.py โดยใช้คำสั่ง cd
- พิมพ์คำสั่ง
python get_orders.py - รอผลลัพธ์ปรากฏบนหน้าจอ
ผลลัพธ์ที่คาดหวัง: คุณจะเห็นรายการคำสั่งซื้อขาย 5 รายการล่าสุด แสดงข้อมูลคู่เทรด ราคา และจำนวนที่ทำธุรกรรมแต่ละครั้ง
ขั้นตอนที่ 4: ปรับแต่งการดึงข้อมูลตามต้องการ
หลังจากรันสคริปต์ได้แล้ว คุณสามารถปรับแต่งการทำงานได้หลายอย่าง
ดึงข้อมูลหลายคู่เทรด
# เพิ่มฟังก์ชันนี้ลงในไฟล์เดิม
def get_all_orders_multiple_symbols(symbols=["BTCUSDT", "ETHUSDT", "BNBUSDT"]):
"""ดึงข้อมูลจากหลายคู่เทรดพร้อมกัน"""
all_orders = {}
for symbol in symbols:
print(f"\nกำลังดึงข้อมูล {symbol}...")
orders = get_historical_orders(symbol, limit=100)
all_orders[symbol] = orders
time.sleep(0.5) # รอครู่นึงเพื่อไม่ให้โดนจำกัดอัตรา
# สรุปผล
print("\n" + "="*50)
print("สรุปผลการดึงข้อมูล")
print("="*50)
for symbol, orders in all_orders.items():
if orders:
print(f"{symbol}: {len(orders)} รายการ")
return all_orders
รันฟังก์ชันนี้แทน
if __name__ == "__main__":
get_all_orders_multiple_symbols(["BTCUSDT", "ETHUSDT", "BNBUSDT"])
ส่งออกเป็นไฟล์ CSV
import csv
def export_orders_to_csv(orders, filename="orders.csv"):
"""ส่งออกข้อมูลเป็นไฟล์ CSV"""
if not orders:
print("ไม่มีข้อมูลที่จะส่งออก")
return
# กำหนดชื่อคอลัมน์
fieldnames = ["symbol", "orderId", "price", "origQty", "executedQty", "status", "time"]
# เขียนไฟล์
with open(filename, mode='w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
for order in orders:
row = {k: order.get(k, '') for k in fieldnames}
writer.writerow(row)
print(f"ส่งออกไฟล์สำเร็จ: {filename}")
print(f"มีทั้งหมด {len(orders)} รายการ")
เหมาะกับใคร / ไม่เหมาะกับใคร
| เหมาะกับใคร | ไม่เหมาะกับใคร |
|---|---|
| นักเทรดที่ต้องการวิเคราะห์ผลการเทรดย้อนหลัง | ผู้ที่ไม่เคยใช้งาน Binance เลย |
| นักพัฒนาระบบเทรดอัตโนมัติ | ผู้ที่ไม่สะดวกติดตั้ง Python |
| ผู้ที่ต้องการดึงข้อมูลจำนวนมากอย่างรวดเร็ว | ผู้ที่ต้องการเพียงดูข้อมูลแบบง่าย ๆ ไม่กี่ครั้ง |
| นักวิเคราะห์ข้อมูลที่ต้องการสร้างรายงาน | ผู้ที่กังวลเรื่องความปลอดภัยของ API Key |
ราคาและ ROI
การใช้งาน Binance API ฟรี 100% แต่หากคุณต้องการประมวลผลข้อมูลด้วย AI เพื่อวิเคราะห์แนวโน้มการเทรด คุณอาจต้องใช้บริการ AI API ซึ่งมีค่าใช้จ่ายต่างกัน
| ผู้ให้บริการ | ราคาต่อล้าน Tokens | ความเร็ว | หมายเหตุ |
|---|---|---|---|
| HolySheep AI | $0.42 - $15.00 | <50ms | ประหยัด 85%+ รองรับ WeChat/Alipay |
| OpenAI (GPT-4) | $30.00 - $60.00 | ~200ms | ราคาสูง แต่คุณภาพดี |
| Anthropic (Claude) | $15.00 - $75.00 | ~300ms | เหมาะกับงานวิเคราะห์เชิงลึก |
ทำไมต้องเลือก HolySheep
หากคุณวางแผนจะนำข้อมูลประวัติคำสั่งซื้อขายจาก Binance ไปวิเคราะห์ด้วย AI การใช้ HolySheep AI จะช่วยประหยัดค่าใช้จ่ายได้มากถึง 85% เมื่อเทียบกับบริการอื่น
จุดเด่นของ HolySheep AI:
- ประหยัด 85%+ - ราคาเริ่มต้นเพียง $0.42 ต่อล้าน Tokens
- รวดเร็ว - ความหน่วงต่ำกว่า 50ms เหมาะกับการประมวลผลเรียลไทม์
- รองรับหลายโมเดล - GPT-4.1, Claude Sonnet 4.5, Gemini 2.5 Flash, DeepSeek V3.2
- ชำระเงินง่าย - รองรับ WeChat และ Alipay สำหรับผู้ใช้ในไทยและจีน
- เครดิตฟรี - รับเครดิตฟรีเมื่อลงทะเบียน ทดลองใช้งานก่อนตัดสินใจ
ตัวอย่างการใช้งาน API ร่วมกับ AI
หลังจากดึงข้อมูลประวัติคำสั่งซื้อขายมาแล้ว คุณสามารถส่งข้อมูลให้ AI วิเคราะห์ได้ โดยใช้ HolySheep AI API
# ตัวอย่างการใช้งานร่วมกับ HolySheep AI
import requests
import json
def analyze_trading_with_ai(orders_data):
"""ส่งข้อมูลประวัติการเทรดให้ AI วิเคราะห์"""
# เตรียมข้อความสำหรับ AI
summary = f"ฉันมีข้อมูลการเทรด {len(orders_data)} รายการ ช่วยวิเคราะห์ให้หน่อย"
# เรียกใช้ HolySheep AI
url = "https://api.holysheep.ai/v1/chat/completions"
headers = {
"Authorization": f"Bearer YOUR_HOLYSHEEP_API_KEY",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-4.1",
"messages": [
{"role": "system", "content": "คุณเป็นผู้เชี่ยวชาญการวิเคราะห์การเทรดคริปโต"},
{"role": "user", "content": summary}
],
"temperature": 0.7
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
result = response.json()
return result['choices'][0]['message']['content']
else:
print(f"ข้อผิดพลาด: {response.status_code}")
return None
วิธีใช้งาน
if __name__ == "__main__":
# ดึงข้อมูลก่อน
my_orders = get_historical_orders("BTCUSDT", 50)
# ส่งให้ AI วิเคราะห์
if my_orders:
analysis = analyze_trading_with_ai(my_orders)
print("\nผลวิเคราะห์จาก AI:")
print(analysis)
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
กรณีที่ 1: ข้อผิดพลาด 403 Forbidden
สาเหตุ: API Key ของคุณไม่มีสิทธิ์เข้าถึงข้อมูลที่ต้องการ หรือ IP ของคุณถูกบล็อก
วิธีแก้ไข:
# วิธีที่ 1: ตรวจสอบสิทธิ์ของ API Key
ไปที่หน้า API Management บน Binance
ตรวจสอบว่าเปิดสิทธิ์ "Enable Reading" แล้ว
วิธีที่ 2: เพิ่ม IP ของคุณใน whitelist
ไปที่หน้า API Management
คลิก "Edit IP Restriction"
เพิ่ม IP ปัจจุบันของคุณ (ดูได้จาก whatismyip.com)
วิธีที่ 3: ปิด IP Restriction (ไม่แนะนำ)
คลิก "Edit IP Restriction"
เลือก "Unrestricted Access"
⚠️ คำเตือน: ไม่ปลอดภัย ควรใช้วิธีที่ 1 หรือ 2 ดีกว่า
กรณีที่ 2: ข้อผิดพลาด 429 Rate Limit Exceeded
สาเหตุ: คุณเรียกใช้ API บ่อยเกินไป Binance จำกัดจำนวนคำขอต่อวินาที
วิธีแก้ไข:
# เพิ่ม delay ระหว่างการเรียกใช้แต่ละครั้ง
import time
def get_historical_orders_safe(symbol="BTCUSDT", limit=100):
"""ดึงข้อมูลพร้อมจัดการ rate limit"""
max_retries = 3
retry_delay = 5 # วินาที
for attempt in range(max_retries):
try:
# เรียกใช้ API ตามปกติ
orders = get_historical_orders(symbol, limit)
# ถ้าสำเร็จ รอ 1 วินาทีก่อนเรียกครั้งต่อไป
time.sleep(1)
return orders
except Exception as e:
if "429" in str(e) or "rate limit" in str(e).lower():
print(f"เกินจำกัดอัตรา รอ {retry_delay} วินาที...")
time.sleep(retry_delay)
retry_delay *= 2 # เพิ่มเวลารอเป็น 2 เท่า
else:
raise e
print("ล้มเหลวหลังลอง 3 ครั้ง")
return None
กรณีที่ 3: ข้อผิดพลาด -1021 Timestamp for this request
สาเหตุ: เวลาบนคอมพิวเตอร์ของคุณไม่ตรงกับเวลาของเซิร์ฟเวอร์ Binance
วิธีแก้ไข:
# วิธีที่ 1: ซิงค์เวลาบนคอมพิวเตอร์
Windows: ตั้งค่า > วันที่และเวลา > เปิด "ตั้งเวลาอัตโนมัติ"
Mac: ค่ากำหนดระบบ > วันที่และเวลา > เปิด "ตั้งเวลาอัตโนมัติ"
วิธีที่ 2: ปรับ timestamp offset ในโค้ด
import time