У меня есть книга ордеров, содержащая (финансовые) рыночные ордера.
Книга ордеров представлена в виде вектора, где каждая векторная запись содержит запись ордера, т. е. цену ордера + размер ордера (и сторона Bid/Ask)
Вполне возможно, что может быть несколько записей ордеров по одной и той же цене, например
Код: Выделить всё
A : 99 : 5000
A : 99 : 2342
A : 98 : 6640
A : 98 : 1800
A : 97.78 : 2731
A : 97 : 14704
A : 97 : 5281
A : 97 : 75641
A : 96 : 3200
Мне нужно чтобы в итоге получилось что-то вроде:
Код: Выделить всё
A : 99 : 7342
A : 98 : 8440
A : 97.78 : 2731
A : 97 : 95626
A : 96 : 3200
Код: Выделить всё
for (auto i = 0u; i + 1 < mboAggreg.size();) {
if (mboAggreg[i].OrderPrc == mboAggreg[i + 1].OrderPrc)
{
mboAggreg[i].OrderSize += mboAggreg[i + 1].OrderSize;
mboAggreg.erase(mboAggreg.begin() + i + 1);
// dont increment index - as we may have more than two orders with the same price
}
else
i++;
}
Я попробую Ожидайте, что вы проделаете вышеописанное для нескольких тысяч книг заказов, некоторые из которых довольно волатильны и активно торгуются, поэтому любая эффективность будет наиболее полезна.
Заранее спасибо..
Подробнее здесь: https://stackoverflow.com/questions/790 ... rders-in-c