如何使用有条件的价格点对R中的不规则日内财务数据进行分组?
问题描述:
我有一些财务数据剔,head(df_xts)
:如何使用有条件的价格点对R中的不规则日内财务数据进行分组?
price volume
2016-06-01 09:30:00 1073 1
2016-06-01 09:30:00 1073 1
2016-06-01 09:30:00 1073 1
2016-06-01 09:30:00 1073 1
2016-06-01 09:30:00 1073 1
2016-06-01 09:30:00 1073 5
我想看看这个数据价格已经移到高于其开度范围内有一定的距离之后。我限定开口范围作为第15分钟:
df_open <- df_xts["T09:30/T09:44"]
(df_main
,这将在下文中引用,是一天中的剩余时间帧。)
以下发现最大价格,或“开口范围高”的每一天:
orh <- apply.daily(df_open$price, max)
> orh
price
2016-06-01 09:44:55 1083.75
2016-06-02 09:44:59 1119.25
2016-06-03 09:44:59 1169.00
2016-06-06 09:44:53 1155.00
和这个发现价格在一个预先定义的距离breakout
上方的开口范围内的高:
orh_bo <- orh + breakout
然后我发现每一天这里的价格已经上升到这个突破点,先观察,这给了我的“突破”的索引值,相对于天:
orh_bo_index <- apply.daily(df_main, FUN = function(X) first(which(X %in% orh_bo)))
> orh_bo_index
[,1]
2016-06-01 14:14:59 2074
2016-06-02 14:14:59 10693
2016-06-03 14:14:59 2351
2016-06-06 14:14:59 1224
orh_bo_matrix <- coredata(orh_bo_index)
我结合这突破指数每日端点的索引创建一个数据帧,df_bo_indexes
:
ep_daily <- endpoints(df_main, on = "days")
daily_last_index <- ep_daily[-1]
daily_last_matrix <- t(t(daily_last_index))
df_bo_indexes <- bind_cols(data.frame(orh_bo_matrix), data.frame(daily_last_matrix))
> df_bo_indexes
orh_bo_matrix daily_last_matrix
1 2074 52155
2 10693 126623
3 2351 181408
4 1224 221002
如何使用子集上述指标的数据?这是我到目前为止已经试过:
df_bo_day1 <- df_main[df_bo_indexes[1,1]:df_bo_indexes[1,2]]
i <- 2
for(i in 2:ndays(df_main)) {
df_bo_all <- df_main[(df_bo_indexes[i-1,2]+df_bo_indexes[i,1]):df_bo_indexes[i,2]]
}
split a time series by another irregular time series是有益的,但我不知道如何将其应用到盘中的数据。
我的完整代码和数据集可以在https://github.com/blottb7/tick-data找到。我对从事时间系列投入工作的人感兴趣。
答
我split(), lapply(,cummax), do.call(rbind,), merge()
为开放范围。整个数据框都一样。整个范围合并开放范围。然后使用breakout <- ifelse(cummax - breakout > opening_range_cummax, TRUE, FALSE), then subset by breakout == 1
。