Depth Chart คืออะไร ทำไมต้องดู?
นึกภาพตลาดหุ้นหรือคริปโตเหมือนซื้อขายในตลาดนัด — Depth Chart ก็เหมือนแผนที่บอกว่า "คนอยากซื้อ/ขายเท่าไหร่ที่ราคาเท่าไหร่" ถ้าดูจาก Order Book แบบตัวเลขล้วนๆ จะ งง มาก แต่พอวาดเป็นกราฟแล้วจะเห็นภาพชัดเจนทันทีว่า:
- ฝั่งซื้อ (สีเขียว) มีแรงซื้อมากหรือน้อย
- ฝั่งขาย (สีแดง) มีแรงขายมากหรือน้อย
- ราคาที่คนสนใจซื้อขายมากที่สุดอยู่ตรงไหน
บทความนี้จะสอนคุณทำ Depth Chart สวยๆ จากข้อมูล Tardis Order Book (ข้อมูลคำสั่งซื้อขายจริงจากตลาด) โดยใช้ Python ภาษาเดียว ตั้งแต่ติดตั้งโปรแกรมจนถึงปรับแต่งกราฟให้สวยงาม ไม่ต้องมีพื้นฐานเขียนโค้ดมาก่อนก็ทำได้!
เตรียมเครื่องมือก่อนเริ่ม
สิ่งที่ต้องมี:
- Python 3.8 ขึ้นไป (ดาวน์โหลดที่ python.org)
- ความเข้าใจพื้นฐานการใช้คอมพิวเตอร์
ขั้นตอนที่ 1: ติดตั้งโปรแกรมที่จำเป็น
เปิด Command Prompt (Windows) หรือ Terminal (Mac) แล้วพิมพ์คำสั่งนี้:
pip install requests matplotlib plotly pandas numpy
รอจนติดตั้งเสร็จ (ประมาณ 2-3 นาที) ถ้ามี error ให้ลองเพิ่ม --user หลังคำสั่ง pip install
pip install requests matplotlib plotly pandas numpy --user
ดึงข้อมูล Order Book จาก Tardis API
Tardis คือบริการที่รวบรวมข้อมูล Order Book จากตลาดคริปโตหลายตลาด เราจะดึงข้อมูลมาวาดกราฟกัน
โค้ดดึงข้อมูล Order Book ของ Bitcoin:
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
ดึงข้อมูล Order Book ของ BTCUSDT จาก Binance ผ่าน Tardis
def get_order_book(symbol='BTCUSDT', limit=100):
url = f"https://api.binance.com/api/v3/depth"
params = {
'symbol': symbol,
'limit': limit
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
# แปลงข้อมูลเป็น DataFrame
bids_df = pd.DataFrame(data['bids'], columns=['price', 'quantity'], dtype=float)
asks_df = pd.DataFrame(data['asks'], columns=['price', 'quantity'], dtype=float)
return bids_df, asks_df
else:
print(f"เกิดข้อผิดพลาด: {response.status_code}")
return None, None
ดึงข้อมูลมาใช้งาน
bids, asks = get_order_book('BTCUSDT', 100)
print("ข้อมูลฝั่งซื้อ (Bids) 5 รายการแรก:")
print(bids.head())
print("\nข้อมูลฝั่งขาย (Asks) 5 รายการแรก:")
print(asks.head())
ผลลัพธ์จะแสดงตารางข้อมูลแบบนี้:
- ราคา (price) — ราคาที่คนสั่งซื้อ/ขาย
- ปริมาณ (quantity) — จำนวนที่ต้องการซื้อ/ขาย
วาด Depth Chart ด้วย Matplotlib
โค้ดสร้าง Depth Chart แบบพื้นฐาน:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import requests
def get_order_book(symbol='BTCUSDT', limit=100):
"""ดึงข้อมูล Order Book"""
url = f"https://api.binance.com/api/v3/depth"
params = {'symbol': symbol, 'limit': limit}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
bids_df = pd.DataFrame(data['bids'], columns=['price', 'quantity'], dtype=float)
asks_df = pd.DataFrame(data['asks'], columns=['price', 'quantity'], dtype=float)
return bids_df, asks_df
return None, None
def create_depth_chart(bids, asks, title="BTC/USDT Depth Chart"):
"""สร้าง Depth Chart"""
# คำนวณ cumulative sum (ผลรวมสะสม)
bids = bids.sort_values('price', ascending=False)
asks = asks.sort_values('price', ascending=True)
bids['cumulative'] = bids['quantity'].cumsum()
asks['cumulative'] = asks['quantity'].cumsum()
# สร้างกราฟ
fig, ax = plt.subplots(figsize=(14, 7))
# วาดเส้นฝั่งซื้อ (สีเขียว - อยู่ด้านซ้าย)
ax.fill_between(bids['price'], bids['cumulative'],
alpha=0.5, color='green', label='Buy Orders')
ax.plot(bids['price'], bids['cumulative'], color='green', linewidth=2)
# วาดเส้นฝั่งขาย (สีแดง - อยู่ด้านขวา)
ax.fill_between(asks['price'], asks['cumulative'],
alpha=0.5, color='red', label='Sell Orders')
ax.plot(asks['price'], asks['cumulative'], color='red', linewidth=2)
# หาราคากลาง
mid_price = (bids['price'].max() + asks['price'].min()) / 2
ax.axvline(x=mid_price, color='blue', linestyle='--', linewidth=1.5,
label=f'Mid Price: ${mid_price:,.2f}')
# ตกแต่งกราฟ
ax.set_xlabel('ราคา (USD)', fontsize=12)
ax.set_ylabel('ปริมาณสะสม (BTC)', fontsize=12)
ax.set_title(title, fontsize=16, fontweight='bold')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.3)
# แสดงผล
plt.tight_layout()
plt.show()
ดึงข้อมูลและวาดกราฟ
bids, asks = get_order_book('BTCUSDT', 200)
if bids is not None:
create_depth_chart(bids, asks)
ปรับแต่ง Depth Chart ให้สวยขึ้นด้วย Plotly
ถ้าต้องการกราฟที่ขยับขยายได้ (zoom) และดูเป็นมืออาชีพมากขึ้น แนะนำใช้ Plotly
import plotly.graph_objects as go
import requests
import pandas as pd
def get_order_book(symbol='BTCUSDT', limit=100):
"""ดึงข้อมูล Order Book จาก Binance"""
url = f"https://api.binance.com/api/v3/depth"
params = {'symbol': symbol, 'limit': limit}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
bids_df = pd.DataFrame(data['bids'], columns=['price', 'quantity'], dtype=float)
asks_df = pd.DataFrame(data['asks'], columns=['price', 'quantity'], dtype=float)
return bids_df, asks_df
return None, None
def create_interactive_depth_chart(bids, asks, symbol='BTCUSDT'):
"""สร้าง Depth Chart แบบโต้ตอบได้"""
# เตรียมข้อมูล
bids = bids.sort_values('price', ascending=False).reset_index(drop=True)
asks = asks.sort_values('price', ascending=True).reset_index(drop=True)
# คำนวณผลรวมสะสม
bids['cumulative'] = bids['quantity'].cumsum()
asks['cumulative'] = asks['quantity'].cumsum()
# หาจุดกลาง
mid_price = (bids['price'].iloc[0] + asks['price'].iloc[0]) / 2
# สร้างกราฟ
fig = go.Figure()
# ฝั่งซื้อ (สีเขียว)
fig.add_trace(go.Scatter(
x=bids['price'],
y=bids['cumulative'],
fill='tozeroy',
fillcolor='rgba(0, 255, 0, 0.3)',
line=dict(color='green', width=2),
name='ฝั่งซื้อ (Bids)',
hovertemplate='ราคา: %{x:,.2f}
ปริมาณ: %{y:.4f} BTC '
))
# ฝั่งขาย (สีแดง)
fig.add_trace(go.Scatter(
x=asks['price'],
y=asks['cumulative'],
fill='tozeroy',
fillcolor='rgba(255, 0, 0, 0.3)',
line=dict(color='red', width=2),
name='ฝั่งขาย (Asks)',
hovertemplate='ราคา: %{x:,.2f}
ปริมาณ: %{y:.4f} BTC '
))
# เพิ่มเส้นราคากลาง
fig.add_vline(x=mid_price, line_dash="dash", line_color="blue",
annotation_text=f"ราคากลาง: ${mid_price:,.2f}")
# ตกแต่ง
fig.update_layout(
title={
'text': f'{symbol} Depth Chart (Order Book)',
'x': 0.5,
'font': {'size': 20}
},
xaxis_title='ราคา (USD)',
yaxis_title='ปริมาณสะสม (BTC)',
hovermode='x unified',
template='plotly_white',
height=600,
width=1000
)
fig.show()
ดึงข้อมูลและแสดง
bids, asks = get_order_book('ETHUSDT', 200)
if bids is not None:
create_interactive_depth_chart(bids, asks, 'ETH/USDT')
ข้อดีของ Plotly:
- ซูมเข้า/ออกได้
- เลื่อนดูข้อมูลได้
- เห็นข้อมูลละเอียดเมื่อเอาเมาส์ไปชี้
- บันทึกเป็นไฟล์ HTML แชร์ให้คนอื่นดูได้
# บันทึกกราฟเป็นไฟล์ HTML
fig.write_html("depth_chart_eth.html")
print("บันทึกกราฟเรียบร้อยแล้ว: depth_chart_eth.html")
เหมาะกับใคร / ไม่เหมาะกับใคร
| เหมาะกับใคร | ไม่เหมาะกับใคร |
|---|---|
| นักเทรดมือใหม่ที่อยากเข้าใจตลาด | คนที่ต้องการข้อมูลแบบ Real-time ตลอดเวลา |
| นักพัฒนา Python ที่อยากสร้างเครื่องมือวิเคราะห์ | คนที่ไม่ถูกกับการเขียนโค้ดเลย |
| นักวิเคราะห์ทางเทคนิคที่ต้องการเห็นภาพรวมตลาด | คนที่ต้องการเทรดอัตโนมัติโดยตรง |
| ผู้ที่สนใจเรียนรู้ Data Visualization | คนที่มีงบจำกัด ต้องการเครื่องมือฟรีทั้งหมด |
ราคาและ ROI
การใช้ Depth Chart วิเคราะห์ตลาดนั้นฟรีมาก! เพราะใช้เครื่องมือ Open-source ทั้งหมด แต่ถ้าคุณต้องการนำ AI มาช่วยวิเคราะห์ข้อมูลที่ได้ หรือสร้างรายงานอัตโนมัติ ค่าใช้จ่ายจะอยู่ที่ AI API
| AI Model | ราคาต่อล้าน Token (USD) | เทียบเท่า (USD) |
|---|---|---|
| DeepSeek V3.2 | $0.42 | ประหยัดมากที่สุด |
| Gemini 2.5 Flash | $2.50 | ราคาดี ความเร็วสูง |
| GPT-4.1 | $8.00 | คุณภาพสูงสุด |
| Claude Sonnet 4.5 | $15.00 | เหมาะกับงานเขียนเชิงลึก |
ทำไมต้องเลือก HolySheep
หลังจากวาด Depth Chart วิเคราะห์ตลาดเสร็จแล้ว ถ้าต้องการให้ AI ช่วย:
- อ่านข้อมูลและแนะนำ — ป้อนข้อมูล Order Book ให้ AI วิเคราะห์
- สร้างรายงานอัตโนมัติ — ใช้ AI เขียนรายงานประจำวัน
- พยากรณ์แนวโน้ม — ถาม AI เกี่ยวกับแนวโน้มตลาด
สมัครที่นี่ HolySheep AI มีจุดเด่น:
| คุณสมบัติ | รายละเอียด |
|---|---|
| อัตราแลกเปลี่ยน | ¥1 = $1 (ประหยัดกว่า 85%+ เมื่อเทียบกับราคาตลาด) |
| การชำระเงิน | รองรับ WeChat Pay และ Alipay |
| ความเร็ว | ความหน่วงต่ำกว่า 50 มิลลิวินาที |
| เครดิตฟรี | รับเครดิตฟรีเมื่อลงทะเบียน |
ตัวอย่างการใช้ HolySheep วิเคราะห์ Order Book
import requests
ใช้ HolySheep AI วิเคราะห์ข้อมูล Order Book
def analyze_order_book_with_ai(order_book_summary):
"""
ส่งข้อมูล Order Book ให้ AI วิเคราะห์
"""
url = "https://api.holysheep.ai/v1/chat/completions"
headers = {
"Authorization": f"Bearer YOUR_HOLYSHEEP_API_KEY",
"Content-Type": "application/json"
}
data = {
"model": "deepseek-v3.2",
"messages": [
{
"role": "system",
"content": "คุณเป็นผู้เชี่ยวชาญวิเคราะห์ตลาดคริปโต จากข้อมูล Order Book ที่ได้รับ ให้วิเคราะห์แนวโน้มและให้คำแนะนำ"
},
{
"role": "user",
"content": f"วิเคราะห์ Order Book นี้:\n{order_book_summary}"
}
],
"temperature": 0.7
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
result = response.json()
return result['choices'][0]['message']['content']
else:
return f"เกิดข้อผิดพลาด: {response.status_code}"
ตัวอย่างการใช้งาน
summary = """
ฝั่งซื้อ (Bids):
- ราคา 42,000 USD: ปริมาณ 15 BTC
- ราคา 41,500 USD: ปริมาณ 25 BTC
- ราคา 41,000 USD: ปริมาณ 40 BTC
ฝั่งขาย (Asks):
- ราคา 42,500 USD: ปริมาณ 20 BTC
- ราคา 43,000 USD: ปริมาณ 35 BTC
- ราคา 43,500 USD: ปริมาณ 50 BTC
"""
result = analyze_order_book_with_ai(summary)
print("ผลวิเคราะห์จาก AI:")
print(result)
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
กรณีที่ 1: ModuleNotFoundError: No module named 'requests'
ปัญหา: ติดตั้งไลบรารีไม่ครบ หรือติดตั้งใน Python ผิดเวอร์ชัน
วิธีแก้ไข:
# วิธีที่ 1: ติดตั้งใหม่ทั้งหมด
pip install --upgrade pip
pip install requests matplotlib plotly pandas numpy
วิธีที่ 2: ถ้าใช้ Anaconda ให้ใช้คำสั่งนี้
conda install -c conda-forge requests matplotlib plotly pandas numpy
วิธีที่ 3: ติดตั้งทีละตัว
pip install requests
pip install matplotlib
pip install plotly
pip install pandas
pip install numpy
กรณีที่ 2: กราฟไม่แสดงผล (หน้าจอว่างเปล่า)
<