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

PineScript中历史运算符与Occurrence的差异及代码效果确认

关于Pine Script中历史运算符与valuewhen参数的差异分析

这两段代码的最终效果完全一致,本质是对同一逻辑的不同写法,不存在功能差异。

核心语法与逻辑拆解

先明确两个关键语法的作用:

  • 历史运算符[n]:用于引用当前K线之前第n根K线的变量/表达式结果。比如ta.crossover(...)返回当前K线是否发生交叉,[1]就是取前一根K线的交叉状态。
  • ta.valuewhen(condition, source, occurrence):返回满足condition条件时的source值,occurrence指定取第几次符合条件的记录:0代表最近一次,1代表上一次,以此类推。

两段代码的等价性验证

  1. 第一段代码:ta.valuewhen(ta.crossover(ema1 , ema2)[1], close, 0)

    • 触发条件是前一根K线发生了ema1上穿ema2的交叉,当条件成立时,取当前K线的收盘价(occurrence=0对应最近一次满足条件的时刻,也就是当前K线)。
  2. 第二段代码:ta.valuewhen(ta.crossover(ema1 , ema2)[0], close, 1)

    • 触发条件是当前K线发生了ema1上穿ema2的交叉,occurrence=1指定取上一次满足交叉条件时的收盘价——而“上一次交叉”恰好就是前一根K线发生交叉时的收盘价,和第一段的结果完全匹配。

在Pine Script的回测或实时运行中,这两行代码输出的序列值会完全重合,因为它们最终都是在获取“前一根K线出现ema1上穿ema2交叉时的收盘价”。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:10:20