Pine Script枢轴线脚本修改:仅在价格穿越收破后绘制新线
Pine Script 枢轴线绘制逻辑修改方案
原脚本会直接绘制所有检测到的枢轴高低点连线,现在需要添加过滤条件:仅当价格收盘价穿越并收于当前枢轴高线之上时,才绘制新的枢轴高线;仅当价格收盘价穿越并收于当前枢轴低线之下时,才绘制新的枢轴低线。
修改思路
- 用
var变量持续跟踪当前有效的枢轴高/低点(初始值设为第一个检测到的枢轴点) - 当新的枢轴高/低点出现时,通过
ta.crossover()/ta.crossunder()判断收盘价是否突破当前有效线 - 仅满足突破条件时,才更新有效枢轴点并绘制连线
修改后的完整代码
//@version=5 indicator(title='Pivot Lines (Filtered)', overlay=true) leftBars = input(5, title='左侧K线数') rightBars = input(5, title='右侧K线数') // 检测原始枢轴高低点(延迟1根K线确认) rawPivotHigh = ta.pivothigh(leftBars, rightBars)[1] rawPivotLow = ta.pivotlow(leftBars, rightBars)[1] // 初始化并跟踪有效枢轴高/低点 var float validPivotHigh = na var float validPivotLow = na // 处理枢轴高点逻辑:收盘价突破当前有效高点时,更新有效高点 if not na(rawPivotHigh) if na(validPivotHigh) // 第一个枢轴高点直接生效 validPivotHigh := rawPivotHigh else // 收盘价穿越并收于当前有效枢轴高线之上 if ta.crossover(close, validPivotHigh) validPivotHigh := rawPivotHigh // 处理枢轴低点逻辑:收盘价突破当前有效低点时,更新有效低点 if not na(rawPivotLow) if na(validPivotLow) // 第一个枢轴低点直接生效 validPivotLow := rawPivotLow else // 收盘价穿越并收于当前有效枢轴低线之下 if ta.crossunder(close, validPivotLow) validPivotLow := rawPivotLow // 绘制过滤后的枢轴线 r1 = plot(validPivotHigh, color=ta.change(validPivotHigh) ? na : #FF0000, linewidth=1, offset=-(rightBars + 1), title='过滤后枢轴高') s1 = plot(validPivotLow, color=ta.change(validPivotLow) ? na : #233dee, linewidth=1, offset=-(rightBars + 1), title='过滤后枢轴低')
关键代码说明
var关键字确保变量在脚本运行期间保持值,不会随K线重置ta.crossover(close, validPivotHigh):判断收盘价是否从下往上穿越当前有效枢轴高线ta.crossunder(close, validPivotLow):判断收盘价是否从上往下穿越当前有效枢轴低线- 初始状态下(无有效枢轴点时),第一个检测到的枢轴点直接生效,保证脚本能正常启动
内容的提问来源于stack exchange,提问作者Kevin.G
相关产品推荐
相关产品推荐

