使用 chart_Series 函数绘制 OHLC 数据图表

Charting OHLC data with chart_Series function

包含名为 [=36= 的货币对的 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秒到每月的数据吗?

建议1:将逗号改为点,问题依旧

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

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

下面的代码对我有用,尽管我必须添加更多的观察结果才能 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)