如何在PineScript中检测不穿透其他K线影线的开/关K线
PineScript 实现无影线穿透的K线开/收盘价检测
一、检测下一根K线的开/收盘价不穿透其他K线影线
核心逻辑是判断目标开/收盘价是否完全脱离指定周期内其他K线的影线区间(即该价格既不高于左侧K线的最低影线低点,也不低于左侧K线的最高影线高点)。以下是基于收盘价的实现代码(替换close为open即可检测开盘价):
//@version=5 indicator("无穿透影线的收盘价检测", overlay=true) // 可调整参数:回溯的K线数量 lookbackLength = input.int(20, title="回溯K线数", minval=1) // 获取指定周期内所有K线的影线极值 leftLowestLow = ta.lowest(low, lookbackLength) leftHighestHigh = ta.highest(high, lookbackLength) // 判断收盘价是否未被左侧任何K线的影线穿透 noPenetrateClose = close < leftLowestLow or close > leftHighestHigh // 标记符合条件的K线 plotshape(noPenetrateClose, title="无穿透收盘价", location=location.belowbar if close < leftLowestLow else location.abovebar, color=color.blue, style=shape.labelup, text="无穿透收")
二、检测上下方无影线穿透的开/关K线(支撑/阻力K线)
需求是识别顶部或底部的K线,其开/收盘价所在水平在指定周期内(左侧回溯+右侧前瞻)未被任何K线的影线触及,对应附图中的蓝色支撑/阻力线。以下是基于收盘价的实现代码(替换close为open即可检测开盘价):
//@version=5 indicator("上下方无穿透影线的K线检测", overlay=true) // 参数设置:回溯及前瞻的K线数量 lookbackLength = input.int(20, title="回溯K线数", minval=1) forwardLength = input.int(5, title="前瞻K线数", minval=1) // 计算左侧回溯、右侧前瞻的K线影线极值 leftLow = ta.lowest(low, lookbackLength) leftHigh = ta.highest(high, lookbackLength) rightLow = ta.lowest(low, forwardLength)[1] rightHigh = ta.highest(high, forwardLength)[1] // 检测顶部/底部无穿透K线 topKline = close > leftHigh and close > rightHigh bottomKline = close < leftLow and close < rightLow // 绘制蓝色支撑/阻力线 var line topLine = na var line bottomLine = na if topKline topLine := line.new(bar_index, close, bar_index + forwardLength, close, color=color.blue, width=2) if bottomKline bottomLine := line.new(bar_index, close, bar_index + forwardLength, close, color=color.blue, width=2) // 标记对应K线 plotshape(topKline, title="顶部无穿透K线", location=location.abovebar, color=color.red, style=shape.triangledown) plotshape(bottomKline, title="底部无穿透K线", location=location.belowbar, color=color.green, style=shape.triangleup)
内容的提问来源于stack exchange,提问作者Bruno Wego
相关产品推荐
相关产品推荐

