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

如何在PineScript中获取过去365天的每日收盘价?

获取过去365天每个交易日收盘价的实现方案

你使用ta.sma(close, 365)得到的是最近365根K线的简单移动平均值,而非原始收盘价数据。要获取过去365天内每个交易日的收盘价,需要通过数据存储的方式实现,以下以Pine Script(TradingView)为例给出具体方案:

核心思路

通过数组存储每日收盘价,并实时清理超出365天范围的旧数据,确保数组内始终保留目标时间区间内的所有交易日收盘价。

代码实现

//@version=5
indicator("过去365天收盘价收集", overlay=false)

// 目标天数
target_days = 365

// 初始化数组,用于存储收盘价
var float[] daily_closes = array.new_float()

// 计算365天前的时间戳(1天 = 86400000毫秒)
target_timestamp = time - target_days * 86400000

// 每根新K线触发时,更新数组
if barstate.isnew
    // 将当前收盘价加入数组
    array.push(daily_closes, close)
    // 移除早于目标时间的旧数据
    while array.size(daily_closes) > 0 and time[array.size(daily_closes)-1] < target_timestamp
        array.remove(daily_closes, 0)

// 最后一根K线时,在图表上显示数组内容(可在数据窗口查看详细数据)
if barstate.islast
    label.new(bar_index, high, str.tostring(daily_closes), color=color.blue, textcolor=color.white)

代码说明

  • var float[] daily_closes = array.new_float():用var声明数组,确保脚本运行时仅初始化一次
  • target_timestamp:计算365天前的时间节点,用于过滤旧数据
  • barstate.isnew:确保每根K线仅执行一次数据更新操作,避免重复计算
  • while循环:持续移除数组中早于目标时间的收盘价,保证数组内数据始终是过去365天的交易日收盘价

注意事项

  • 如果使用非日线时间框架(如小时线),需要调整时间戳的计算逻辑,先统计365天对应的K线数量,或通过日期判断来过滤数据
  • 数组内的收盘价可以用于后续的自定义计算(如手动计算平均值、统计分布等)

内容的提问来源于stack exchange,提问作者Alexandre César Barbosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:22:12