我有以下问题。我有一组用于交易品种的 OHLCV(开盘价、最高价、最低价、收盘价、成交量)数据,其结构如下:
struct OHLCV {
double Open{0.0};
double High{0.0};
double Low{0.0};
double Close{0.0};
double Volume{0.0};
};
每个数据涵盖 1 小时的时间范围。我需要取其中的许多,然后计算累积的 OHLCV。例如,如果需要从 24 小时 OHLCV 计算一天的 OHLCV。
为了从一组中创建累积的 OHLCV,我需要:
- 取第一个 Open 值;
- 取最后一个收盘价;
- 取最高的High值;
- 取最低的Low值;
- 取 Volume 值的总和
我想知道是否可以boost::accumulator
用于此目的,以便我可以编写如下代码:
using namespace boost::accumulators;
std::vector<OHLCV> rawData;
// creating CustomFeatures and OHLCVCumulative...
accumulator_set<OHLCV, CustomFeatures> ohlcvAcc;
for (const auto& ohlcv : rawData) {
ohlcvAcc(ohlcv);
}
auto cumulativeOHLCV = OHLCVCumulative(ohlcvAcc);
有可能做这样的事情吗?还是有更好的解决方案?