Я пытаюсь определить самые высокие свечи и сохранить разницу между открытием и закрытием для последних 10 вхождений этих свечей в массив, а затем получить среднее значение массива. Однако у меня возникли некоторые проблемы, поскольку значения nan хранятся в массиве, поэтому я получаю неправильные результаты.
highestHigh = highest(high, 20)
is_high = high >= highestHigh
var float[] HHarray = array.new_float(10) // Array size 10 i.e last 10 candles
if is_high
array.push(HHarray, (close-open))
ArrayAverage = array.sum(HHarray) / array.size (HHarray)
Любая идея, как это можно исправить? Кроме того, есть ли способ просмотреть все значения, хранящиеся в массиве?
Спасибо.
У вас другая проблема. Параметр size определяет начальный размер, а не максимальный. Смотрите ссылку здесь.
Таким образом, вы инициализируете массив 10 значениями na и просто добавляете в него остальные.
Четвертый пример tradeview в документации даже решает вашу проблему. Код скопирован с некоторыми изменениями для вас:
//@version=5
indicator("array.new<float> example")
length = 10
var a = array.new<float>(length, close)
if array.size(a) == length and is_high
array.remove(a, 0)
array.push(a, close-open)
// ...