如何在TradingView中绘制不受品种切换影响的永久水平线?
解决TradingView品种独立永久水平线的问题
你遇到的核心问题是:用hline创建的线条属于指标的全局参数,所有品种共用同一套设置,切换品种或修改参数时,所有品种的线条都会同步变化。要实现每个品种独立保留专属水平线,可以用以下两种方案:
方案一:手动使用绘图工具(最简单)
- 点击图表顶部工具栏的「水平线」图标,直接在图表上绘制线条
- 设置好价格、颜色、样式后,右键点击线条选择「保存到图表布局」
- 每个品种单独保存对应的布局,切换品种时加载对应布局即可保留专属线条
方案二:用Pine Script v4实现品种独立的自动水平线
通过persistent参数让每个品种的价格设置独立保存,结合动态线条对象实现永久保留,脚本示例如下:
//@version=4 study("品种独立永久水平线", overlay=true) // 开启persistent,让每个品种的价格参数单独存储 price1 = input(0.4, title="水平线1价格", persistent=true) price2 = input(0.6, title="水平线2价格", persistent=true) price3 = input(1.0, title="水平线3价格", persistent=true) // 用var变量保存线条对象,避免重复创建 var line line1 = na var line line2 = na var line line3 = na // 在最后一根K线更新线条位置,确保显示正常 if barstate.islast // 初始化或更新线条1 if na(line1) line1 := line.new(bar_index-100, price1, bar_index, price1, color=color.yellow, style=line.style_dashed, width=1) else line.set_xy1(line1, bar_index-100, price1) line.set_xy2(line1, bar_index, price1) // 初始化或更新线条2 if na(line2) line2 := line.new(bar_index-100, price2, bar_index, price2, color=color.red, style=line.style_dashed, width=1) else line.set_xy1(line2, bar_index-100, price2) line.set_xy2(line2, bar_index, price2) // 初始化或更新线条3 if na(line3) line3 := line.new(bar_index-100, price3, bar_index, price3, color=color.purple, style=line.style_dashed, width=1) else line.set_xy1(line3, bar_index-100, price3) line.set_xy2(line3, bar_index, price3) plot(close)
脚本原理说明
persistent=true:让input参数为每个品种单独保存,切换品种时,不同品种的价格设置互不干扰var关键字:确保线条对象只在第一次加载时初始化,不会随K线刷新重复创建line.new和line.set_xy:动态创建并更新线条位置,保证线条始终显示在当前可视范围内
内容的提问来源于stack exchange,提问作者Alfredo Rodriguez Gomez
相关产品推荐
相关产品推荐

