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

如何在Pine Script中创建最近15个收阳K线的收盘价数组?

Pine Script 实现最近15个收阳K线收盘价数组

核心思路

要实现这个需求,关键是逐K线判断是否收阳,并将符合条件的收盘价存入数组,同时保持数组长度不超过15(超过时移除最早的记录)。Pine Script里数组操作需要注意用var关键字初始化数组,避免每根K线重复创建。

完整代码

//@version=5
indicator("最近15个收阳K线收盘价数组", overlay=true)

// 初始化空数组,用var确保只在第一根K线创建一次
var float[] upCloseArray = array.new_float()

// 每根K线判断是否收阳
isUpCandle = close > open

if isUpCandle
    // 将当前收盘价加入数组
    array.push(upCloseArray, close)
    // 如果数组长度超过15,移除最早的那个元素
    if array.size(upCloseArray) > 15
        array.shift(upCloseArray)

// 可选:在最后一根K线显示数组内容
if barstate.islast
    label.new(bar_index, high, str.tostring(upCloseArray), color=color.green, textcolor=color.white)

代码解释

  • var float[] upCloseArray = array.new_float():用var声明数组,保证只在脚本启动时初始化一次,不会每根K线重置数组内容。
  • isUpCandle = close > open:简单判断当前K线是否为收阳K线。
  • array.push(upCloseArray, close):把收阳K线的收盘价添加到数组末尾。
  • array.shift(upCloseArray):当数组长度超过15时,移除数组的第一个元素(最早的收阳收盘价),确保数组始终只保留最近15条有效记录。
  • 最后用label.new在图表最后一根K线的高位显示数组内容,方便直观查看;也可以替换成println在控制台输出。

关键说明

Pine Script是逐K线运行的,这也是它和其他一次性处理数据的语言逻辑不同的地方——你不能一次性遍历所有历史K线筛选数据,必须跟着每根K线的更新逐步维护数组,这是你觉得复杂的核心原因。如果需要调用数组里的具体元素,用array.get(upCloseArray, index)即可,比如array.get(upCloseArray, array.size(upCloseArray)-1)能拿到最近的收阳收盘价。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:47:11