Я пишу проект, который рассчитывает различные индикаторы цен акций, такие как простые / экспоненциальные скользящие средние и т. Д. Данные, с которыми я работаю, являются в реальном времени, и большинство этих индикаторов являются итеративными и используют предыдущие значения для определениятекущее значение.
Возьмите, например, экспоненциальную скользящую среднюю.Если бы я рассчитывал EMA на основе 10 периодов (EMA (10)):
Initial: SMA(10) = [Sum of previous 10 periods]/10
Multiplier: ( 2 / ( # Periods + 1 ) = ( 2 / 11 ) = 0.1818
EMA: ( Current Value - EMA(Previous) ) * Multiplier + EMA(Previous)
При изменении значения для текущего периода времени EMA необходимо пересчитать с новым значением.Если весь диапазон значений пересчитывается каждый раз, произойдет заметное снижение производительности, поэтому важно кэширование прошлых значений и только пересчет текущего значения.
Мне интересно, существует ли определенный шаблон проектированияэто позволяет для этого типа функциональности.В идеале я хотел бы, чтобы каждый индикатор наследовал от базового шаблонного класса, чтобы все было единообразно.