#pine-script
Вопрос:
Я новичок в скрипте Tradingview Pine и, похоже, не могу найти ответ, погуглив. Предположим, я хочу вычислить стандартное отклонение, скажем, последних 60 значений цены закрытия акции, но пропустить последние 20 цен закрытия. Другими словами, я хочу вычислить stdev (или какую-либо другую функцию) в общей сложности из 40 точек данных, начиная с 60 точек данных назад и не используя самые последние 20 точек. Я предполагаю, что есть какой-то способ «нарезать» близкие ряды, чтобы получить эти 40 точек данных, но я не смог этого найти. Как бы я это сделал?
Ответ №1:
//@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)