Charting OHLC data with chart_Series function
具有OHLC(开 - 高 - 低 - 关闭)的csv文件和名为XXXZZZ.csv的货币对的体积数据(格式为DD.MM.YYYY HH:mm的每小时数据):
1 2 3 | 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包并初始化:
1 2 3 4 | library(quantstrat) Sys.setenv(TZ="UTC") currency(c('XXX', 'ZZZ')) exchange_rate('XXXZZZ', tick_size=0.0001) |
我用read.zoo读取了csv文件(因为我无法使quantmod :: getSymbols工作):
1 2 3 4 5 | 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。
1 | chart_Series(XXXZZZ) |
结果是:
1 | Error in chart_Series(XXXZZZ) : 'x' must be a time-series object |
那么我如何操纵XXXZZZ作为时间序列对象呢?
如果不同,答案不仅可以涵盖每小时数据,还可以涵盖从1秒到月度数据吗?
建议1:将小数点从逗号更改为点,问题仍然存在。
1 | XXXZZZ <- gsub(",",".",XXXZZZ) |
RHertel关于小数分隔符的评论是可能的问题。 仅仅
下面的代码适合我,虽然我不得不添加几个观察值来给出
1 2 3 4 5 6 7 8 9 10 11 | 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) |