跳至正文
全部策略

策略

ETH 日线黄金交叉动量策略,采用 ATR 移动止损

结局: 已放弃

EthDailyGoldenCrossMomentumAtrTrail

简单、干净的4参数单品种OHLCV结构;实测样本(317笔交易);无爆仓

假设

一种基于日K线的简单ETHUSDT永续期货纯多头趋势跟踪策略。当快速EMA在已确认的长期上升趋势背景下(价格位于200日SMA之上)上穿慢速EMA时做多入场,随后以基于ATR的追踪止损持有趋势。该策略特意设计为低参数、单品种、仅使用K线数据的策略,以避免困扰近期多品种配对和附加数据策略的Layer-2验证超时问题。选择ETH而非BTC的原因是BTC均值回归策略已在储备中(BtcZScoreDipBuyUptrend),我们需要风格/品种多样性。ETH在牛市阶段具有充分记录的趋势持续性(例如2020-2021、2023-2024的上涨行情),且日线级别意味着每年约3-8笔交易,平均盈利单为20-40%——远超0.10%的期货双边手续费。策略参数共4个:ema_fast、ema_slow、atr_period、atr_mult。

Layer-1 报告称未找到 FactoryStrategy 子类,且缺少全部四个必需方法,因为上一次提交的代码在传输过程中丢失(previous_code 收到的内容是“...”)。本轮按假设要求恢复完整实现:一个继承 FactoryStrategy 的类,完整实现 calculate_signal、should_enter、should_exit 和 position_size;包含四个核心参数(ema_fast、ema_slow、atr_period、atr_mult),以及 200 日趋势过滤器和仓位比例。根据假设中声明的永续期货交易场所,继续使用 ETHUSDT.BINANCE;杠杆保持为 1.0,且仓位计算未引用杠杆,因此不存在杠杆参数无效的问题。EMA 在有界尾部数据上计算(每根 bar 的复杂度为 O(period),而非 O(history)),确保远低于 Layer-3 的运行时限;在 ETH 的多年日线历史数据中,日线黄金交叉/200-SMA 组合条件每年触发多次,远超沙盒要求的 >=1 笔交易。

仅做多的 EMA 黄金交叉动量克隆策略,回撤足以取消晋级资格,盈利因子对手续费敏感,缺乏显著性,且标题数据受伪象污染——应果断放弃,不值得再花 2 小时。max_drawdown 为 58.4%,从 CI 到 80.5%,已越过 L19 >50% 的硬性放弃线;对应 7.5% 的 CAGR(recovery_factor 0.84)。profit_factor 为 1.07,处于 L18 手续费脆弱区间,且交易成本高(佣金占毛收益的 6.51%,impact_cost_pct 21.2%),因此毛收益优势被成本吞噬。结果不显著:夏普比率为 0.474,bootstrap CI [-0.228, 1.149] 跨越零点,PSR 0.848。+218% 总收益受到污染且被夸大:return_kurtosis 100,伴有不可信的单日数据(2021-03-24 +108.8%,2021-05-19 +29%);名义上 60% 的仅做多仓位却出现 avg_position_pct 127%,这表明存在仓位规模/估值伪象;而 end_unrealized_pct 164 意味着标题收益大部分来自未平仓头寸的未实现收益(已实现收益约为 +54%)。7 年中有 4 年亏损(2020/2022/2023/2024),收益由 2021 和 2025 支撑,并经历了 -44.8% 中国禁令压力期。这是工厂反复淘汰的 EMA 黄金交叉/MA 动量趋势克隆策略(L41),又叠加了 L30/L63 突破策略的失败模式。参数调优无法修复 >50% 的回撤或 PF-1.07 动量克隆策略。失败模式:risk_reject/过拟合的仅做多动量克隆策略,>50% DD,对手续费敏感(L19/L18/L41)。

实现

在 ETHUSDT.BINANCE(USD-M 永续合约)上运行的仅做多日线趋势跟踪策略。当 20-EMA 高于 50-EMA(黄金交叉状态)AND 收盘价高于 200 日 SMA 时做多,以确认长期上升趋势。通过 ATR(14) 移动止损跟随趋势:止损位设在入场后出现的最高收盘价下方 3xATR 处;此外,出现死亡交叉(EMA 价差转为负值)时也会平仓。calculate_signal 每根 bar 返回连续的 EMA 价差((快线-慢线)/慢线,以百分比表示);should_enter 将其与 entry_spread_pct 比较,同时应用缓存的 200-SMA 过滤条件。仓位规模为账户权益的 60%,杠杆为 1x。仅限 OHLCV,单一交易品种,日线 bar,不使用补充数据。

验证结果

验证失败(Layer 1——静态分析): - 未找到继承 FactoryStrategy 的类(行号 None) - 未实现必需方法:position_size(行号 None) - 未实现必需方法:should_exit(行号 None) - 未实现必需方法:should_enter(行号 None) - 未实现必需方法:calculate_signal(行号 None)

回测评审

夏普
0.47
总收益率
218.03%
最大回撤
58.35%
总交易数
317
胜率
44.2%
盈利因子
1.07

简单、干净的4参数单品种OHLCV结构;实测样本(317笔交易);无爆仓

avg_trade_return_pct 1.196% 名义上足以覆盖手续费

max_drawdown 58.4%(CI 至 80.5%)——已越过 L19 >50% 的硬性放弃线;recovery_factor 0.84

profit_factor 1.07——处于 L18 手续费脆弱区;佣金占毛收益的 6.51%,impact_cost_pct 21.2% 吞噬了大部分优势

夏普比率为 0.474,CI [-0.228, 1.149] 跨越零点,PSR 0.848——不显著

受离群值/伪象污染(峰度 100,单日 +108.8%,在 60% 仅做多仓位上达到 avg_position_pct 127%);end_unrealized_pct 164(标题收益大多尚未实现);7 年中有 4 年亏损;EMA 交叉动量克隆策略(已失效类别)

迭代历史

验证失败(Layer 2——合成场景): 使用的参数:['atr_mult', 'ema_fast', 'ema_slow', 'atr_period', 'sma_period', 'min_notional', 'equity_fraction'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend:TypeError:EthDailyGoldenCrossAtrTrailLong._ema() 接受 2 个位置参数,却传入了 3 个(bar 时间戳:1735701660000) - steady_downtrend:TypeError:EthDailyGoldenCrossAtrTrailLong._ema() 接受 2 个位置参数,却传入了 3 个(bar 时间戳:1735701660000) - flat_ranging:TypeError:EthDailyGoldenCrossAtrTrailLong._ema() 接受 2 个位置参数,却传入了 3 个(bar 时间戳:1735701660000) - volatility_spike:TypeError:EthDailyGoldenCrossAtrTrailLong._ema() 接受 2 个位置参数,却传入了 3 个(bar 时间戳:1735701660000) - zero_volume:TypeError:EthDailyGoldenCrossAtrTrailLong._ema() 接受 2 个位置参数,却传入了 3 个(bar 时间戳:1735701660000) - price_gap:TypeError:EthDailyGoldenCrossAtrTrailLong._ema() 接受 2 个位置参数,却传入了 3 个(bar 时间戳:1735701660000)

Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。