Почему вывод RSI ta-lib отличается в зависимости от размера входного массива, а период всегда равен 14?

Я использую привязку талиба для узла в своем проекте, чтобы рассчитать RSI на основе потока свечей веб-сокета Binance.

Я хотел бы максимально синхронизировать свой вывод RSI с тем, что показывает индикатор RSI Binance, но, что интересно, для периода по умолчанию 14 я получаю другой вывод RSI для входных массивов разного размера. Например:

      //Chart interval 1 min in both cases

console.log(`records length: ${this.records.length}`); // length: 14
const outReal = talib.RSI(this.records, 'Close');

console.log(outReal) // ouputs: 56

------

console.log(`records length: ${this.records.length}`); // length: 70
const outReal = talib.RSI(this.records, 'Close');

console.log(outReal) // ouputs: 21

Я запутался, с периодом, установленным на 14 (по умолчанию), разве RSI не должен учитывать только последние 14 свечей (интервал графика 1 мин)?

Что касается синхронизации моего вывода с RSI Binance. Единственный способ, которым я мог синхронизировать эти два, заключался в усечении входного массива ровно до 14 элементов, теперь два выхода действительно близки, но не согласованы.

Спасибо!

1 ответ

Решение

RSI - индикатор, основанный на скользящем окне. Timeperiod - это размер этого окна. RSI следующего дня зависит от значения RSI предыдущего дня. Если длина ваших данных составляет 14, талиб должен возвращать массив размером 1 или массив размером 14 с 13 NaN и 1 значимым значением (зависит от реализации вашей привязки). Если длина ваших данных 70, то Talib должен вернуть массив с как минимум 56 значениями RSI за последние 56 дней. Вероятно, привязка узла возвращает только значение последнего дня, что было бы странно, или вы сделали что-то не так - возвращаемые значения должны быть массивами.

Будет ли RSI, рассчитанный за последние 14 дней, равняться последнему RSI данных за 70 дней? Нет. Bcs RSI следующего дня зависит от RSI предыдущего дня, он знает не только 14-дневные, но и данные ранее. Он влияет на значение RSI с определенными весами, которые уменьшаются до 0 (экспоненциальное сглаживание). Итак, чтобы синхронизировать свой RSI с RSI Binance, вам лучше узнать, когда они начали расчет RSI - это может быть начало года или даже начало исторических данных. И если вы не можете начать расчет RSI с их отправной точки, чтобы точно воспроизвести их результаты, вы можете взять достаточно большие данные в надежде, что, хотя RSI будет отличаться от RSI Binance в начале этих данных, его значение будет сходиться со значением RSI Binance. в течение дней в конце этих данных, поскольку влияние старых данных уменьшается для новых RSI.

Другие вопросы по тегам