我有一些交易数据,我需要捕获到达边界PRICE
所需的时间(对于卖单,这是放置PRICE
的买单的时间之间的差额。或等于卖出订单的定单顺序和时间,反之亦然。
这是数据示例:
> head(data)
V1 NO SECCODE BUYSELL TIME ORDERNO ACTION PRICE VOLUME TRADENO TRADEPRICE
1: 1 846 SU26205RMFS3 B 100000000 846 1 80.00 50 <NA> NA
2: 2 847 SU26207RMFS9 B 100000000 847 1 77.00 100 <NA> NA
3: 3 866 SU29009RMFS6 B 100000000 866 1 101.00 5 <NA> NA
4: 4 1026 SU46022RMFS8 S 100000000 1026 1 74.20 123 <NA> NA
5: 5 1097 SU26208RMFS7 B 100000000 1097 1 88.15 4800 <NA> NA
6: 6 1105 SU26208RMFS7 B 100000000 1105 1 88.15 15000 <NA> NA
我可以想到的一种解决方法(对于卖单):
buy_placement <- subset(data, select=c("PRICE", "TIME", "ACTION", "BUYSELL"))
buy_placement <- filter(buy_placement, ACTION == 1, BUYSELL == "B")
buy_placement$ACTION = NULL
buy_placement$BUYSELL = NULL
sell_placement <- subset(data, select=c("PRICE", "TIME", "ACTION", "BUYSELL"))
sell_placement <- filter(sell_placement, ACTION == 1, BUYSELL == "S")
sell_placement$ACTION = NULL
sell_placement$BUYSELL = NULL
,然后在buy_placement
中的PRICE
比{{大的情况下},提取sell_placement
比TIME
大的buy_placement
中的每个元素1}}和sell_placement
(绑定的代码)可能与SECCODE
函数相同。结果将是数据集,其中每个卖单对应于多个可能的买单。那么,首过时间将仅仅是所有对应的买单位置和每个卖单的卖出价位置之间的最小差。但是,我需要以某种方式确保在可接受的相反订单出现之前,这些卖出订单中的每一个都没有被取消(apply
= 0)(在这种情况下,我不确定是否可以考虑取消) ,如果没有它就可以解决这个问题,我们将不胜感激。
我不确定如何实现我所描述的方式,并且可能会有更简单的方法(可能是在某种条件下提取停止时间的直接方法),因此可以提供任何帮助。