首页 > 解决方案 > 如何在 pine 脚本中获取关闭数据子集的 stdev

问题描述

我是 Tradingview 的 Pine 脚本的新手,我似乎无法通过谷歌搜索找到答案。假设我想计算股票收盘价的过去 60 个值的标准差,但跳过最近的 20 个收盘价。换句话说,我想在总共 40 个数据点上计算 stdev(或其他函数),从 60 个数据点开始,而不是使用最近的 20 个数据点。我假设有某种方法可以“切片”紧密系列以获得这 40 个数据点,但我一直无法找到这一点。我该怎么做?

标签: pine-script

解决方案


//@version=4
study("Subset StdDev", overlay=true)

src                         = input(close, type=input.source)
var int         total_bars  = input(60)                             // Starting point, number of bars back
var int         datapoints  = input(40)                             // Number of datapoints from starting point to perform stddev calculation on

var float[]     a_values    = array.new_float()
var float       stddev      = na

array.push(a_values, src)                                           // add value for current bar to the end of the array

if array.size(a_values) > total_bars                                // array size > 60 ?
    array.shift(a_values)                                           // remove first element to keep array size at 60
    stddev := array.stdev(array.slice(a_values, 0, datapoints))     // calculate stddev for first 40 datapoints in the array

// plot a stddev band on the current candle, using 40 datapoints (from 60 bars ago to 20 bars ago)
plot(src + stddev)
plot(src - stddev)

推荐阅读