描述
RSI最常见的误区是将极端值视为事件。RSI低于30可能在下跌趋势中持续数十个交易日,而基于此买入的策略会在市场下跌期间持续加仓,只要这种状态持续下去。 此软件包需要一个转换条件:前一个 RSI 值必须位于极值区域内,而当前值必须位于极值区域外。这一条件彻底消除了重复进入故障模式,使每个信号都代表着真正的状态变化。RSI 本身采用的是 Wilder 平滑法,这是其原始定义——与某些库提供的简单平均法不同,因此在相同设置下,图表可能会存在细微的数值差异。 何时使用此功能 • 交易者必须判断超卖信号是否已达到可操作的程度。• 你需要一个反转入场点,该入场点不会在同一极端情况下触发两次。• 你正在诊断一种均值回归策略,该策略会不断追加持股,从而延续趋势。 不适合强劲趋势的工具:在较慢的时间框架内,趋势可能会使 RSI 长时间保持在超买线之上,因此永远不会触发退出信号。 本包裹特意不包含以下内容 这是一个框架版本,并非经过优化的生产版本。具体来说: • 无需设置仓位大小或止损。反转入场需要一个明确的失效位,该位由您自行定义。• 无法进行真正的背离检测。尽管名称如此,但该策略实现的是区域转换规则,而非价格/RSI波动比较。背离检测需要识别波动,这是一个独立且更为复杂的问题。• 无法调整周期或区域水平。 • 代码中没有默认阈值。scripts/rsi_zone_reversal.py 会抛出 PARAM_INCOMPLETE 异常,而不是回退到一个数值。这种静默的默认值会让你误以为自己正在运行一个校准过的系统,而实际上你运行的是别人的参数。 每一个决策边界都是一个输入。这就是整个合同。 决策合同 • 操作:条件 • 做多:前一个 RSI 值低于超卖线,当前 RSI 值等于或高于超卖线 • 平仓:前一个 RSI 值高于超买线,当前 RSI 值等于或低于超买线 • 横盘:无区域转换 响应包含 rsi_now 和 rsi_prev,因此转换(而不仅仅是级别)会在您的日志中显示。 输出方案 { "action": "long", "price": 61840.0, "rsi_now": 29.4, "rsi_prev": 27.1, "oversold": 28.0, "overbought": 72.0, "reason": "RSI recovered out of oversold (27.1 -> 29.4)" } 操作是唯一必须基于其进行分支的字段。原因字段仅供日志记录和代理向用户反馈,请勿解析。 运行它 python3 scripts/rsi_zone_reversal.py \ --params references/params-example.json \ --symbol BTC/USDT \ --interval 4h references/params-example.json 文件包含一些整数,显然是为了便于说明。它们的存在是为了确保命令能够一次性成功运行,并非因为它们本身是正确的。 进料位置状态: python3 scripts/rsi_zone_reversal.py --params my.json --state '{"avg_entry": 61250.5, "layers": 2}' 校准阈值 1. rsi_period——回溯周期。Wilder平滑法会使数值响应缓慢;较短的周期会导致RSI值在区间内不断波动,从而使区间失去意义。 2. 超卖/超买——要用数据衡量,不要猜测。计算你所关注的交易品种和时间周期内RSI的经验分布,然后将区域边界放置在能够产生实际可操作信号频率的百分位数上。对称的30/70只是一种约定俗成的方案,并非最优方案。 3. 区域值应远离 0 和 100。宽区域几乎不会产生过渡效果;非常窄的区域会在噪声上产生过渡效果。 保留最近约30%的K线。统计每个K线段中出现的信号次数——一年内触发两次的规则无法校准,纯属巧合。 已知极限 • 至少需要 rsi_period + 2 个已收盘柱才能生成任何转换信号;历史数据较少时,RSI 指标会返回平坦状态并给出诊断信息。• 更平滑的处理方式意味着第一个周期的值带有固定的种子偏差。在短时间内,这会导致 RSI 水平线发生偏移。• 没有趋势过滤器。在持续的下跌趋势中,超卖转换信号会不断触发,每次都会失效;强烈建议配合状态过滤器使用,具体操作由调用者自行决定。• 正在形成的柱线会被排除在外,因此决策不会重绘。 免责声明 这是一个用于研究和教育的决策框架。它并非投资建议、盈利声明或回测结果。加密货币衍生品可能损失超过本金。您需对您选择的参数以及您的执行人下的每一笔订单负责。