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

如何使上周高点指标仅在红色K线显示?高效添加多线方法

Pine Script 指标优化问题解答

问题1:设置指标仅在红色K线处显示

红色K线的判断逻辑是当前K线收盘价低于开盘价(close < open),我们可以通过以下方式控制指标线和标注的显示:

修改指标线绘制代码

在plot()函数中用三元运算符做判断,仅当K线为红色时显示上周高点,否则返回na(不绘制线条):

// 获取上周高点
previousWhigh = request.security(syminfo.tickerid, 'W', high[1])
// 仅红K显示指标线
plot(close < open ? previousWhigh : na, style=plot.style_line, title="Last Week's High", color=#f018c1, linewidth=2, trackprice=true, offset=k)

修改标注代码

给label.new()加上条件判断,仅在红色K线时创建标注,同时保留旧标注的删除逻辑:

// 仅红K创建标注
if close < open
    pwh = label.new(x=time+td, y=previousWhigh, text="Last Week's High", xloc=xloc.bar_time, style=label.style_none, textcolor=#f018c1, size=size.normal, textalign=text.align_right)
// 删除上一根K线的标注
label.delete(pwh[1])

问题2:高效添加多条指标线的方法

不用重复复制代码,封装自定义函数是最高效的方案。把获取周期数据、绘制线条、创建标注的逻辑打包成一个函数,通过传入不同参数(周期、价格类型、颜色、文本)就能快速生成多条指标线。

示例代码

// 封装通用的周期高低点绘制函数
drawPeriodLevel(period, priceType, lineColor, labelText) =>
    // 获取指定周期的目标价格(取上一个周期的数值)
    levelPrice = request.security(syminfo.tickerid, period, priceType[1])
    // 仅红K显示指标线
    plot(close < open ? levelPrice : na, style=plot.style_line, title=labelText, color=lineColor, linewidth=2, trackprice=true, offset=k)
    // 仅红K创建标注
    if close < open
        lbl = label.new(x=time+td, y=levelPrice, text=labelText, xloc=xloc.bar_time, style=label.style_none, textcolor=lineColor, size=size.normal, textalign=text.align_right)
    label.delete(lbl[1])

// 调用函数生成多条指标线
drawPeriodLevel('W', high, #f018c1, "Last Week's High")
drawPeriodLevel('W', low, #18f0c1, "Last Week's Low")
drawPeriodLevel('M', high, #f0c118, "Last Month's High")

这样只需调用函数并传入不同参数,就能快速添加任意数量的周期高低点指标线,代码简洁且易维护。

内容的提问来源于stack exchange,提问作者SomeGuy74

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:40:30