2

名为 XXXZZZ.csv 的货币对的 OHLC(开-高-低-收)和交易量数据(格式为 DD.MM.YYYY HH:mm 的每小时数据)的 csv 文件:

Date;Open;High;Low;Close;Volume
02.01.2009 07:00;1,5326;1,539785;1,52896;1,5369;1083497,742
02.01.2009 08:00;1,5375;1,5379;1,53105;1,537;1191678,162

我加载 quantstrat 包并初始化:

library(quantstrat)
Sys.setenv(TZ="UTC")
currency(c('XXX', 'ZZZ'))
exchange_rate('XXXZZZ', tick_size=0.0001)

我用 read.zoo 读取了 csv 文件(因为我无法使 quantmod::getSymbols 工作):

XXXZZZ <- as.xts(read.zoo("XXXZZZ.csv", sep=';', tz='', header=TRUE, 
                          format='%d.%m.%Y %H:%M',
                          index.column = 1 
                          )
                 )

这会产生一个“xts”和“zoo”对象,其中一个索引列是日期列,其他 5 个列是 OHLC 和卷。

chart_Series(XXXZZZ)

结果是:

Error in chart_Series(XXXZZZ) : 'x' must be a time-series object

那么如何将 XXXZZZ 操作为时间序列对象呢?如果不同,答案是否不仅涵盖每小时数据,还涵盖从 1 秒到每月的数据?

Suggestion.1:将小数点由逗号改为点,问题依旧。

XXXZZZ <- gsub(",",".",XXXZZZ)
4

1 回答 1

1

RHertel关于小数点分隔符的评论是可能的问题。仅仅gsub(x, ",", ".")因为结果仍然是字符而不是数字是不够的。您需要dec=","在调用中设置read.zoo.

下面的代码对我有用,尽管我不得不添加更多的观察结果chart_Series来绘制一些东西。

require(quantmod)
Lines <- "Date;Open;High;Low;Close;Volume
02.01.2009 07:00;1,5326;1,539785;1,52896;1,5369;1083497,742
02.01.2009 08:00;1,5375;1,5379;1,53105;1,537;1191678,162
02.01.2009 09:00;1,5375;1,5379;1,53105;1,537;1191678,162
02.01.2009 10:00;1,5375;1,5379;1,53105;1,537;1191678,162"
conn <- textConnection(Lines)
XXXZZZ <- as.xts(read.zoo(conn, sep=';', tz="", dec=",", header=TRUE,
                   format='%d.%m.%Y %H:%M', index.column=1))
close(conn)
chart_Series(XXXZZZ)
于 2015-07-31T18:08:17.287 回答