⚠️ 註冊門檻:Pionex 不支援中國大陸身份證透過 KYC,需持有臺灣 / 新加坡 / 馬來西亞 / 美國等地有效證件。參考 Pionex 受限地區官方說明。

Claude Code 監控 Pionex 機器人

Pionex 網格機器人跑了 4 個月,最大的痛點是到達區間邊沿時沒有預警。價格上穿 / 下穿區間機器人會自動停,但你不知道什麼時候需要手動干預(重配區間或暫停)。

解決方法:寫一個小指令碼監控價格,到達邊沿前預警。我用 Claude Code 從零寫到跑起來花了 25 分鐘,把過程和最終程式碼都放出來。

為什麼要 Claude Code 寫

比起自己從頭想:

  • 我不熟悉 Pionex API(Claude 查文件比我快)
  • Telegram Bot API 我記不住細節(Claude 會直接出正確程式碼)
  • 我傾向於過度設計,Claude 會給"最小可用"版本
  • 除錯環節 Claude 看報錯直接改

整個過程就是對 Claude 說人話,它輸出程式碼 + 解釋。

需求定義(我給 Claude 的)

寫一個 Python 指令碼:
1. 每 5 分鐘查 BTC/USDT 和 XAU/USDT 的當前價格
2. 如果價格接近預設區間的上沿或下沿(10% 以內),推送 Telegram
3. 推送內容含:當前價、區間、距離邊沿百分比
4. 配置放在環境變數:TG_TOKEN, TG_CHAT_ID, BOT_CONFIGS
5. BOT_CONFIGS 是 JSON,格式:
   [
     {"symbol": "BTC/USDT", "low": 60000, "high": 70000, "name": "BTC 網格"},
     {"symbol": "XAU/USDT", "low": 3400, "high": 3600, "name": "黃金網格"}
   ]
6. 用 Binance 公開 API 查價格(Pionex 用的價格源和 Binance 一致)
7. 部署到 Mac,用 launchd 每 5 分鐘跑

Claude 輸出的程式碼(幾乎一稿過)

檔案 1:pionex_monitor.py

import os, json, urllib.request, time
from datetime import datetime

TG_TOKEN = os.environ["TG_TOKEN"]
TG_CHAT_ID = os.environ["TG_CHAT_ID"]
BOT_CONFIGS = json.loads(os.environ.get("BOT_CONFIGS", "[]"))

# 閾值:距離邊沿 10% 觸發預警
ALERT_THRESHOLD = 0.10

def get_price(symbol):
    """symbol 格式 'BTC/USDT' → Binance API 'BTCUSDT'"""
    s = symbol.replace("/", "")
    url = f"https://api.binance.com/api/v3/ticker/price?symbol={s}"
    with urllib.request.urlopen(url, timeout=10) as r:
        return float(json.loads(r.read())["price"])

def send_tg(text):
    """Telegram Bot 推送"""
    url = f"https://api.telegram.org/bot{TG_TOKEN}/sendMessage"
    data = json.dumps({"chat_id": TG_CHAT_ID, "text": text}).encode()
    req = urllib.request.Request(url, data=data,
                                 headers={"Content-Type": "application/json"})
    try: urllib.request.urlopen(req, timeout=5)
    except Exception as e: print(f"TG send failed: {e}")

def check_bot(bot):
    symbol = bot["symbol"]
    low, high = bot["low"], bot["high"]
    name = bot["name"]
    try: price = get_price(symbol)
    except Exception as e:
        print(f"{symbol}: get price fail: {e}")
        return
    
    # 距離上沿的百分比
    dist_to_high = (high - price) / price
    dist_to_low = (price - low) / price
    
    # 判斷是否接近邊沿
    if dist_to_high < ALERT_THRESHOLD and dist_to_high > 0:
        pct = dist_to_high * 100
        send_tg(f"🟡 {name} 接近上沿\n當前: ${price:,.2f}\n上沿: ${high:,.2f}\n距離: {pct:.2f}%")
    elif dist_to_low < ALERT_THRESHOLD and dist_to_low > 0:
        pct = dist_to_low * 100
        send_tg(f"🟡 {name} 接近下沿\n當前: ${price:,.2f}\n下沿: ${low:,.2f}\n距離: {pct:.2f}%")
    elif price >= high:
        send_tg(f"🔴 {name} 已穿越上沿!\n當前: ${price:,.2f}\n上沿: ${high:,.2f}\n機器人可能已停,建議檢查")
    elif price <= low:
        send_tg(f"🔴 {name} 已跌破下沿!\n當前: ${price:,.2f}\n下沿: ${low:,.2f}\n建議手動平倉或擴大區間")

if __name__ == "__main__":
    for bot in BOT_CONFIGS:
        check_bot(bot)

只有 40 行。

怎麼部署(Mac 本機)

