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

如何在第20根站上SMA200的K线绘制买入标签(PineScript求助)

修正后的PineScript代码及说明

原代码的核心问题是plotshape的触发条件错误——它会在所有收盘价高于SMA200的K线上绘制标记,而非仅在连续第20根满足条件的K线处触发。

以下是修正后的代码:

//@version=5
indicator("20th Candlestick Above SMA200", overlay=true)

MA_long = ta.sma(close, 200)
var barsAboveMA = 0

// 维护连续高于SMA200的K线计数
if close > MA_long
    barsAboveMA := barsAboveMA + 1
else
    barsAboveMA := 0

// 仅在连续第20根满足条件时绘制买入标签
plotshape(barsAboveMA == 20 ? low : na, 
          style=shape.labelup, 
          color=color.green, 
          text="买入", 
          location=location.bottom, 
          size=size.normal)

关键修改点:

  • 调整plotshape触发条件为barsAboveMA == 20,确保仅在连续第20根收盘价高于SMA200时绘制标签。
  • 将shape.cross替换为shape.labelup并添加text="买入",直接显示符合需求的「买入」标签,比交叉标记更直观。

如果需要避免在连续高于的后续K线(如第21、22根)重复触发,可以额外增加前一根计数的判断:

// 仅在从19根跳转到20根时触发,避免连续绘制
plotshape(barsAboveMA == 20 and barsAboveMA[1] == 19 ? low : na, 
          style=shape.labelup, 
          color=color.green, 
          text="买入", 
          location=location.bottom, 
          size=size.normal)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:22:02