You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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)

问题原因

  1. var声明错误:var会让标签变量只初始化一次,后续触发条件时会修改同一个标签的位置,旧信号会被新信号覆盖,无法保留所有触发点。
  2. 做空信号逻辑冗余且位置错误:做空信号的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 10:05:18