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