如何在Pine Script中标记自上次条件以来创更高高点的K线
Pine Script 实现:标记上次触发条件后突破高点的K线
核心逻辑
要实现需求,关键是仅跟踪最近一次触发条件的高点,并筛选出该触发点之后所有高点超过此值的K线:
- 定义你的触发条件(替换示例中的自定义信号)
- 用持久化变量记录上次触发时的K线高点
- 实时判断当前K线是否在触发后且突破了记录的高点
- 标记符合条件的K线
完整代码(Pine Script v5)
//@version=5 indicator("标记触发后突破高点K线", overlay=true) // -------------------------- // 1. 替换为你的实际触发条件 // 示例:RSI低于30后向上交叉30(对应描述中的蓝色方块+箭头触发点) rsiVal = ta.rsi(close, 14) triggerCondition = ta.crossover(rsiVal, 30) and ta.lowest(rsiVal, 5) < 30 // -------------------------- // 2. 持久化存储上次触发的高点,仅在触发时更新 var float lastTriggerHigh = na if triggerCondition lastTriggerHigh = high // 3. 判断是否需要标记:触发后且高点突破上次触发的高点,排除触发K线本身 shouldMark = not na(lastTriggerHigh) and high > lastTriggerHigh and not triggerCondition // 4. 标记符合条件的K线(可自定义样式) plotshape(shouldMark, title="突破高点K线", location=location.belowbar, color=color.green, style=shape.circle, size=size.small) // 可选:标记触发点(对应描述中的蓝色方块+白色向下箭头) plotshape(triggerCondition, title="触发信号", location=location.abovebar, color=color.blue, style=shape.square, size=size.small) plotarrow(triggerCondition ? -1 : na, title="触发箭头", colordown=color.white, size=size.small)
关键细节说明
var变量的作用:var float lastTriggerHigh = na会在脚本初始化时仅创建一次,后续不会随K线刷新重置,确保始终保存的是最近一次触发的高点值- 触发条件自定义:把示例中的RSI信号替换成你实际的触发逻辑(比如特定K线形态、指标交叉等)即可适配你的需求
- 排除触发K线:
not triggerCondition确保不会把触发点本身标记为突破K线,仅标记触发后的后续K线
内容的提问来源于stack exchange,提问作者Hasanul
相关产品推荐
相关产品推荐

