pine-script - 如何在 pine 脚本中获取关闭数据子集的 stdev
问题描述
我是 Tradingview 的 Pine 脚本的新手,我似乎无法通过谷歌搜索找到答案。假设我想计算股票收盘价的过去 60 个值的标准差,但跳过最近的 20 个收盘价。换句话说,我想在总共 40 个数据点上计算 stdev(或其他函数),从 60 个数据点开始,而不是使用最近的 20 个数据点。我假设有某种方法可以“切片”紧密系列以获得这 40 个数据点,但我一直无法找到这一点。我该怎么做?
解决方案
//@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)
推荐阅读
- ruby-on-rails - Ruby on Rails 表单与表中的 collection_check_boxes - has_and_belongs_to_many 关联
- javascript - 在渲染组件之前根据其 id 设置默认活动项
- ios - 未从 JSON Swift 获取数据
- sql - 如何从具有相同 ID 的多行中获取单行?
- html - 为不同的屏幕尺寸保留屏幕尺寸
- python - 解析来自 Boto3 Cost Explorer 客户端的 AWS Lambda Python 函数响应
- c# - 如何绑定到容器以遍历 blob
- node.js - React - 如何在编译/构建时而不是运行时运行 node_modules 包?
- rust - 是否可以检查您的系统上是否在 Rust 中定义了 C 宏?
- c++ - 为什么向量求和的 rangev3 实现比 STD 等效项慢?