You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script V5中如何规避顶背离前的策略入场?

结合RSI、EMA的回调策略:顶背离限制与重置方案

核心思路

通过状态变量跟踪顶背离的有效性,配合EMA交叉事件重置状态,实现规则的闭环执行。


1. 顶背离的检测与标记

先明确多头趋势下的RSI顶背离判定逻辑:

  • 价格创出近期新高(可自行调整周期,比如近20根K线)
  • 同期RSI未创出对应新高
  • 此时EMA7位于EMA30上方(确保背离发生在多头趋势内)

用布尔变量has_unreset_divergence记录「是否存在未被重置的顶背离」,一旦检测到符合条件的顶背离,就将该变量设为true。

2. 入场限制逻辑

在你已有的入场条件(EMA7在EMA30上方+其他回调条件)基础上,额外叠加**has_unreset_divergence == false**的判断——只有当没有未重置的顶背离时,才允许入场。

3. EMA交叉的状态重置

  • 当EMA7下穿EMA30(死叉)时,说明多头趋势暂时终结,此时将has_unreset_divergence重置为false,清除之前的顶背离标记。
  • 当EMA7再次上穿EMA30(金叉)后,重新开始监测顶背离:一旦出现新的顶背离,立即将has_unreset_divergence设为true,回到规则2的入场限制。

伪代码示例(以Pine Script为例)

// 计算基础指标
ema7 = ta.ema(close, 7)
ema30 = ta.ema(close, 30)
rsi = ta.rsi(close, 14)

// 检测顶背离:近20K线内价格新高、RSI未新高、EMA7在EMA30上方
price_highest = ta.highest(close, 20) == close
rsi_highest = ta.highest(rsi, 20) == rsi
top_divergence = price_highest and not rsi_highest and ema7 > ema30

// 初始化状态变量:记录是否存在未重置的顶背离
var bool has_unreset_divergence = false

// 更新顶背离状态:出现新顶背离时标记
if top_divergence
    has_unreset_divergence := true

// EMA死叉时重置状态
if ta.crossover(ema30, ema7) // EMA7下穿EMA30
    has_unreset_divergence := false

// 最终入场条件:原有条件 + 无未重置顶背离
entry_condition = ema7 > ema30 and [你的其他回调条件] and not has_unreset_divergence

// 执行入场
if entry_condition
    strategy.entry("Long", strategy.long)

关键说明

  • 可根据交易品种调整顶背离检测的周期(比如把20改成15或25),匹配行情波动节奏。
  • 状态变量has_unreset_divergence的核心作用是「记忆」顶背离事件,直到EMA死叉触发重置,完美对应你提出的4条规则。

内容的提问来源于stack exchange,提问作者Jirakit Saramano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:32:54