Методы 2 и 3 дают те же результаты, что и наивный al go, используемый в Pine.
С методом 3, использующим функции alexgrover здесь , вы можете использовать длину серии:
//@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
l oop:
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)