При разработке торговых алгоритмов и индикаторов, например таких как Simple Moving Average или SMA, зачастую требуется выполнить расчет среднего значения некоторого показателя, например цены, за некоторый период времени. При этом количество значений, которые участвуют в расчете, может варьироваться от нескольких единиц до нескольких сотен или даже тысяч.
У любой торговой платформы существует потребность в специальных структурах, позволяющих хранить оперативно поступающие данные в определенной последовательности. По сути, это очереди FIFO (first in, first out) с заранее определенным размером и доступом по индексу. По мере поступления новых данных они записываются в конец очереди, а если очередь уже заполнена, старые данные удаляются. Такие очереди, например, используются для хранения временных баров, данных для индикаторов, графиков и т.д.
С того времени, как мы перешли на Visual C++ 2015, прошло больше года. До сих пор мы использовали boost::unordered_map и boost::unordered_set, и они себя вполне хорошо зарекомендовали. Однако, наконец-то, дошли руки протестировать их реализацию из стандартной библиотеки нового компилятора.
Оптимальное соотношение между доходностью и риском