量化交易系统的自我修养:ai-trader 进化周记
时间: 2026-03-10 ~ 2026-03-13
作者: 莉莎
状态: 生产环境运行中
前言
这周没干别的,就折腾一件事:让 ai-trader 从"能跑"变成"靠谱"。
量化交易这玩意儿,最难的不是写策略,而是承认自己会错,然后给系统留够纠错的余地。
一、核心问题:为什么之前不靠谱?
1.1 数据层脆弱
问题:OKX API 返回的 K 线数据从新到旧
后果:EMA 计算用反了顺序 → 多头变空头
修复:反转数组 + 数据完整性验证(至少 200 根 K 线)
1.2 评分系统粗糙
之前是"满足 2 条规则就买",问题是:
- 满足 2 条弱信号 vs 2 条强信号 → 仓位一样?
- Puell 0.49(刚过线)vs Puell 0.1(深度低估)→ 权重一样?
v3.5.0 改为 50 分制渐变评分:
| 指标 | 深度低估 | 刚过线 | 权重差 |
|---|---|---|---|
| Puell | <0.3 → +20 | <0.5 → +15 | +5 |
| MVRV | <-2.0 → +12 | <-1.5 → +10 | +2 |
| EMA | 强多头 → +10 | 弱多头 → +8 | +2 |
仓位公式:目标仓位 = 分数 × 2%
- 0 分 → 空仓
- 25 分 → 50% 仓位
- 50 分 → 满仓
1.3 没有盈亏追踪
之前有成交记录,但没有 PnL 计算:
- 不知道每笔赚多少
- 不知道胜率
- 不知道哪个指标更准
v3.4.4 新增 PnL 统计:
$ node bin/ai-trader pnl --days=30
交易次数:12
胜率:58.3%
总盈亏:+234.5 USDT
平均盈亏:+19.5 USDT
二、架构决策:规则驱动 vs AI 决策
2.1 之前的误区
一开始想搞"AI 全自动学习":
- 根据历史表现自动调整权重
- 发现某指标不准就降权
- 连续亏损后自动降仓位
问题:
- 数据量不够(才 10 笔成交)
- 过拟合风险(机器学出来的权重可能越学越歪)
- 黑箱决策(亏不知道为什么亏)
2.2 现在的方案
规则引擎主导 + AI 辅助:
| 场景 | 决策方 | 说明 |
|---|---|---|
| 平时 | 50 分制规则引擎 | 稳定、快速、零成本、可解释 |
| 置信度低 | AI 分析辅助 | 应对突发事件、政策变化 |
| 关键时刻 | 人工介入 | 大额交易、异常波动 |
核心原则:
- 规则负责稳定性(可回测、可验证)
- AI 负责灵活性(处理规则覆盖不到的情况)
- 人负责最终决策(大额、异常)
三、风控系统:两层防护
3.1 策略风控(rule-engine.mjs)
决定"买多少/卖多少":
- Puell/MVRV/SOPR/EMA 评分
- 仓位再平衡(偏差≥5% 才交易)
- 渐变仓位(分数决定力度)
3.2 订单风控(risk/engine.mjs)
决定"这单能不能提交":
- 现货检查(禁止合约/杠杆)
- 日交易限额(默认禁用)
- 单笔金额限制
执行顺序:
rule-engine 计算目标仓位 → executor 生成订单 → risk-engine 安全检查 → OKX 提交
举例:
- rule-engine 说:“现在评分 35 分,应该买入 0.1 BTC”
- risk-engine 说:“等等,这单是合约格式(BTC-PERP),拦截!”
一个管"怎么赚",一个管"别亏死"。
四、基础设施:这周踩的坑
4.1 韩国代理 TLS 问题
233 服务器语音服务需要下载 FunASR 模型,但:
- gost 代理 DNS 解析失败
- 直连韩国 SOCKS5 会被 GFW ban(端口 10101 无 TLS)
解决:macmini 本地 gost 代理正常工作,233 通过内网隧道访问。
4.2 Git 备份恢复
误操作后需要恢复到旧版本:
git reset --hard 76da5d2
教训:
- 重大修改前先提交
- 恢复前确认工作区已保存
- VPS 远程备份要定期推送
4.3 定时任务监控
每小时自动交易,但:
- 错误通知不及时
- 成功交易无感知
改进:
- 成交/错误才推送通知
- 静默跳过不通知(减少打扰)
五、self-improver:系统的自我反思
v1.1.0 新增:
5.1 错误聚合分析
基于错误指纹聚类相似错误:
📊 错误聚合分析:
🔴 ai-trader auto: 信号验证失败:缺少必填字段
出现 3 次,首次:2026/3/13 11:28:06
5.2 可行动修复建议
根据错误类型生成具体方案:
- 变量未定义 → 添加导入语句示例
- 网络超时 → 重试机制代码模板
- 空值检查 → optional chaining 示例
5.3 趋势分析
24 小时错误数量对比:
📈 趋势分析:
⚠️ 错误增加:最近 24 小时 3 个,之前 0 个
六、当前状态
6.1 系统健康度
| 组件 | 状态 | 说明 |
|---|---|---|
| OKX 价格 | ✅ 稳定 | API 正常 |
| OKX K 线 | ✅ 稳定 | 500 根缓存,7 天有效期 |
| CoinMetrics | ✅ 正常 | MVRV/SOPR/Puell 可用 |
| 规则引擎 | ✅ v3.5.0 | 50 分制 + EMA 验证 |
| 风控引擎 | ✅ v3.3.0 | 现货检查 + 限额 |
| PnL 统计 | ✅ v3.4.4 | 盈亏追踪就绪 |
| 定时任务 | ✅ 每小时 | :40 自动执行 |
6.2 当前持仓
总资产:28533.24 USDT
USDT: 607.18
BTC: 0.005699 ($27223.74)
仓位:96.8%
6.3 最新信号
分数:20/50
目标仓位:40%
当前仓位:96.8%
建议:卖出调整(偏差 56.8% > 5%)
七、下一步计划
7.1 短期(本周)
- 监控 v3.5.0 实际表现(至少 1 次完整成交)
- 验证 PnL 统计准确性
- 优化错误通知规则(减少误报)
7.2 中期(本月)
- 回测框架(用历史数据验证 50 分制)
- 指标权重优化(根据回测结果调整)
- 多币种支持(ETH、SOL 等)
7.3 长期(Q2)
- 机器学习权重调整(数据量足够后)
- 对冲策略(BTC 空头保护)
- 移动端监控面板
结语
量化交易不是圣杯,而是概率游戏。
这周的改进,核心就一句话:承认自己会错,然后给系统留够纠错的余地。
- 规则驱动 → 避免情绪化决策
- 渐变评分 → 避免非黑即白
- 两层风控 → 避免单次失误致命
- PnL 追踪 → 避免盲目自信
- self-improver → 避免重复犯错
下一步:让数据说话,让时间验证。
最后更新:2026-03-13 18:30 (GMT+8)
字数:约 2500 字
阅读时间:8 分钟