8.3 KiB
8.3 KiB
Freqtrade 策略说明与对比
文件清单
quant/
├── README.md ← 本文档(策略说明与对比)
├── freqtrade-deploy-guide.md ← 部署操作指南
├── stoploss_leverage_adjustment.md ← 止损杠杆调整文档
├── us-stock-trading-evaluation.md ← 美股交易方案评估(券商对比+框架+代币化股票)
│
├── multi_asset_channel_breakout_v5/ ← 当前线上策略
│ ├── multi_asset_channel_breakout_v5.py (本地副本)
│ ├── multi_asset_channel_breakout_v5.live.py (线上备份)
│ ├── config.live.json (线上 config.json)
│ └── config.local.json (本地 config.json)
│
└── quantdinger/ ← 旧策略
├── quantdinger_strategy.py (本地副本)
├── quantdinger_strategy.live.py (线上备份)
├── config.json (QuantDinger 专用配置)
├── live_params.json (实盘运行参数)
├── channel_breakout.strategy_defaults.json (策略默认参数)
├── channel_breakout.yaml (策略配置 YAML)
├── backtest_runtime_defaults.json (回测运行默认参数)
└── best_params/ ← 最优参数组合(搜索结果)
├── phase6_offset18_nolock/
├── phase7_seed251_c915/
├── phase7a_top3_full_year.json
├── phase7b_top3_full_year.json
├── phase8a_full_year.json
├── seed185_candidate_243/
├── seed190_candidate_011/
├── ...(共 20 组最优参数,每组含 params.json + full_year_backtest.json)
└── seed292_candidate_421/
一、当前线上策略:MultiAssetChannelBreakoutV5
基本信息
- 策略文件:
multi_asset_channel_breakout_v5.py - 时间周期:15m
- 杠杆:固定 10x(OKX 隔离保证金)
- 交易对:BTC/USDT、ETH/USDT
- 方向:仅做多
- 代码量:186 行,7 个可优化参数
核心逻辑
入场:收盘价突破 ATR 通道上轨 + 在长均线上方 + ADX > 28(趋势+动量共振)。
出场:收盘价跌破 141 周期最低点 + ATR×0.19(通道底动态退出线)。
止损(分段动态,通过 trade.leverage 联动):
| 盈利阶段 | 止损行为 | 价格含义 |
|---|---|---|
| < 5% | 硬止损兜底 | 价格 -8% |
| 5%~15% | 保本+5% | 入场价 × 1.05 |
| 15%~30% | 允许 10% 回撤 | 当前价 -10% |
| > 30% | 允许 10% 回撤 | 当前价 -10% |
入场二次确认(confirm_trade_entry):防假突破(下单价不能低于信号 K 线均线/上轨)+ 防追高(滑点 > 1% 放弃)。
ROI 止盈:关闭(minimal_roi = {"0": 100}),完全依赖信号出场 + 动态止损。
参数配置
参数在策略代码内定义,无外部 JSON。关键参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
up_line_span |
340 | 上轨窗口(K 线数) |
buy_stop_profit_span |
141 | 下轨窗口 |
ma_span_long_days |
2 | 长均线天数(×96 = 15m 周期数) |
adx_threshold |
28 | 动量阈值 |
up_line_offset |
-0.18 | 上轨 ATR 偏移 |
buy_stop_profit_offset |
0.19 | 下轨 ATR 偏移 |
stoploss |
-0.80 | 硬止损(保证金维度) |
config.json 关键配置
{
"max_open_trades": 2,
"stake_amount": "unlimited",
"tradable_balance_ratio": 0.99,
"trading_mode": "futures",
"margin_mode": "isolated",
"stoploss": -0.80,
"strategy": "MultiAssetChannelBreakoutV5",
"pair_whitelist": ["BTC/USDT:USDT", "ETH/USDT:USDT"]
}
二、旧策略:QuantDinger
基本信息
- 策略文件:
quantdinger_strategy.py - 时间周期:5m
- 杠杆:固定 10x(OKX 隔离保证金)
- 方向:仅做多
- 代码量:521 行,20+ 个可优化参数
核心逻辑
Regime 检测引擎:把市场分为四种状态,带滞回 hysteresis 防频繁切换:
- 压缩(compression):波动率低于阈值
- 扩张(expansion):波动率高于阈值
- 趋势(trend):均线斜率 + 价格位移超阈值
- 震荡(range):以上都不满足
N 值:自定义 ATR,用 6 个 chunk(每 10 根 K 线)的 high-low spread 的 EMA 平滑。
入场(三种模式,regime 驱动):
- 趋势:突破上轨 + N 值偏移
- 压缩/扩张:波动率扩张 + 突破短周期上轨
- 震荡:回踩短均线后反弹
退出(五层):
- 保护止损(入场价 - N 值 × 杠杆系数)
- 跟踪止损(通道底 + N 值 × offset)
- 保本止损(盈利超 buffer 后启动)
- 利润锁定(从峰值盈利回撤 33% 退出)
- 时间止损(持仓 1440 根 5m K 线 ≈ 5 天)
仓位管理:custom_stake_amount 根据 N 值动态计算仓位,波动大缩小、波动小放大。
杠杆处理:使用 stoploss_from_absolute() 辅助函数,接受 leverage 参数,天然杠杆感知。
参数配置
参数在策略代码内定义,20+ 个 RealParameter/IntParameter。关键参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
strategy_lever_rate |
1.0 | 杠杆系数(影响止损+仓位) |
profit_line |
0.08 | 利润锁定触发线 |
lock_profit_rate |
0.33 | 利润回撤锁定比例 |
up_line_span |
1008 | 上轨窗口 |
exit_max_loss_pct |
0.03 | 保护止损比例 |
exit_max_hold_bars |
1440 | 最大持仓 K 线数 |
stoploss |
-0.10 | 硬止损(极宽松兜底) |
三、两套策略对比
架构对比
| 维度 | QuantDinger(旧) | V5(当前) |
|---|---|---|
| 时间周期 | 5m | 15m |
| 代码量 | 521 行 | 186 行 |
| 可优化参数 | 20+ | 7 |
| 市场状态识别 | 四态 regime + hysteresis | 无 |
| 入场逻辑 | 三种 regime 驱动模式 | 单一突破 |
| 退出体系 | 五层(保护+跟踪+保本+锁利+时间) | 两层(信号+分段止损) |
| 仓位管理 | 动态(N 值驱动) | 固定 |
| 杠杆处理 | stoploss_from_absolute(杠杆感知) |
trade.leverage 动态联动 |
| 预热 K 线 | 1400(+预取 12 天) | 600 |
| 持仓时长上限 | 5 天(1440 根 5m) | 无上限 |
设计哲学对比
| QuantDinger | V5 | |
|---|---|---|
| 核心理念 | 自适应系统:感知状态→选策略→动态管理 | 简单突破:突破就进,跌破就出 |
| 复杂度 | 高(regime 引擎 + 五层退出 + 动态仓位) | 低(一个入场 + 一个出场 + 分段止损) |
| 优点 | 适应不同市场状态,精细化管理 | 简单鲁棒,不易出错,给足趋势空间 |
| 缺点 | 参数多易过拟合,5m 噪音大,逻辑复杂难维护 | 不区分市场状态,震荡市可能频繁假突破 |
| 适合行情 | 趋势 + 震荡都能处理 | 单边趋势行情 |
止损策略对比
| QuantDinger | V5 | |
|---|---|---|
| 止损维度 | 价格维度(stoploss_from_absolute) |
保证金维度(trade.leverage 联动) |
| 硬止损 | -0.10(宽松兜底,实际靠 custom_stoploss) | -0.80(价格 -8%,接近强平线) |
| 跟踪止损 | 通道底 + N 值 × offset | 信号出场(跌破通道底) |
| 保本 | 盈利 > 0.1% 后,止损 = 入场价 - N×0.3 | 盈利 > 5% 后,止损 = 入场价 × 1.05 |
| 利润锁定 | 峰值回撤 33% 退出 | 无(让利润跑) |
| 时间止损 | 5 天 | 无 |
切换原因
从 QuantDinger 切换到 V5 的主要原因:
- 简化:QuantDinger 5m + 20+ 参数过于复杂,维护成本高
- 止损 bug:V5 原来的止损参数被杠杆压缩 10 倍,已修复并改为
trade.leverage联动 - 趋势空间:V5 的 15m + 宽止损更适合通道突破策略,给趋势更多运行空间
- 鲁棒性:策略越简单越不容易在意外行情中出问题
四、部署信息
- 服务器:Vultr(通过 ecs 跳板访问,SSH config:
vultr) - 路径:
/opt/freqtrade/user_data/strategies/ - 配置:
/opt/freqtrade/user_data/config.json - 服务:
systemctl restart freqtrade - 部署详情:见
freqtrade-deploy-guide.md - 止损调整记录:见
stoploss_leverage_adjustment.md