如何使用dplyr将报价数据转换为订单簿数据

问题描述

美好的一天,

我有一个带有时间戳的交易数据集和报价数据集,我想在那些特定时间将该数据转换为订单簿的顶层。

下面是数据和所需输出的示例,我正在努力使用dplyr在R中高效地执行此操作。我认为可以在每个订单项之间进行迭代,但是数据集很大,因此这种方法在计算上不可行。

original = data.frame(
  TimeStamp = c(1,2,3,4,5,6,7,8),OrderID   = c(1,1,3),msgType2 = c("Add","Add","Modify","Cancel","Cancel"),Side2 = c("BUY","SELL","BUY","BUY"),Quantity = c(1000,1000,NA,200,NA),Price2 = c(25422,25492,25493,25421,25443,25463,BidPrice = c(25422,BidVol = c(1000,AskPrice = c(NA,AskVol = c(NA,CancelPrice = c(NA,25463),CancelVol = c(NA,400,200)
)

desired = data.frame(
  TimeStamp = c(1,bestBidVol = c(1000,600,600),bestBid = c(25422,25422,25443),bestAsk = c(NA,25493),bestAskVol = c(NA,1000)
)

时间戳是唯一的,每个OrderID只能是BUY或SELL。买单将提供给投标方,而卖单将提供给订单簿的卖方。此外,每个订单可以是添加,修改或取消。

在我的示例中,我取消了OrderID = 1的部分订单,然后还有一个新订单进入了订单簿(ID = 3),然后被取消。这些需要相应地在订单簿的顶层捕获。

在ID = 1的情况下,原始订单的数量为1000,并且进行了两次价格修改,直到取消400数量,因此订单簿中仅剩余600数量。在ID = 3的情况下,买单的价格高于当前的最佳出价,因此它以200的相应数量到达了订单簿的顶部,但随后被取消,因此ID = 1返回成为最佳购买订单。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...