使用chart_系列函数绘制OHLC数据

使用chart_系列函数绘制OHLC数据,r,csv,quantmod,quantitative-finance,quantstrat,R,Csv,Quantmod,Quantitative Finance,Quantstrat,包含名为XXXZZZ.csv的货币对的OHLC(打开-高-低-关闭)和体积数据(格式为DD.MM.yyy 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(

包含名为XXXZZZ.csv的货币对的OHLC(打开-高-低-关闭)和体积数据(格式为DD.MM.yyy 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工作):

结果:

Error in chart_Series(XXXZZZ) : 'x' must be a time-series object
那么,如何将XXXZZZ操作为时间序列对象呢? 如果不同,答案是否不仅包括每小时数据,还包括从1秒到每月的数据

建议1:将十进制符号从逗号改为点,问题仍然存在

XXXZZZ <- gsub(",",".",XXXZZZ)
XXXZZZ关于十进制分隔符可能是个问题。仅仅
gsub(x,“,”,“)
是不够的,因为结果仍然是字符,而不是数字。您需要在调用
read.zoo
时设置
dec=“,”

下面的代码对我来说很有用,不过我还需要添加一些观察结果来绘制
chart\u系列

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)
require(quantmod)

行我怀疑您有一些问题,因为OHLC值的小数是用逗号(在欧洲经常使用)而不是点(美国标准)分隔的。我建议您尝试使用
XXXZZZ@RHertel chart_Series()更改逗号,但仍然会出现相同的错误。原则上,xts对象可以覆盖任何时间跨度,最短可达微秒,如果需要,最长可达几年。限制是由数据的可用性和文件的大小造成的(如果您想在几年内以微秒级存储和评估蜱虫数据,可能会有一些明显的问题)。@RHertel尝试了
getSymbols(XXXZZZ,src=“csv”,dir=“XXXZZZ.csv”)
但是与其他方法相比,读取耗时太长,我最终放弃了。这种安全性的OHLC数据是否可以在互联网上获得,比如美国股票的EOD数据?这将允许重现问题并可能解决它。谢谢你,乌尔里奇先生。刚刚在
read.zoo()
中将
conn
替换为
“XXXZZZ.csv”
(我的csv数据文件的名称),它成功了。除了
as.xts(read.zoo())
行和
chart\u Series()
行之外,不需要其他任何东西。
XXXZZZ <- gsub(",",".",XXXZZZ)
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)