pine-script - 计算松树系列中最后N个元素的标准偏差
问题描述
尝试计算下一个系列的最后5个元素的标准差是我从TradingView官方的ADX实现中复制的实现
//@version=4
study(title="DMI movement out of 2SD in last 10 points", shorttitle="StrategyX", format=format.price, precision=4, resolution="")
lensig = input(14, title="ADX Smoothing", minval=1, maxval=50)
len = input(14, minval=1, title="DI Length")
up = change(high)
down = -change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / trur)
minus = fixnan(100 * rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
我试图做的是获得最新的 5 plus (DMI+) 数据点的标准偏差,我尝试了多种方法..
- 创建一个数组,然后将数据点一个一个推入
但结果我无法从该plus
系列中获得数据点。它应该返回一个变量(倒数第五个元素)而不是另一个系列(根据官方文档:https://www.tradingview.com/pine-script-reference/v4/#op_[])
plus[5] // do not understand why it is still a series but not a float
- 将系列转换为数组,然后
reverse
执行slice
再次失败,因为无法将系列转换为数组
任何帮助将不胜感激:祈祷谢谢
解决方案
您是否尝试过内置stdev
功能?
plus2StDev = 2 * stdev(plus, 5)
plot(plus2StDev)
但结果我不能从 plus 系列中获取数据点
可能是在运行时的早期阶段,数据还不存在,例如在第一个栏上没有plus系列的过去值。您可以使用nz
功能安全地访问系列历史数据 - nz(plus[5])
。
tradingview 用户 alexgrover 共享的自定义 stdev 函数:
f_stdev(src, length) => length == 1 ? 0 : sqrt(sma(pow(src, 2), length) - pow(sma(src, length), 2))
plus2StDev = 2 * f_stdev(plus, 5)
plot(plus2StDev)
推荐阅读
- ios - UIButton不在两个图像之间切换Swift 4.2
- reactjs - Picker React Native 的样式
- php - $request-> 文件返回 null - Laravel
- ios - 如何在 iOS 文件系统中存储来自 UnsafeMutablePointer 的数据
- android - Android FolioReader 解密 HTML 内容
- angularjs - 使用angularjs拦截器实时向厂外发送数据
- php - 为什么 ?消息:未定义的属性:stdClass::$nik
- javascript - 从未定义的任务:从 gulpV3 迁移到 gulpV4
- magento - 在每个子类别的产品之后添加静态块
- java - 使用 box-api 进度监听器