描述
“价格突破了区间高点”这句话并不完整。它没有说明是否存在区间震荡——在波动剧烈的市场中,每隔几根K线就会出现一根宽K线突破前一个高点的情况——也没有说明是否有人参与其中。 此软件包需要同时满足这两个条件。突破前的窗口必须相对于其中点足够窄,且突破柱的成交量必须超过该窗口平均成交量指定的倍数。这两个测试都是无量纲的,因此只需一个校准后的组合即可适用于所有交易品种。每次调用(包括失败调用)都会输出窗口的窄度和成交量比率,因此即使策略从未触发,也可以进行诊断,而无需猜测。 何时使用此功能 • 交易者必须判断区间突破是否有参与支撑。• 你正在调试一个在震荡行情中持续触发的突破策略。• 你需要一个无量纲的紧致度指标,以便在不同交易品种间进行比较。 在新闻驱动的缺口中,其优势会大大降低,因为区间和成交量条件都已满足,但行情已经完成。 本包裹特意不包含以下内容 这是一个框架版本,并非经过优化的生产版本。具体来说: • 无需设置仓位大小、止损或止盈。突破入场需要同时设置这三项。• 无需多窗口扫描。一个窗口,一次决策。• 无需调整K线数量、成交量倍数或突破百分比。 • 代码中没有默认阈值。scripts/range_breakout.py 会抛出 PARAM_INCOMPLETE 异常,而不是回退到一个数值。这种静默的默认值会让你误以为自己正在运行一个经过校准的系统,而实际上你运行的是别人的参数。 每一个决策边界都是一个输入。这就是整个合同。 决策合同 • 操作:条件 • 多头:倒数第二根K线之前的n根K线收窄,且最后一根K线的收盘价超过其最高价的breakout_pct倍数,成交量也突破了倍数限制。 • 平头:任何条件均不满足;failed_on 表示哪些条件不满足。 响应包含 range_high、range_low、tightness、volume_ratio 和 failed_on 参数。当信号有效时,failed_on 为空。 输出方案 { "action": "flat", "price": 63110.0, "range_high": 62980.0, "range_low": 62400.0, "tightness": 0.00921, "volume_ratio": 1.31, "failed_on": "volume", "reason": "broke the range but relative volume 1.31 < 1.60" } 操作是唯一必须基于其进行分支的字段。原因字段仅供日志记录和代理向用户反馈,请勿解析。 运行它 python3 scripts/range_breakout.py \ --params references/params-example.json \ --symbol BTC/USDT \ --interval 1h references/params-example.json 文件包含一些整数,显然是为了便于说明。它们的存在是为了确保命令能够一次性成功运行,并非因为它们本身是正确的。 进料位置状态: python3 scripts/range_breakout.py --params my.json --state '{"avg_entry": 61250.5, "layers": 2}' 校准阈值 1. 盘整柱长度(consolidation_bars)——底部周期的长度。较长的窗口可以发现更罕见、更有意义的波动区间;较短的窗口则将该规则转化为动量过滤器。以 1 小时为间隔,24 根柱线大致相当于一天,这是一个合理的初始假设,需要进行验证,而非推荐做法。 2. volume_ratio - 首先测量相对体积的经验分布。根据定义,中位数为 1.0,因此接近 1.0 的倍数几乎没有意义。 3. breakout_pct - 突破区间高点后的决断程度。应以K线区间为基准,而非整数;小于K线波动幅度的突破不能算作有效突破。 这三者相互影响:更窄的波动范围需要更小的突破百分比才有意义。将它们放在一起进行网格分析,然后保留最近约 30% 的时间块,并在判断收益之前检查每个时间段内的信号计数。 已知极限 • 紧缩度仅在突破前窗口进行测量,因此,即使价格区间在突破前扩大,其紧缩度仍以其平静阶段为准。• 成交量取自与突破点相同的K线。如果数据源仅报告形成K线的部分成交量,则实际成交量会偏低——本模块会剔除形成K线,但其前一根K线在某些API中可能仍然不完整。• 该规则仅适用于做多。对称突破机制尚未实现。• 不处理缺口:高于区间的大幅开盘价同时满足两个条件。 免责声明 这是一个用于研究和教育的决策框架。它并非投资建议、盈利声明或回测结果。加密货币衍生品可能损失超过本金。您需对您选择的参数以及您的执行人下的每一笔订单负责。