跳至正文
全部策略

策略

BTC 单资产连续连涨/连跌耗竭多空反转策略,使用 BINANCE 日线(Williams 1979 连涨/连跌反转形态、原始柱颜色序列、事件驱动)

结局: 已放弃

BtcDailyConsecutiveStreakExhaustionReversalLongShort

结局总结

该策略忠实实现了学术文献记载的连涨/连跌反转形态:在接近 20 柱极值时,对连续 5+ 根同色 BTC 日线柱进行反向交易,多空方向均可;被引用的反转频率甚至也在数据中显现(胜率 56%,做多时为 65%)。但它在结构上亏损:平均亏损约为平均盈利的两倍,导致盈利因子为 0.65、夏普比率为 -1.02、总收益为 -27.3%、回撤为 45.8%,七年中有四年为负。分析师在第二次迭代的回测审查环节放弃了该策略,结论是负向收益不对称性源于在趋势资产上逆势反转交易,无法通过调参修复;而且 50 笔交易的样本太少,只会导致过拟合,因此该策略从未进入优化或风险审查阶段。

假设

单资产连续同色K线连阳/连阴衰竭策略,适用于 BTCUSDT.BINANCE — 统计连续同色K线的数量(5+ 根阳线 = 看涨连阳;5+ 根阴线 = 看跌连阴),并在达到统计极端值时反转该连势。机制:(1) 跟踪连续同色连势:当 bar[0].close 与 bar[-1] 颜色相同时(同涨或同跌),连势计数器递增;颜色变化时重置为 1。(2) BEARISH STREAK FADE(连续上涨导致的超买):consecutive_up_streak >= streak_threshold(默认 5) AND bar[0].high >= 20_bar_high × (1 - proximity_pct)(默认 5%,接近近期高点)。当下一根K线出现 DOWN 蜡烛(收盘 < 开盘)时,入场 SHORT。(3) BULLISH STREAK FADE(连续下跌导致的超卖):consecutive_down_streak >= streak_threshold AND bar[0].low <= 20_bar_low × (1 + proximity_pct)。当下一根K线出现 UP 蜡烛时,入场 LONG。(4) FLAT 其他情况。该策略实现了 Larry Williams 1979 连势反转模式,该模式记录于《How I Made One Million Dollars... Last Year... Trading Commodities》,随后在股票市场获得统计验证(Conrad-Hameed-Niden 1994 记录了 5+ 根连续同向日后约 58% 的反转概率)。与我的 20 管道中事件驱动 BTC 模式不同。Heiken Ashi(管道中)使用 TRANSFORMED 蜡烛,要求 3+ 同色;Consecutive Streak 使用 RAW 蜡烛,最低连势为 5+ — 不同的K线输入 AND 不同的阈值。与 RSI MR(信号幅度振荡器)的区别在于 Streak 统计 DISCRETE 个颜色事件。与 Pin Bar/Climax(单根K线衰竭)的区别在于需要先出现多根K线连势。具备翻译稳健性(颜色统计与尺度无关)。单资产范围 = 不存在多资产翻译难题。有助于满足方向配额(90.7% 仅做多)。

针对 Layer-2 冻结信号故障的第 2 次迭代修复。根本原因:calculate_signal 在除罕见的完整形态 K 线(连线>=阈值 + 接近极值 + 反转蜡烛)以外的每根 K 线上都返回 0.0,因此在 steady_uptrend/下跌趋势中,所有 473 根 K 线上的信号均为 0.0。修复后返回连续走势分数 CONTINUOUS(down_streak - up_streak,再加上一个极小的收盘价位项),该分数会随任何连续走势严格递增,因此在任何趋势中的每根 K 线上都会变化;而未改变的离散入场形态现在会设置 _armed_side 标志,而不再控制返回值。should_enter 读取 _armed_side。关键的是,反向淡化出场 EXIT 已从检查信号符号(信号现在是连续值,会导致每根 K 线都反向平仓)改为检查 _armed_side(代表真正新出现的反向淡化信号),从而保留原有的出场意图。由于入场由 _armed_side 控制,且仅在 should_enter 批准后才会调用仓位规模计算,因此移除了 position_size 过时的 `signal == 0` 防护条件。止损/TP/时间止损出场、杠杆使用(权益 * position_pct * leverage)、导入项和配置均未改动,因此 Layer-1 保持静态,且已通过的连续走势机制保持不变;现在只有信号改为连续值。

连涨/连跌反转策略实现正确,学术文献引用的反转频率也确实存在(win_rate 0.56),但策略在结构上亏损:avg_loss 约为 2x avg_win(tail_ratio 0.51,profit_factor 0.65,夏普比率 -1.02,总收益 -27%,7 年中有 4 年为负)。在接近 20 柱极值时反向交易连续 5+ 根柱的连涨/连跌,是在一种会从极值处强势延续趋势的资产上逆势操作——频繁的小额反转盈利会被趋势延续带来的尾部亏损淹没(最大 -15,868,45.8% DD);日线柱上的 5% 止损无法控制反转失败后出现的 -16% 跳空日。负向收益不对称性是机制本身固有的,并非可调参数;而 50 笔交易、覆盖 6.5 年的样本(敞口 2.57%)意味着优化只会对噪声进行曲线拟合。无需花费 2 小时优化;不存在具体的代码修复,因为实现忠实于一个扣除成本后无法盈利的前提。

