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

Pine Script v5如何为每根K线存储布尔数据并访问历史?

在Pine Script v5中存储并回溯布尔数据的实现方法

当然可以,Pine Script v5的核心特性就是序列变量(Series),每根K线的计算结果会自动被存储为序列的一个元素,你可以直接通过索引回溯历史数据。以下是具体实现思路和示例:

1. 核心逻辑:用序列变量存储布尔值

不需要额外的“存储容器”,直接定义普通变量并赋值布尔条件即可。这类变量本质是序列,每根K线的计算结果会被自动保留,形成对应所有历史K线的数据集。

比如定义一个判断阴线的布尔变量:

// 判断当前K线是否为阴线
isBearish = close < open

isBearish会自动保存每根K线的判断结果,最新值对应当前K线,历史值对应过往K线。

2. 回溯查看历史布尔数据

通过**索引符号[]**可以直接访问任意历史K线的布尔值:

  • isBearish[1]:上一根K线的布尔结果
  • isBearish[3]:前3根K线的布尔结果
  • isBearish[ta.barssince(isBearish)]:最近一次满足isBearish条件的K线的结果

3. 结合OHLC数据回溯查询

如果需要获取满足布尔条件的K线对应的OHLC数据,可以用ta.valuewhen()函数,语法为:

ta.valuewhen(布尔条件, 目标数据, 偏移量)

示例:获取最近一次阴线的收盘价和开盘价

// 获取最近一次阴线的收盘价
lastBearishClose = ta.valuewhen(isBearish, close, 0)
// 获取倒数第二次阴线的开盘价
prevBearishOpen = ta.valuewhen(isBearish, open, 1)

完整示例代码

//@version=5
indicator("布尔数据存储与回溯示例", overlay=true)

// 1. 定义布尔变量:判断K线是否为阳线且涨幅超过1%
isStrongBull = close > open and (close / open - 1) > 0.01

// 2. 回溯查看前2根K线的布尔值
prev2StrongBull = isStrongBull[2]

// 3. 标记满足条件的K线:当前K线为阴线,且前2根是强势阳线
plotshape(not isStrongBull and prev2StrongBull, 
          style=shape.triangledown, 
          location=location.abovebar, 
          color=color.red, 
          size=size.small)

// 4. 获取最近一次强势阳线的最高价
lastStrongHigh = ta.valuewhen(isStrongBull, high, 0)
label.new(bar_index, low, "最近强阳高点: " + str.tostring(lastStrongHigh), 
          color=color.green, textcolor=color.white)

// 可视化布尔序列(1表示满足条件,0表示不满足)
plot(isStrongBull ? 1 : 0, title="强势阳线标记", color=color.blue, display=display.data_window)

查看历史数据的方式

  • 数据窗口:添加plot()后,在图表右侧数据窗口中可以查看每根K线对应的布尔变量数值(1/0)
  • 索引访问:直接在代码中通过[n]调用历史值,用于后续逻辑计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:33:15