1. 儲存為 ~/scripts/pionex_monitor.py

2. 建 Telegram Bot:找 @BotFather 發 /newbot → 拿到 Token

3. 拿 Chat ID:自己的 Bot 發訊息後訪問

https://api.telegram.org/bot<TOKEN>/getUpdates

JSON 裡的 chat.id。

4. LaunchAgent:~/Library/LaunchAgents/com.as.pionex-monitor.plist

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
    <key>Label</key><string>com.as.pionex-monitor</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/python3</string>
        <string>/Users/YOU/scripts/pionex_monitor.py</string>
    </array>
    <key>StartInterval</key><integer>300</integer>
    <key>EnvironmentVariables</key>
    <dict>
        <key>TG_TOKEN</key><string>YOUR_TOKEN</string>
        <key>TG_CHAT_ID</key><string>YOUR_CHAT_ID</string>
        <key>BOT_CONFIGS</key><string>[{"symbol":"BTC/USDT","low":60000,"high":70000,"name":"BTC 網格"}]</string>
    </dict>
    <key>StandardOutPath</key><string>/tmp/pionex_monitor.log</string>
    <key>StandardErrorPath</key><string>/tmp/pionex_monitor.log</string>
</dict>
</plist>

5. 載入:

launchctl load ~/Library/LaunchAgents/com.as.pionex-monitor.plist

每 5 分鐘自動跑一次。

加強版(Claude 二輪補充)

一稿跑通後我讓 Claude 加了這些:

去重:同一警報 2 小時內不重複推

def should_alert(key, window_sec=7200):
    """用 /tmp 裡的 marker 檔案去重"""
    import os
    marker = f"/tmp/.pionex_alert_{key}"
    if os.path.isfile(marker) and time.time() - os.path.getmtime(marker) < window_sec:
        return False
    open(marker, "w").close()
    return True

每日摘要:每天早 8 點無條件發一條當前價格的報告

擴充套件監控項:除了價格,也監控 Pionex 賬戶總餘額變化(需要 Pionex API key)

Claude Code 寫這東西的節奏

從需求到部署的實際對話:

  1. 我:需求描述(上面那段)
  2. Claude:給出第一版程式碼 + 解釋
  3. 我:跑一下 → 報錯"KeyError: ‘price’"
  4. Claude:分析 API 返回 + 修正
  5. 我:再跑 → TG 推送訊息一直重複
  6. Claude:加去重機制
  7. 我:換 launchd 部署,plist 格式問個問題
  8. Claude:給出完整 plist + 驗證命令
  9. 我:launchctl load 報錯
  10. Claude:一眼看出 PATH 問題,給 EnvironmentVariables 補 PATH

典型情況下 20-40 分鐘可以從需求到部署跑起來,主要工作是對著 Claude 描述、試跑、反饋報錯,不用自己從零寫程式碼。

類似的量化小工具思路

用 Claude Code 寫這種量化輔助指令碼的場景:

指令碼用途典型程式碼量
監控資金費率 > 某閾值時推送(套利機會)50 行
對比 Pionex 賬戶浮盈 vs Grafana 記錄80 行
檢查所有開倉是否有止損,沒設則警報35 行
每天彙總 AFF 點選(接 CF Worker API)40 行

典型都在 50 行以下,用 Claude Code 半小時就能搞定。

為什麼選 Claude Code 做這類

替代選項:

  • ChatGPT 網頁版:每次複製貼上程式碼太累
  • Cursor:好用但要訂閱且偶爾改檔案不太細
  • Copilot:補全型,不擅長從頭設計
  • Claude Code:直接在終端裡讓它改你本地檔案,改完跑測試反饋給它

如果你在 Mac 上做量化 / 運維,強烈推薦。

→ Claude Code 省錢指南 · Claude 雙通道切換

組合起來的價值

現在我的 Pionex 監控 + 實盤資料 + 期現套利 三個策略分別跑,出現邊沿時 Telegram 2 秒內收到。

使用起來典型效果:

  • 每週通常會觸發 2-3 次預警,其中 1-2 次值得手動干預(上穿或下破前及時調整)
  • 一次正確的"上穿前手動止盈"能幫你多賺一些浮盈(幾美金到幾十美金不等,取決於倉位)
  • 跟完全不監控相比,淨 APY 通常能高 3-5 個百分點(取決於行情波動和你的響應速度)

工具不是最賺錢的那個,降低情緒干預 = 讓你紀律更強 = 長期複利。

→ Pionex 新使用者註冊

總結

  • 用 Claude Code 寫量化監控,30 分鐘就能跑起來
  • 程式碼量 40 行
  • 關鍵是"需求定義清楚",不是寫程式碼技巧
  • 長期 APY 提升 3-5% 看似不多但複利驚人

延伸閱讀: