我正在学习使用R的技术交易能力与技术交易规则(TTR)包。假设加密投资组合和BTC作为参考货币。使用cryptocompare.com API收集历史小时数据(60个周期)并转换为zoo
个对象。目的是为每个加密创建一个14周期的RSI(并且可能在一个画布中可视化)。对于每个加密,我希望RSI输出为14 NA
,然后是46个计算值。但我得到了360输出。我在这里缺少什么?
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()
}
此外,我的时间序列数据采用以下形式(第一列时间戳):
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
TTR是否使用更传统的OHLC(开放,高,低,收盘)?
答案 0 :(得分:3)
RSI()
函数需要一个单变量的价格序列。你传递了一个有6列的对象,所以它将它转换为单变量向量。您需要对read.zoo()
的输出进行子集化,以便只将"close"
列传递给RSI()
。