如何使用quantmod解析tick数据?

时间:2014-01-05 16:16:34

标签: r quantmod

我想使用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

我想知道如何解析它并生成每日烛台。

1 个答案:

答案 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()函数的包装。)