我想使用quantmod生成每日烛台,但我得到的是GBPJPY.csv刻度数据,如
Symbol,Time,Bid,Ask GBP/JPY,2013-12-29 17:01:06.000,173.319,173.544 GBP/JPY,2013-12-29 17:01:07.000,173.319,173.459 GBP/JPY,2013-12-29 17:01:08.000,173.319,173.459 GBP/JPY,2013-12-29 17:01:08.000,173.319,173.544
我想知道如何解析它并生成每日烛台。
答案 0 :(得分:0)
第一步是将刻度线加载到xts对象中;第二步是从该xts对象生成条形。
我假设你的csv文件只包含GBP / JPY数据(即第一列是冗余的)。如果没有,您只需要做更多工作就可以使用第一列。 (或者,更好的是,使用unix工具预处理数据,为每个符号提供一个文件。)
你也没有说你是否想要出价和询问酒吧,或只是一个或中等。以下代码假设出价,因为它更简单。
d=try(read.table(source_fname,sep=',',header=T,stringsAsFactors=F),silent=T)
if(inherits(d,"try-error")){
print(d);quit() #Or some kind of error-handling
}
timestamps = as.POSIXct(d$Time)
bids = xts(d$Bid,timestamps)
因为我们只有一列,所以制作每日酒吧很容易:
to.daily(bids)
它给出了:
bids.Open bids.High bids.Low bids.Close
2013-12-29 173.319 173.319 173.319 173.319
如果您需要做一些更复杂的事情(例如,为出价和询问制作OHLC),此答案将说明如何使用period.apply()
将自定义函数应用于任何大小的刻度块:https://stackoverflow.com/a/19896834/841830 (该问题还说明了如何使用read.zoo()
来读取标记;它是read.table()
函数的包装。)