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

如何以事件为回溯期对比当前与前序事件的HH和LL

基于前序事件回溯的高低点对比实现(Pine Script)

想要对比当前事件区间的**最高高点(HH)**和前序事件区间的最高高点,但现有方案只能按固定K线根数回溯,没法精准以事件节点划分区间?给你改个能实现的版本:

问题出在哪

你原来的代码里,ta.barssince(signalLong[1])只会盯着上一次多单信号的位置,没法对应前序的任意事件(不管多空),所以区间划分不准。要实现按事件节点回溯,得把每次事件触发的K线位置记下来,动态计算区间范围。

修正后的代码

// 初始化变量:存事件触发的K线索引、各区间高低点
var int lastEventBar = na
var float prevHH = 0.0
var float currHH = 0.0
var float prevLL = 0.0
var float currLL = 0.0

// 新事件触发时,更新前序区间数据,初始化当前区间
if signalLong or signalShort
    // 把当前区间的高低点转成前序数据
    prevHH := currHH
    prevLL := currLL
    // 首次触发用当前K线数据,之后取前序事件到当前的区间极值
    currHH := na(lastEventBar) ? high : ta.highest(high, bar_index - lastEventBar + 1)
    currLL := na(lastEventBar) ? low : ta.lowest(low, bar_index - lastEventBar + 1)
    // 更新当前事件的K线位置
    lastEventBar := bar_index

// 事件触发后,后续每根K线实时更新当前区间的高低点
if not na(lastEventBar)
    currHH := ta.max(currHH, high)
    currLL := ta.min(currLL, low)

// 举个对比例子:当前区间HH超过前序时标记
plotshape(currHH > prevHH and not na(prevHH), title="HH突破", location=location.belowbar, color=color.green, style=shape.labelup, text="HH突破")

关键逻辑说明

  • 用lastEventBar记录上一次事件触发的K线位置,每次新事件来的时候,通过bar_index - lastEventBar + 1算出两个事件之间的K线数,精准提取这段区间的高低点作为前序数据。
  • 事件触发后,后续每根K线都会更新当前区间的currHH和currLL,保证是区间内的真实最高/最低点。
  • 直接用currHH > prevHH就能对比当前和前序事件区间的最高高点,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:50:26