策略
未平仓合约量确认的持仓变化波段策略(BINANCE_CM 反向永续合约 BTCUSD_PERP — 仅当价格变动有 RISING 未平仓合约量上升(= 新资金坚定入场)支撑时进行方向性波段交易 ONLY;当 OI 下降、行情处于去杠杆阶段时离场观望;当 OI 从峰值回落时退出,采用 3 参数)
结局: 已放弃
BtcCmOpenInterestConfirmedSwingLS
结局总结
BtcCmOpenInterestConfirmedSwingLS 旨在利用未平仓合约量这一正交的持仓数据源,在代表性不足的 BTC COIN-M 交易场所,区分有信念支撑的变动(OI 上升,可交易)与去杠杆引发的来回波动(OI 下降,应离场观望)。三轮迭代中,策略一直受 OI 数据层问题困扰:此前一次运行在 17,442 根 K 线上零入场,因为 OI 序列未能生成或匹配,随后进行了大范围的解析器和数据陈旧性修复。最后一次迭代则在更基础的 Layer 1 配置验证中失败——instrument_id 和 bar_type 均为 None——因此策略无法实例化。该策略在验证循环中被放弃,从未生成回测、通过验证、完成优化或分析。
假设
一种LONG-SHORT、SINGLE-INSTRUMENT、SINGLE-VENUE波段策略,交易标的为BTCUSD_PERP。BINANCE_CM(COIN-M反向永续合约,BTC保证金,约0.06%RT taker费率)。信号PRIMARILY由持仓量驱动(沙盒可用、与价格正交的持仓数据),而非仅由价格驱动。核心洞见——NOT对趋势的重新推导——在于方向性价格变动的含义完全取决于持仓量是EXPANDING还是CONTRACTING。Rising-OI走势是新资金建立高确信度仓位,往往会持续;falling-OI走势是去杠杆/空头回补/止损横扫,没有新的确信资金,往往会震荡并反转。因此该策略仅在两个“rising-OI”象限中做波段,在去杠杆象限中保持FLAT,而这正是纯价格趋势系统被反复止损的地方。它有意填补三个代表性不足的类别:BINANCE_CM交易场所(3.2%对比>=5%目标)、long_short方向(13.2%对比push目标),并保持单场所单品种结构,以避免跨场所/多腿verification_loop陷阱(L44)以及期权/IV沙盒陷阱(L43)。它使用OI作为L42所要求的正交依赖,而非把纯价格趋势信号换个新指标名称包装。
verification_loop:验证失败(Layer 1 — 配置):config.instrument_id 和 config.bar_type 为 REQUIRED(实际值为 instrument_id=None、bar_type=None)。将两者都设为假设对应的交易品种,例如 instrument_id='BTCUSDT.BINANCE'、bar_type='BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL'。
验证结果
验证失败(Layer 1 — 配置):config.instrument_id 和 config.bar_type 为 REQUIRED(实际值为 instrument_id=None、bar_type=None)。将两者都设为假设对应的交易品种,例如 instrument_id='BTCUSDT.BINANCE'、bar_type='BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL'。
迭代历史
验证失败(Layer 2 — 合成情景): 使用的参数:['move_atr', 'risk_pct', 'atr_period', 'oi_lookback', '_param_bounds', 'atr_stop_mult', 'max_hold_bars', 'min_stop_frac', 'oi_change_pct', 'max_gross_frac', 'oi_rollover_pct'] 检查 __init__ 是否为 self.parameters.get() 中的所有属性赋值。 - steady_uptrend: TypeError: BtcCmOpenInterestConfirmedSwingLS._to_ns() 接受 1 个位置参数,但实际传入了 2 个(K 线时间戳:1735691280000) - steady_downtrend: TypeError: BtcCmOpenInterestConfirmedSwingLS._to_ns() 接受 1 个位置参数,但实际传入了 2 个(K 线时间戳:1735691280000) - flat_ranging: TypeError: BtcCmOpenInterestConfirmedSwingLS._to_ns() 接受 1 个位置参数,但实际传入了 2 个(K 线时间戳:1735691280000) - volatility_spike: TypeError: BtcCmOpenInterestConfirmedSwingLS._to_ns() 接受 1 个位置参数,但实际传入了 2 个(K 线时间戳:1735691280000) - zero_volume: TypeError: BtcCmOpenInterestConfirmedSwingLS._to_ns() 接受 1 个位置参数,但实际传入了 2 个(K 线时间戳:1735691280000) - price_gap: TypeError: BtcCmOpenInterestConfirmedSwingLS._to_ns() 接受 1 个位置参数,但实际传入了 2 个(K 线时间戳:1735691280000)
验证失败(Layer 3 — 沙盒回测):未产生交易 使用的 K 线类型:BTCUSD_PERP.BINANCE_CM-1-HOUR-LAST-EXTERNAL,处理 K 线数:17470 诊断:should_enter() 在评估的 17442 根 K 线上返回了 0 次方向信号 → 你的 ENTRY CONDITION 从未触发。放宽入场逻辑/阈值。 确保策略能使用给定数据和参数产生交易。
结局总结
基本配置正确是准入前提——如果 config.instrument_id/bar_type 未设置,且 Layer 1 因此拒绝该策略,那么无论信号由 OI 驱动与否(或是否存在任何优势),都不会进行评估;而多轮迭代中反复出现的 OI 数据源接入失败,表明存在数据可用性障碍,应先予以确认,再继续调整阈值。
该策略在验证循环中被放弃:最后一次迭代在 Layer 1(配置)验证中失败,因为必需的 config.instrument_id 和 config.bar_type 均为 None,因此策略甚至无法实例化,更不用说进入合成测试、沙盒回测、QA 或任何后续阶段。加上此前三轮迭代中 OI 数据问题导致的零入场,本次运行始终未能生成有效回测。
一种在BTCCOIN-M反向永续合约(BTCUSD_PERP。BINANCE_CM,1H)上的多空双向、单品种、单场所波段策略,以持仓量作为正交持仓数据来控制入场——仅当价格变动得到rising OI(新增确信资金)支撑时才做方向性波段,在falling-OI去杠杆走势期间保持空仓,当OI从峰值回落时退出,并设有ATR止损和时间上限。
没有绩效数据——该策略从未生成回测。较早的迭代在 OI 数据接入层面遇到困难(第 3 轮正在修复“should_enter 在 17,442 根 K 线上返回了 0 次方向信号”这一失败;其原因是 OI 序列未能生成/匹配),而最后一次运行更早就在 Layer 1 配置验证中失败。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。