方法 2 和 3 产生的结果与 Pine 中使用的朴素算法相同。
使用 alexgrover 的函数 here 的方法 3,您可以使用序列长度:
//@version=4
study("StDev")
period = input(20)
// ————— 1
mid = sma(close, period)
sigma = sqrt(sum(pow(close - mid, 2), period)/period)
// ————— 2
f_stdev(src,p) => p == 1 ? 0 : sqrt(sma(src*src,p) - pow(sma(src,p),2))
// ————— 3
Sma(src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0)
Stdev(src,p) => p == 1 ? 0 : sqrt(Sma(src*src,p) - pow(Sma(src,p),2))
plot(sigma, "1", color.fuchsia)
plot(f_stdev(close, period), "2", color.blue, 16, transp = 80)
plot(Stdev(close, period), "3", color.blue, 8, transp = 60)
plot(stdev(close, period), "4", color.gray, 2, transp = 0)
你的在这里是紫红色的:
[编辑:2020.02.22 21:29 — LucF]
按照自己的方式进行操作需要for 循环:
mean = sma(close, period)
sum = 0.0
for i=0 to period-1
sum := sum + pow(nz(close[i]) - mean, 2)
sigma = sqrt(sum / period)