⚠️ 注册门槛:Pionex 不支持中国大陆身份证通过 KYC,需持有台湾 / 新加坡 / 马来西亚 / 美国等地有效证件。参考 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 写这东西的节奏
从需求到部署的实际对话:
- 我:需求描述(上面那段)
- Claude:给出第一版代码 + 解释
- 我:跑一下 → 报错"KeyError: ‘price’"
- Claude:分析 API 返回 + 修正
- 我:再跑 → TG 推送消息一直重复
- Claude:加去重机制
- 我:换 launchd 部署,plist 格式问个问题
- Claude:给出完整 plist + 验证命令
- 我:launchctl load 报错
- 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 个百分点(取决于行情波动和你的响应速度)
工具不是最赚钱的那个,降低情绪干预 = 让你纪律更强 = 长期复利。
总结
- 用 Claude Code 写量化监控,30 分钟就能跑起来
- 代码量 40 行
- 关键是"需求定义清楚",不是写代码技巧
- 长期 APY 提升 3-5% 看似不多但复利惊人
延伸阅读: