【发布时间】:2015-03-22 12:01:49
【问题描述】:
我的交易数据如下:
TradeNumber OpenTime CloseTime Profit TradeHour Equity
1 01/01/2014 13:10 01/01/2014 14:40 10 13 520
2 01/01/2014 13:25 01/01/2014 13:28 20 13 520
3 01/01/2014 13:29 01/01/2014 15:40 -50 13 520
4 01/01/2014 13:30 01/01/2014 14:05 -5 13 520
5 01/01/2014 14:12 01/01/2014 14:40 12 14 560
6 01/01/2014 14:21 01/01/2014 14:45 -16 14 560
7 01/01/2014 14:50 01/01/2014 14:59 -14 14 560
8 01/01/2014 14:58 01/01/2014 15:05 56 14 560
我希望为每笔交易找到在同一小时内但在该特定交易之前关闭的所有其他交易的利润总和,并将其添加到交易时的净值中。因此,在给定的示例中,结果将是:
TradeNumber OpenTime CloseTime Profit TradeHour Equity
1 01/01/2014 13:10 01/01/2014 14:40 10 13 520
2 01/01/2014 13:25 01/01/2014 13:28 20 13 520
3 01/01/2014 13:29 01/01/2014 15:40 -50 13 520 + 20
4 01/01/2014 13:30 01/01/2014 14:05 -5 13 520 + 20
5 01/01/2014 14:12 01/01/2014 14:40 12 14 560
6 01/01/2014 14:21 01/01/2014 14:45 -16 14 560 - 5
7 01/01/2014 14:50 01/01/2014 14:59 -14 14 560+10-5+12-16
8 01/01/2014 14:58 01/01/2014 15:05 56 14 560+10-5+12-16
例如,8 号交易于 2014 年 1 月 1 日 14:58 开盘。在开盘之前,该小时内还有 4 笔其他交易(交易 1、4、5 和 6)关闭。因此,我想在一小时开始时将这 4 笔交易的利润添加到净值中,并将该数字放在交易数据的净值列中。
for (i in 1:nrow(tradeData))
{
tradeData$EquityUSD1 [i] = tradeData$Equity [i] + sum(tradeData$Profit[tradeData$CloseTime <= tradeData$OpenTime[i] & tradeData$CloseTime >= tradeData$tradeHour[i,1]])
}
这可行,但速度很慢,我想加快速度,因为有数万笔交易。
有什么想法吗?如果我遗漏了任何重要数据/信息,请告诉我
谢谢
【问题讨论】:
-
dplyr窗口函数可能会对您有所帮助 cran.r-project.org/web/packages/dplyr/vignettes/…