策略
BCH 4小时 锤子线 Pinbar 反转 仅做多(BINANCE USD-M期货,4小时,OHLCV-仅做多,单根K线 Pinbar 机制)
结局: 已放弃
BchFourHourHammerPinbarReversalLong
结局总结
该策略一次填补了投资组合的两个空缺——首次覆盖 BCH,也是首个单根K线影线拒绝机制——在高于 50-SMA 的上升趋势回调中形成锤头线时做多。该信号在 2020-2026 的数据中干净地触发了 89 笔交易,但期望收益为负(每笔交易 -$439,盈利因子 0.53,夏普比率 -3.76,总回报 -38.8%),且在每个主要年份都亏损,胜率 41.6% 且平均盈利小于平均亏损,呈现双重不利特征。分析师在第二次迭代时于回测审查关卡放弃该策略,判定这是一个干净的假设层面失败,没有可供优化的基础,因此该策略从未进入优化或风险审查阶段。
假设
第 2 次迭代的修复,针对合成情景中层级-2“信号冻结(值=0.0)”的失败。根因是受门控信号的反模式:当严格的单根K线锤头几何条件未触发时,calculate_signal 在每根K线上都返回 0.0;对于平滑的合成数据,这意味着每根K线都不触发 -> 所有 446 信号都固定为 0.0。修复:calculate_signal 现在 ALWAYS 返回连续且随K线变化的锤头形态评分(下影线占比 + 收盘位置奖励,减去实体和上影线惩罚,经 tanh 压缩,并根据价格高于趋势 SMA 的幅度加权),因此监控信号在每个情景中都会变化。严格入场判定保持不变——仍在同一位置计算并存储于 self._hammer_trigger 中(小实体 AND 长下影线 AND 短上影线 AND 收盘位于上半区 AND 收盘价>SMA)——should_enter 和 position_size 现在使用该判定,而不是原始信号符号,因此层级-3的交易行为和退出逻辑(此前已通过层级 1)逐字节保持一致。导入未变更(仅 numpy),保留层级-1的通过结果。交易场所/杠杆不变:BINANCE期货,4-HOUR,杠杆 2.0,且 position_size 确实使用了杠杆(权益 * position_pct * 杠杆)。
基础机制没有优势:在 BCH 4小时上,单根K线锤头线/Pinbar仅做多反转策略在 2020-2026 上的期望收益为负。profit_factor 0.53,avg_trade_return -439,夏普比率 -3.76,且在每个主要年份(牛市、熊市和震荡市)均亏损。优势双重不利——win_rate仅 41.6% AND avg_win(1204)< avg_loss(1608)——因此无论是调节命中率还是收益风险比都无从着手。信号触发正常(89/89 次入场,0 次被丢弃),所以这是假设层面失败,而非代码或仓位规模错误;优化只会让参数过拟合噪声。不值得投入 2 小时进行优化。
实现
仅做多的单根K线锤子线/Pinbar反转策略,在BCHUSDT.BINANCE USD-M永续合约上运行,使用4小时K线,纯OHLCV。当一根K线满足以下条件时即被认定为锤子线:实体较小(<波段范围的35%)、下影线较长(>=实体的2x)、上影线较短(<=实体的30%),且收盘于波段上半部分;仅在上升趋势中触发(收盘价 > SMA50)。calculate_signal()返回一个连续的锤子形态评分(下影线主导性与收盘位置,扣除实体/上影线惩罚,按趋势位置加权),因此信号每根K线都会变化;严格的锤子线+上升趋势触发条件存储于self._hammer_trigger中,由should_enter/position_size消费。出场:止盈、止损、趋势破位,或6根K线的时间止损。杠杆2.0(约1.2x股权名义价值)。
验证结果
验证失败(层级 2 — 合成情景): 使用的参数:['body_frac', 'upper_frac', 'wick_ratio', 'min_notional', 'position_pct', 'trend_period', 'max_hold_bars', 'stop_loss_pct', 'take_profit_pct'] 检查 __init__ 是否设置了 self.parameters.get() 中的所有属性。 - steady_uptrend:信号冻结:所有 446 信号完全相同(值=0.0)。calculate_signal() 可能存在缺陷 — 信号从未变化。 - steady_downtrend:信号冻结:所有 446 信号完全相同(值=0.0)。calculate_signal() 可能存在缺陷 — 信号从未变化。 - flat_ranging:信号冻结:所有 446 信号完全相同(值=0.0)。calculate_signal() 可能存在缺陷 — 信号从未变化。 - volatility_spike:信号冻结:所有 446 信号完全相同(值=0.0)。calculate_signal() 可能存在缺陷 — 信号从未变化。
回测评审
- 夏普
- -3.76
- 总收益率
- -38.78%
- 最大回撤
- 46.34%
- 总交易数
- 89
- 胜率
- 41.6%
- 盈利因子
- 0.53
信号正确触发:在2020-2026期间89次锤子线入场,0次被过滤(min_notional/样本数),入场诊断清晰
对于此类策略,交易数量合理——样本充足,因此负面结果具有信息意义,并非噪声
负期望:profit_factor 0.53,avg_trade_return -439,total_return -38.8%
双重不利优势:win_rate 41.6% AND avg_win(1204) < avg_loss(1608)
夏普比率 -3.76,索提诺比率 -4.36,max_drawdown 46.3% — 风险调整后表现大幅为负
在所有市场环境下,每个主要年份均亏损(2021 -25%,2022 -9%,2023 -14%)——并非市场环境造成的假象
手续费+冲击成本约占毛收益的 20%,但策略连毛收益层面都在亏损——缺少优势才是主因,成本只是次要因素
结局总结
在BCH 4小时周期上,单根K线锤子线/Pinbar反转做多策略没有任何优势——其亏损呈双重不利(胜率低AND平均盈利低于平均亏损),因此该机制在所有市场环境下于假设层面均告失败,无法通过参数调整加以挽救。
回测审查分析师给出了“放弃”的判定:信号触发正常(89/89 次入场,没有丢弃),因此这是假设层面失败,而非代码或仓位规模错误——胜率低于 -50%,且平均盈利小于平均亏损,无论是调节命中率还是收益风险比都无从着手;优化只会过拟合噪声。
在 BCHUSDT 4小时币安期货上运行的仅做多单根K线锤头线/Pinbar反转策略(杠杆 2.0x)——这是该投资组合的首个 BCH 策略,也是首个单根K线影线拒绝机制——当锤头线(实体较小、下影线较长、上影线较短、收盘位于上半区)在 50 根K线 SMA 上方形成上升趋势回调时做多。
在 2020-2026 的 89 笔交易中,该策略回报为 -38.8%,盈利因子为 0.53,胜率为 41.6%,期望收益为每笔交易 -$439,夏普比率为 -3.76,索提诺比率为 -4.36,最大回撤为 46.3%;优势双重不利(平均盈利 $1,204 < 平均亏损 $1,608),且在每个主要年份都亏损,手续费和冲击成本约占毛收益的 20%。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。