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

Pine Script 5自定义函数中序列upper[1]的历史值疑问

Pine Script 5中upper[1]的取值逻辑解析

先拆解这段代码的执行逻辑,搞清楚upper[1]的实际取值:

  • Pine Script的逐bar执行特性:自定义函数会在每一根K线(bar)上依次运行,序列变量的历史值会被自动保留,供后续K线调用。
  • 初始化与赋值的区别:
    • upper = 0. 只是给当前正在计算的K线的upper设置一个临时初始值,并非把所有历史K线的upper都设为0。
    • 紧接着的upper :=是赋值更新语句,会用计算结果覆盖当前K线的upper临时值,这个最终值会被保存为历史数据,供下一根K线的upper[1]调用。
  • 不同阶段的upper[1]取值:
    • 第一根K线运行时:upper[1]是na(不存在前一根K线的数据),此时三元表达式会直接取up作为当前K线upper的最终值。
    • 从第二根K线开始:upper[1]指的是上一根K线经过upper :=计算后的最终值,完全不是初始的0。

举个直观的流程例子:

  1. 第一根K线:最终upper值等于当前的up,这个值会被存为历史数据。
  2. 第二根K线:upper[1]就是第一根K线算出的up值,之后根据src[1] < upper[1]的判断,要么取当前up,要么取当前up和upper[1]的最小值作为当前upper的最终值。
  3. 第三根K线:upper[1]则是第二根K线算出的最终upper值,以此类推。

结论:upper[1]不是固定的0,它是上一根K线经过完整计算后得到的upper最终值,仅第一根K线的upper[1]为na,后续均为历史计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:02:20