量化交易系统的自我修养:ai-trader 进化周记

量化交易系统的自我修养: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 全自动学习":

  • 根据历史表现自动调整权重
  • 发现某指标不准就降权
  • 连续亏损后自动降仓位

问题

  1. 数据量不够(才 10 笔成交)
  2. 过拟合风险(机器学出来的权重可能越学越歪)
  3. 黑箱决策(亏不知道为什么亏)

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 分钟

Built with Hugo
Theme Stack designed by Jimmy