具有OHLC(开 - 高 - 低 - 关闭)的csv文件和名为XXXZZZ.csv的货币对的体积数据(格式为DD.MM.YYYY HH:mm的每小时数据):
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”&amp; “zoo”对象,其索引列为Date列,另外5列为OHLC和Volume。
chart_Series(XXXZZZ)
结果:
Error in chart_Series(XXXZZZ) : 'x' must be a time-series object
那么如何操纵XXXZZZ成为时间序列对象呢? 如果不同,答案不仅可以涵盖每小时数据,还可以涵盖从1秒到月数据吗?
建议1:将小数点从逗号更改为点,问题仍然存在。
XXXZZZ <- gsub(",",".",XXXZZZ)
答案 0 :(得分:1)
RHertel's comment可能是个问题。简单地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)