Moazzem Hossen
Moazzem Hossen

Reputation: 2516

RSI outputs in Technical Trading Rules (TTR) package

I'm learning to use R's capability in technical trading with Technical Trading Rules (TTR) package. Assume a crypto portfolio and BTC its reference currency. Historical hourly data (60 period) is collected using cryptocompare.com API and converted to zoo object. The aim is to create a 14-period RSI for each crypto (and possibly visualize all in one canvas). For each crypto, I expect RSI output to be 14 NA followed by 46 calculated values. But I'm getting 360 outputs. What am I missing here?

require(jsonlite)
require(dplyr)
require(TTR)

portfolio <- c("ETH", "XMR", "IOT")

for(i in 1:length(portfolio)) {
  hour_data <- fromJSON(paste0("https://min-api.cryptocompare.com/data/histohour?fsym=", portfolio[i], "&tsym=BTC&limit=60", collapse = ""))
  read.zoo(hour_data$Data) %>%
    RSI(n = 14) %>%
    print()
}

Also, my time series data is in the following form (first column timestamp):

            close   high    low   open volumefrom  volumeto
1506031200 261.20 264.97 259.78 262.74    4427.84 1162501.8
1506034800 258.80 261.20 255.68 261.20    2841.67  735725.4

Does TTR use more conventional OHLC (open, high, low, close) order?

Upvotes: 1

Views: 402

Answers (1)

Joshua Ulrich
Joshua Ulrich

Reputation: 176688

The RSI() function expects a univariate price series. You passed it an object with 6 columns, so it converted that to a univariate vector. You need to subset the output of read.zoo() so that only the "close" column is passed to RSI().

Upvotes: 3

Related Questions