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

Pine Script v4转v5:指定起始K线前一根启动MIDAS指标

Pine Script v4转v5 MIDAS指标适配方案

问题原因

原v4脚本中标注的问题行start = (n==startBar-1)无法在v5运行,核心原因是v4内置变量n(代表当前K线到图表最右侧最新K线的偏移量,最新K线n=0,向左逐根K线数值+1)在v5版本中已被移除。另外v4版本的study()声明、无命名空间的颜色值在v5中也不符合语法规范。

适配逻辑

  • 用v5内置的bar_index(K线从最左侧开始从0计数的全局索引)和last_bar_index(最新K线的全局索引)计算得到和原v4n完全等价的偏移值:barOffsetFromLast = last_bar_index - bar_index,完全保留原有「用户输入N号启动K线,自动从N-1号K线触发计算」的逻辑
  • 将v4的study()替换为v5强制要求的indicator()声明
  • 将原数值类型输入input替换为v5规范的input.int,原颜色值补充color.命名空间前缀,其余计算逻辑完全保留无需修改

可直接运行的v5完整代码

//@version=5
indicator("Midas", overlay=true, shorttitle="MIDAS")

startBar = input.int(title="Starting Bar Number", minval=1, maxval=100000, defval=20)
priceType = input.int(title="calculate using 1:hl2 2:high 3:low 4:hlc3", minval=1, maxval=4, defval=1)

// 等价原v4的n判断,从用户指定启动K线的前一根开始触发计算
barOffsetFromLast = last_bar_index - bar_index
start = barOffsetFromLast == startBar - 1

p = iff (priceType==1, hl2,
            iff(priceType==2, high,
                iff(priceType==3, low, hlc3)
            )
        )

v = na(volume) ? 1 : volume

cumV = cum(v)
CumPV = cum(p*v)

startV = valuewhen(start, cumV, 0)
StartPV = valuewhen(start, CumPV, 0)

midas = (CumPV - StartPV)/(cumV - startV)

plot(midas, color=color.navy, linewidth=2)

补充说明

如果你需要的是「从图表最左侧第一根K线开始从1计数的绝对K线编号」作为启动参考(而非原脚本默认的从右往左数的偏移计数),只需要把start相关的两行替换为以下代码即可:

// 绝对K线编号模式:输入1000则从第999根K线启动计算
start = bar_index == startBar - 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:27:30