R - 日内数据的 quantstrat CSV 导入
R - quantstrat CSV import for intra-day data
我第一次尝试将数据导入 R 以在 R 包中使用 quantstrat
。请看以下内容:
fn1 <- "fgbl_formatted_vpoc_prior_week.txt"
> fn1
> dat <- read.table(file=fn1,sep=",",header=T,as.is=T)
> dat
Timestamp Open High Low Last Volume
1 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
2 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
3 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
4 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
5 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748
有人可以展示如何以适合 quantstrat
的格式和我认为是 POSIXct 的正确 date/time 格式获取此文件。我正在努力寻找任何说明如何导入此类数据的文档。
您希望时间采用 POSIXct 格式是正确的。 Quantstrat 使用 xts
个对象,您需要创建这些对象。您没有提供易于重现的代码,因此此处的第一段代码会生成您的数据:
library(xts)
data <- "
1 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
2 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
3 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
4 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
5 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748"
dat <- read.table(text = data,
col.names = c("num", "date", "time", "Open" , "High", "Low", "Last", "Volume"))
dat <- cbind("Timestamp" = paste(dat$date, dat$time), dat)
# Make dat look just like your example when loaded in R:
dat[, c("num", "date", "time")] <- NULL
# Now have your object, which would be a data.frame:
dat
# Timestamp Open High Low Last Volume
# 1 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
# 2 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
# 3 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
# 4 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
# 5 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748
posix_times <- as.POSIXct(dat[, 1])
x_dat <- xts(x = dat[, 2:NCOL(dat)], order.by = posix_times)
> x_dat
# Open High Low Last Volume
# 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
# 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
# 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
# 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
# 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748
> class(x_dat)
#[1] "xts" "zoo"
x_dat
是您可以在 quantstrat
.
中使用的内容
PS:
如果您遵循 http://www.r-programming.org/papers
或 datacamp 的(非免费 =( ) quantstrat 课程这样的好资源:https://www.datacamp.com/courses/financial-trading-in-r
根本不需要转换为POSIXct。使用 read.zoo
而不是 read.table
导入文件。假设 dat
是您示例中的数据框
> class(dat)
[1] "data.frame"
> dat
Timestamp Open High Low Last Volume
1 2016-09-27 02:00 165.50 165.58 165.46 165.47 2001
2 2016-09-27 03:00 165.47 165.65 165.46 165.63 1345
3 2016-09-27 04:00 165.64 165.92 165.59 165.91 1241
4 2016-09-27 05:00 165.91 166.13 165.91 165.97 880
5 2016-09-27 06:00 165.98 165.98 165.76 165.78 748
只需要:
> dat <- as.xts(read.zoo(dat))
检查class
:
> class(dat)
[1] "xts" "zoo"
因此,要返回到您的文本文件,您只需将其导入为“xts 对象”即可:
dat <- as.xts(read.zoo("yourFileName.txt", 您的文件需要参数)
列名是否区分大小写?
因为我注意到 quantmod 的 chartSeries()
不喜欢
colnames(my_data) <- c('Open', 'High', 'Low', 'Close', 'Volume', 'Oi')
它们必须是小写字母,例如:
> class(my_data)
[1] "xts" "zoo"
> tail(my_data)
open high low close volume oi
2016-12-30 10:00:00 2233.50 2234.50 2228.00 2229.25 71515 743254
2016-12-30 10:30:00 2229.25 2234.75 2228.75 2233.75 74937 818191
2016-12-30 11:00:00 2233.75 2235.75 2229.25 2235.00 180772 998981
2016-12-30 11:30:00 2234.75 2237.50 2233.75 2234.75 245717 1244735
2016-12-30 12:00:00 2234.50 2235.25 2233.00 2233.75 6565 1251318
2016-12-30 12:30:00 2233.50 2234.00 2233.25 2233.50 686 1252004
我第一次尝试将数据导入 R 以在 R 包中使用 quantstrat
。请看以下内容:
fn1 <- "fgbl_formatted_vpoc_prior_week.txt"
> fn1
> dat <- read.table(file=fn1,sep=",",header=T,as.is=T)
> dat
Timestamp Open High Low Last Volume
1 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
2 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
3 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
4 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
5 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748
有人可以展示如何以适合 quantstrat
的格式和我认为是 POSIXct 的正确 date/time 格式获取此文件。我正在努力寻找任何说明如何导入此类数据的文档。
您希望时间采用 POSIXct 格式是正确的。 Quantstrat 使用 xts
个对象,您需要创建这些对象。您没有提供易于重现的代码,因此此处的第一段代码会生成您的数据:
library(xts)
data <- "
1 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
2 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
3 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
4 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
5 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748"
dat <- read.table(text = data,
col.names = c("num", "date", "time", "Open" , "High", "Low", "Last", "Volume"))
dat <- cbind("Timestamp" = paste(dat$date, dat$time), dat)
# Make dat look just like your example when loaded in R:
dat[, c("num", "date", "time")] <- NULL
# Now have your object, which would be a data.frame:
dat
# Timestamp Open High Low Last Volume
# 1 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
# 2 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
# 3 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
# 4 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
# 5 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748
posix_times <- as.POSIXct(dat[, 1])
x_dat <- xts(x = dat[, 2:NCOL(dat)], order.by = posix_times)
> x_dat
# Open High Low Last Volume
# 2016-09-27 02:00:00 165.50 165.58 165.46 165.47 2001
# 2016-09-27 03:00:00 165.47 165.65 165.46 165.63 1345
# 2016-09-27 04:00:00 165.64 165.92 165.59 165.91 1241
# 2016-09-27 05:00:00 165.91 166.13 165.91 165.97 880
# 2016-09-27 06:00:00 165.98 165.98 165.76 165.78 748
> class(x_dat)
#[1] "xts" "zoo"
x_dat
是您可以在 quantstrat
.
PS:
如果您遵循 http://www.r-programming.org/papers
或 datacamp 的(非免费 =( ) quantstrat 课程这样的好资源:https://www.datacamp.com/courses/financial-trading-in-r
根本不需要转换为POSIXct。使用 read.zoo
而不是 read.table
导入文件。假设 dat
是您示例中的数据框
> class(dat)
[1] "data.frame"
> dat
Timestamp Open High Low Last Volume
1 2016-09-27 02:00 165.50 165.58 165.46 165.47 2001
2 2016-09-27 03:00 165.47 165.65 165.46 165.63 1345
3 2016-09-27 04:00 165.64 165.92 165.59 165.91 1241
4 2016-09-27 05:00 165.91 166.13 165.91 165.97 880
5 2016-09-27 06:00 165.98 165.98 165.76 165.78 748
只需要:
> dat <- as.xts(read.zoo(dat))
检查class
:
> class(dat)
[1] "xts" "zoo"
因此,要返回到您的文本文件,您只需将其导入为“xts 对象”即可:
dat <- as.xts(read.zoo("yourFileName.txt", 您的文件需要参数)
列名是否区分大小写?
因为我注意到 quantmod 的 chartSeries()
不喜欢
colnames(my_data) <- c('Open', 'High', 'Low', 'Close', 'Volume', 'Oi')
它们必须是小写字母,例如:
> class(my_data)
[1] "xts" "zoo"
> tail(my_data)
open high low close volume oi
2016-12-30 10:00:00 2233.50 2234.50 2228.00 2229.25 71515 743254
2016-12-30 10:30:00 2229.25 2234.75 2228.75 2233.75 74937 818191
2016-12-30 11:00:00 2233.75 2235.75 2229.25 2235.00 180772 998981
2016-12-30 11:30:00 2234.75 2237.50 2233.75 2234.75 245717 1244735
2016-12-30 12:00:00 2234.50 2235.25 2233.00 2233.75 6565 1251318
2016-12-30 12:30:00 2233.50 2234.00 2233.25 2233.50 686 1252004