如何在TradingView Pine Script中自定义图形的Y轴位置
Pine Script 实现自定义图形垂直位置
问题
我正在编写多空进场离场条件,想要在TradingView图表上根据这些条件绘制图形,但需要用自定义位置而非内置选项,尤其要调整Y轴垂直位置。试了以下代码但没成功:
var label longconditionlabel = na if longcondition longconditionlabel := label.new(bar_index, low, style = label.style_triangleup, color = color.green) label.set_y(longconditionlabel, low * 0.75) var label shortconditionlabel = na if shortcondition shortconditionlabel := label.new(bar_index, low, style = label.style_triangledown, color = color.red) label.set_y(shortconditionlabel , high * 0.75)
问题原因
var声明错误:var会让标签变量只初始化一次,后续触发条件时会修改同一个标签的位置,旧信号会被新信号覆盖,无法保留所有触发点。- 做空信号逻辑冗余且位置错误:做空信号的
label.new用low作为初始Y值,后续修改的high * 0.75可能低于当前K线低点,位置不符合预期;另外额外调用label.set_y完全多余,直接在label.new里指定Y值更高效。
修正代码
直接在创建标签时指定自定义Y轴位置,同时移除var声明以生成独立标签:
//@version=5 indicator("自定义多空信号位置", overlay=true) // 替换为你的实际多空条件 longcondition = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) shortcondition = ta.crossunder(ta.sma(close, 5), ta.sma(close, 20)) // 多单信号:在当前K线低点下方2%位置绘制向上三角 if longcondition label.new(bar_index, low * 0.98, style=label.style_triangleup, color=color.green, size=size.small) // 空单信号:在当前K线高点上方2%位置绘制向下三角 if shortcondition label.new(bar_index, high * 1.02, style=label.style_triangledown, color=color.red, size=size.small)
关键说明
- 去掉
var:每次触发条件时创建新标签,所有信号都会保留在图表上。 - 自定义位置系数:通过
low * 0.98(低点下2%)、high * 1.02(高点上2%)这类方式控制垂直位置,也可以用固定点数(比如low - 10)替代百分比,适配固定品种需求。 - 可选优化:如果担心标签重叠,可以添加
label.delete逻辑清理旧标签,或者把信号绘制在前一根K线(bar_index[1])上。
内容的提问来源于stack exchange,提问作者Krishnendu Bhattacharyya
相关产品推荐
相关产品推荐

