Depth Chart คืออะไร ทำไมต้องดู?

นึกภาพตลาดหุ้นหรือคริปโตเหมือนซื้อขายในตลาดนัด — Depth Chart ก็เหมือนแผนที่บอกว่า "คนอยากซื้อ/ขายเท่าไหร่ที่ราคาเท่าไหร่" ถ้าดูจาก Order Book แบบตัวเลขล้วนๆ จะ งง มาก แต่พอวาดเป็นกราฟแล้วจะเห็นภาพชัดเจนทันทีว่า:

บทความนี้จะสอนคุณทำ Depth Chart สวยๆ จากข้อมูล Tardis Order Book (ข้อมูลคำสั่งซื้อขายจริงจากตลาด) โดยใช้ Python ภาษาเดียว ตั้งแต่ติดตั้งโปรแกรมจนถึงปรับแต่งกราฟให้สวยงาม ไม่ต้องมีพื้นฐานเขียนโค้ดมาก่อนก็ทำได้!

เตรียมเครื่องมือก่อนเริ่ม

สิ่งที่ต้องมี:

ขั้นตอนที่ 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())

ผลลัพธ์จะแสดงตารางข้อมูลแบบนี้:

วาด 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
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 ช่วย:

สมัครที่นี่ 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: กราฟไม่แสดงผล (หน้าจอว่างเปล่า)

<