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

Pine Script v6:var定义的UDT无法使用历史引用[1]问题咨询

Pine Script 6中var声明UDT无法使用历史引用的原因分析

在Pine Script 6里,用var声明的用户自定义类型(UDT)实例无法正常使用[1]这类历史引用,核心原因在于var关键字的特性:

  • var声明的变量是持久化单例,脚本运行全程只会初始化一次,每根K线更新时都是直接修改同一个实例的属性,不会为每根K线保留独立的历史副本。因此a[1].B访问的还是当前K线中a.B的最新值,自然和a.B相等。
  • 去掉var声明的UDT实例,会在每根K线重新初始化并赋值,Pine Script会自动为这类变量维护历史数组,每根K线的实例状态都会被保存,此时a[1].B就能正确访问上一根K线的a.B值,和bar_index[1]一致。

结合你的示例代码来看:

  • 用var a = A.new()时,a从始至终都是同一个对象,每根K线执行a.B := bar_index都是覆盖同一个属性,所以(a[1]).B和a.B结果相同。
  • 移除var后,每根K线都会生成新的A实例,Pine Script保存了每根K线的实例数据,a[1].B就对应上一根K线的bar_index,和当前bar_index不相等,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 14:03:13