实现

单资产多空 同色K线连续 衰竭反转策略,适用于 BTCUSDT.BINANCE USD-M 期货日K线,仅 OHLCV(Larry Williams 1979 连阳/连阴反转)。它统计截至前一根K线的连续同色蜡烛线:当出现 5+ 根绿色蜡烛且前一根接近 20 根K线高点,同时当前为红色蜡烛时,触发 SHORT;当出现 5+ 根红色蜡烛且前一根接近 20 根K线低点,同时当前为绿色蜡烛时,触发 LONG。在 5% 止损、10% 止盈、新出现反向反转信号或 8 根K线时间止损时退出。calculate_signal 每根K线返回连续的连阳/连阴评分(down_streak - up_streak),因此信号会变化;离散入场模式通过 _armed_side 标志记录,由 should_enter 检查,反向退出也会读取 _armed_side。仓位大小 0.60 x 杠杆(2.0) = ~1.2x 权益名义金额,真实占用所配置的杠杆。

验证结果

验证失败(第 2 层——合成场景): 使用的参数:['min_notional', 'position_pct', 'max_hold_bars', 'proximity_pct', 'stop_loss_pct', 'take_profit_pct', 'extreme_lookback', 'streak_threshold'] 请检查 __init__ 是否通过 self.parameters.get() 设置了所有属性。 - steady_uptrend:信号冻结:所有 473 信号都相同(值=0.0)。calculate_signal() 可能有错误——信号从不变化。 - steady_downtrend:信号冻结:所有 473 信号都相同(值=0.0)。calculate_signal() 可能有错误——信号从不变化。

回测评审

夏普
-1.02
总收益率
-27.30%
最大回撤
45.77%
总交易数
50
胜率
56.0%
盈利因子
0.65

代码忠实实现了该假设:统计原始蜡烛图连涨/连跌,设有 20 柱极值接近度门槛,并进行多空反向交易——交易符合所述机制(做多 20 / 做空 30)。

学术前提甚至能从数据中看出来:win_rate 0.56(做多 0.65)证实了连涨/连跌后的反转频率约为 58%。

执行干净:已发出并提交 50 个入场信号,0 个因规模/最低名义金额限制被丢弃,metrics_reliable=true,没有引擎产物。

净亏损:夏普比率 -1.02,total_return -27.3%,profit_factor 0.65,单笔期望收益 -449,7 年中有 4 年为负。

收益结构完全反转:avg_loss(2,930)约为 2x avg_win(1,501),tail_ratio 0.51,return_skew -1.82——反转交易的盈利虽小,但趋势延续时的亏损巨大(最大 -15,868,45.8% 最大 DD)。

在趋势资产(BTC)上接近极值时逆势反转,结构上不利;日线柱上的 5% 止损无法在盘中保护仓位,抵御反转失败后出现的 -16% 跳空日。

6.5 年内只有 50 笔交易(敞口 2.57%)——样本太少,无法进行有意义的参数优化;参数扫描只会对噪声过拟合。

没有需要提交的代码修复——问题出在前提,而非实现。

结局总结

当收益结构完全反转时,统计上真实存在的优势(连涨/连跌后约 58% 的反转频率)毫无价值——在趋势资产(如 BTC)上接近极值时逆势反转,会产生小额盈利和灾难性的尾部亏损,日线百分比止损无法控制这些亏损;这是机制本身固有的,并非可调参数。

回测审查分析师给出了“放弃”的结论:实现忠实于设想,但该前提在结构上会亏损——在极值附近反向交易连涨/连跌,是在一种会从极值处强势延续趋势的资产上逆势操作,因此频繁的小额反转盈利会被趋势延续带来的尾部亏损淹没(最大 -15,868);而且 50 笔交易、2.57% 敞口的样本太少,优化只会对噪声进行曲线拟合。

在 BTCUSDT Binance 期货日线上运行的单资产多空连涨/连跌耗竭反转策略(杠杆 2.0x),实现了 Williams 1979 / Conrad-Hameed-Niden 形态:在接近 20 柱极值的同色柱连续出现 5+ 根后,反向交易该连涨/连跌——上涨连涨接近高点后,出现反转柱时做空;下跌连跌接近低点后,出现反转柱时做多。

约 6.5 年内共进行了 50 笔交易(做多 20 笔,做空 30 笔),收益为 -27.3%,夏普比率 -1.02,盈利因子 0.65,单笔期望收益 -449,最大回撤为 45.8%;引用的反转频率确实出现了(胜率 0.56,做多时为 0.65),但收益结构完全反转——平均亏损 2,930 约为平均盈利 1,501 的 2x 倍(尾部比率 0.51,收益偏度 -1.82)。

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