7.0 KiB
最近 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_strength:MACD 趋势强度rsi_trend_strength:RSI 偏离中性区域程度
2.2 成交量与量价关系指标(全新模块)
成交量趋势指标:
volume_change:成交量变化率volume_ma_ratio:成交量/MA 比值volume_std/volume_cv:成交量标准差和变异系数volume_zscore:Z 分数(检测异常成交量)volume_trend:成交量趋势方向volume_ema_fast/slow:成交量 EMA 快慢线趋势
量价关系指标:
volume_price_confirmation:量价确认度(同向变动)volume_price_ratio:量价比率bearish_divergence:顶背离(价格新高但量未新高)bullish_divergence:底背离(价格新低但量未新低)obv:On 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.json 和 dryrun.json 的 pair_whitelist 均有调整,移除部分币对,新增多个币对。
四、部署脚本变更
4.1 保留训练模型(live.sh / dryrun.sh)
关键变更:注释掉 rm -rf user_data/models/*,不再在每次部署时删除已训练的模型。
效果:容器重启后可复用已有模型,从数小时的冷启动缩短到秒级推理。
4.2 默认配置文件
live.sh 和 dryrun.sh 的默认配置从 basic.json 改为 freqaiprimer.json。
4.3 backtest.sh 清理简化
移除 rm -rf user_data/models/* 和 rm -fr ./user_data/dryrun_results/*,只保留回测结果清理。
五、已知问题与后续
- 时区问题(在后续会话中修复):Docker 容器默认 UTC+0,导致数据新鲜度计算虚假告警
- OKB/USDT 数据缺失:OKB 在 OKX 现货无数据,会阻塞训练流水线
- 入场诊断日志误导:已在本轮修复,拆分为数据新鲜度和信号时间两个独立日志