Pine script talib和pine脚本版本之间的stdev()差异
我正在尝试将一种策略从tradingview(pinescript)移植到我在nodejs中构建的框架中。 我的策略是突破布林乐队。在我的pine脚本中,我使用标准偏差实现了BBs(基本上复制了内置指标公式),如下所示:Pine script talib和pine脚本版本之间的stdev()差异,pine-script,ta-lib,Pine Script,Ta Lib,我正在尝试将一种策略从tradingview(pinescript)移植到我在nodejs中构建的框架中。 我的策略是突破布林乐队。在我的pine脚本中,我使用标准偏差实现了BBs(基本上复制了内置指标公式),如下所示: length = input(200, "BB Len", minval=1) mult = input(1.5, "BB STD", minval=0.001, maxval=50, type=input.float) basis
length = input(200, "BB Len", minval=1)
mult = input(1.5, "BB STD", minval=0.001, maxval=50, type=input.float)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper1 = basis + dev
lower1 = basis - dev
基于此,出现问题的原因有两个:
第一个原因
正如我在talib中对STDDEV函数的解释中所看到的,有三个参数,而不是pine脚本版本中的两个:
基于此,您认为有没有一种方法可以使用ta lib精确复制tradingview行为?为了消除所有疑问,您可以编写自己的函数来计算标准偏差。我也有转移到另一个平台的经验,我需要一个计算标准偏差的公式。这是我的实验结果
//@version=4
study("Standard Deviation",shorttitle="Stdev")
length = input(14)
a = sma(pow(close,2),length)
b = pow(sum(close,length),2)/pow(length,2)
c = sqrt(a - b)
plot(c,title="Stdev",color=color.red,transp=0,linewidth=5)
plot(stdev(close,length),color=color.blue)
内置函数的标准偏差值与独立计算的值相同。ta lib作为开放源代码的优势在于,您可以查看源代码并了解它的具体功能。stdev函数的源是,它引用了TA_VAR()函数,这些源是 根据我的理解,TA Lib的STDEV是一个周期
optInTimePeriod
的滚动偏差STDEV,乘以OptinBDEV
。因此,考虑到子数组的长度为optimePeriod
,该函数将为每个输入数组值生成一个stdev数组
没有pine的stddev源可供比较,但看起来您应该使用
length
作为optimePeriod
和mult
作为optInNbDev
(或者保留为1,稍后再乘以值)。并且期望得到相同的结果。结果表明,ta库中的BB函数也有偏差,因此它与pine脚本中的对应函数非常相似,也就是说,我做了一些测试,两者之间的差异可以忽略不计,比如1-2个微点子。