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

如何获取满足摆动高低点条件的前第二根K线高低点?

摆动高低点指标警报问题

我制作了一款显示3K线形态摆动高低点的指标(摆动高点为中间K线高于两侧K线,摆动低点为中间K线低于两侧K线),已完成指标绘制(通过offset=-2将摆动点显示在正确的K线位置),但当前警报会在摆动高低点形态确认时就触发,而非价格突破该高低点时触发。需要解决的问题是:如何正确获取前第二根K线的高低点,并在后续价格突破时触发警报。

修改后的代码

//@version=5
indicator(title='摆动高低点警报', shorttitle='摆动高低点警报', overlay=true)

// 摆动点对应的K线偏移(3K线形态下,中间K线是前第二根,所以n=2)
n = input.int(title='摆动点偏移', defval=2, minval=2)

// 确认摆动高点:前n根K线(中间K线)的高点高于其左右相邻K线
upFractal = high[n-1] < high[n] and high[n+1] < high[n]
// 确认摆动低点:前n根K线(中间K线)的低点低于其左右相邻K线
dnFractal = low[n-1] > low[n] and low[n+1] > low[n]

// 在摆动点位置绘制标记(offset=-n对应前n根K线)
plotshape(upFractal, "摆动高点", shape.xcross, location.abovebar, offset=-n, color=color.new(color.red, 0))
plotshape(dnFractal, "摆动低点", shape.xcross, location.belowbar, offset=-n, color=color.new(color.red, 0))

// 存储最新的摆动高低点价格,保持值直到下一个摆动点出现
var float lastUpFractalHigh = na
lastUpFractalHigh := upFractal ? high[n] : lastUpFractalHigh

var float lastDnFractalLow = na
lastDnFractalLow := dnFractal ? low[n] : lastDnFractalLow

// 突破条件:收盘价突破存储的摆动高低点,且排除摆动点确认的那根K线
upfractalbroke = close > lastUpFractalHigh and not upFractal
dnfractalbroke = close < lastDnFractalLow and not dnFractal

// 设置警报
alertcondition(upfractalbroke, "突破摆动高点", "价格突破摆动高点")
alertcondition(dnfractalbroke, "突破摆动低点", "价格突破摆动低点")

关键修改说明

  • 正确获取前第二根K线的高低点:当n=2时,high[n]就是前第二根K线的高点,low[n]是前第二根K线的低点,对应摆动形态的中间K线价格。通过var关键字定义的变量会保留历史值,直到下一个摆动点出现时更新。
  • 调整警报触发逻辑:新增not upFractal和not dnFractal条件,避免在摆动形态确认的那根K线触发警报,仅当后续K线收盘价突破存储的摆动高低点时才触发警报。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:54:16