myTestFreqAI/docs/changelog_head15.md
2026-02-09 19:44:31 +08:00

7.0 KiB
Raw Blame History

最近 15 次提交变更总结

时间范围: 2026-02-02 ~ 2026-02-08
提交范围: 45c3c0f1..3d3cc817(共 15 次提交)
涉及文件: 13 个核心文件(不含自动生成的 analysis 文件)


一、变更概览

提交 日期 说明
3d3cc817 02-08 ML数据新鲜度问题修复
f2858280 02-08 重大发现ML数据新鲜度监控 BUG
4c51aa5c 02-08 debug identifier 配置(续)
a1fdcd67 02-08 debug identifier 配置
3c2c30b7 02-08 dryrun/live 分别设置各自的 identifier
29cd9278 02-08 不再删除训练数据,复用已有模型(续)
5f00d355 02-08 不再删除训练数据,复用已有模型
51c30588 02-07 FreqAI 训练模型名字按环境区分
f47f558f 02-07 更新 trailing stop 参数
bb64aaa6 02-03 OKX API rate limit 调整为 1000ms
c861f08b 02-02 杂项更新
15321936 02-02 入场 tag 分类 + 差异化退出策略
3ee798c2 02-02 live 配置调整
c8616c31 02-02 全面的量价关系指标
45c3c0f1 02-02 趋势判断逻辑全面改进

二、核心策略变更 (freqtrade/templates/freqaiprimer.py)

共新增约 1050 行代码,是本轮变更的主体。

2.1 趋势判断逻辑改进

旧逻辑:单纯使用 EMA50/EMA200 金叉死叉判断趋势。

新逻辑多维度投票机制三者投票≥2票为趋势确认

维度 3m 15m 1h
EMA 趋势 EMA50 > EMA200 EMA50 > EMA200 EMA50 > EMA200
价格动量 close > close.shift(5) close > close.shift(5) close > close.shift(5)
EMA 斜率 > 0.1% > 0.2% > 0.3%

趋势强度:引入 EMA 斜率作为趋势一致性权重,market_score 计算从简单的 0/1 变为连续值。

新增辅助指标:

  • macd_trend_strengthMACD 趋势强度
  • rsi_trend_strengthRSI 偏离中性区域程度

2.2 成交量与量价关系指标(全新模块)

成交量趋势指标

  • volume_change:成交量变化率
  • volume_ma_ratio:成交量/MA 比值
  • volume_std / volume_cv:成交量标准差和变异系数
  • volume_zscoreZ 分数(检测异常成交量)
  • volume_trend:成交量趋势方向
  • volume_ema_fast/slow:成交量 EMA 快慢线趋势

量价关系指标

  • volume_price_confirmation:量价确认度(同向变动)
  • volume_price_ratio:量价比率
  • bearish_divergence:顶背离(价格新高但量未新高)
  • bullish_divergence:底背离(价格新低但量未新低)
  • obvOn Balance Volume 平衡成交量
  • volume_price_corr_short/medium量价相关系数10/20 窗口)

2.3 入场类型识别与标签系统(全新模块)

新增 identify_entry_type() 函数,根据技术指标特征组合识别 7 种入场类型:

类型 名称 识别特征 建议止盈
0 快进快出 高波动 + 极端RSI + 动量背离 2%
1 短期波段 中等波动 + 边界RSI 4%
2 中期趋势 中等波动 + 中性RSI 6%
3 长期持有 强趋势 + 低波动 + 多头排列 10%
4 套利机会 均值回归区域 + 低波动 3%
5 突破追涨 巨量 + 强动量 8%
6 震荡套利 震荡区间 + 低波动 2.5%

标签格式type:X,duration:Y,risk:Z,confidence:W,name:NAME,market_state:S,trend_strength:T

2.4 差异化退出策略

custom_roi()(全新函数):根据入场类型和市场状态动态调整 ROI 目标。

confirm_trade_exit() 增强

  • 获取高级市场状态(get_advanced_market_state
  • 在熊市中更积极保护利润:
    • 降低出场阈值(趋势强度越大,阈值越低)
    • 缩短持仓容忍时间(下跌趋势最大 24 小时)
    • 持仓超 1 小时 + 小幅盈利 → 考虑提前出场

custom_stoploss() 增强

  • 根据入场类型、市场状态、趋势强度调整止损策略
  • 熊市中使用更紧的止损乘数
  • 解析 entry_tag 获取入场类型和风险等级

confirm_trade_entry() 增强

  • 价格保护逻辑:在强熊市中要求更高折扣才能入场
  • 折扣幅度随趋势强度和可信度动态调整
  • 入场时生成完整标签并传递给后续回调

2.5 市场环境综合管理(全新模块)

新增三个核心函数:

函数 功能
get_advanced_market_state() 返回 state/strength/confidence 三元组
get_comprehensive_market_context() 整合市场形态标签和趋势信息
identify_entry_type() 根据指标组合识别入场类型

2.6 数据新鲜度监控系统

新增 _freshness_stats 统计字典和相关方法:

方法 功能
update_freshness_stats() 更新每个币对的延迟统计
report_freshness_stats() 每小时输出统计报告

数据新鲜度日志:在 populate_entry_trend 中新增独立的数据新鲜度检查,显示 dataframe 最后一行的时间和延迟。

BUG 修复:之前的入场诊断日志误用"最近一次入场信号的时间"作为"数据时间",导致无入场信号时虚假报告数百分钟延迟。已拆分为独立的数据新鲜度日志和入场信号日志。

2.7 Trailing Stop 参数调整

参数 旧值 新值
trailing_stop_positive 0.0125 0.0075
trailing_stop_positive_offset 0.045 0.0225

更紧的追踪止损,更快锁定利润。


三、配置变更

3.1 FreqAI identifier 环境隔离

  • dryrun.json 新增 "identifier": "dryrun-freqai"
  • live.json 使用独立的 "identifier": "live-freqai"(在 live.sh 中设置)
  • freqaiprimer.json 移除硬编码的 identifier由部署脚本注入

目的:防止 dryrun 和 live 共享模型文件导致冲突。

3.2 OKX API Rate Limit

live.json: rateLimit 从 500ms 调整为 1000ms,降低 API 请求频率,避免限流。

3.3 币对白名单更新

live.jsondryrun.jsonpair_whitelist 均有调整,移除部分币对,新增多个币对。


四、部署脚本变更

4.1 保留训练模型(live.sh / dryrun.sh

关键变更:注释掉 rm -rf user_data/models/*,不再在每次部署时删除已训练的模型。

效果:容器重启后可复用已有模型,从数小时的冷启动缩短到秒级推理。

4.2 默认配置文件

live.shdryrun.sh 的默认配置从 basic.json 改为 freqaiprimer.json

4.3 backtest.sh 清理简化

移除 rm -rf user_data/models/*rm -fr ./user_data/dryrun_results/*,只保留回测结果清理。


五、已知问题与后续

  1. 时区问题在后续会话中修复Docker 容器默认 UTC+0导致数据新鲜度计算虚假告警
  2. OKB/USDT 数据缺失OKB 在 OKX 现货无数据,会阻塞训练流水线
  3. 入场诊断日志误导:已在本轮修复,拆分为数据新鲜度和信号时间两个独立日志