Что такое хорошая OOP практика для организации и вызова нескольких методов (биржевых индикаторов), используемых для анализа объекта (внутридневной запас)? - PullRequest
0 голосов
/ 27 января 2020

Я работал над программой для имитации рыночных сделок и портфелем на основе ежедневных рыночных данных, которые я собрал. Я борюсь с лучшей OOP практикой по включению индикаторов в программу. Прямо сейчас у меня есть индикаторы в моем классе акций. Класс акций - это моментальный снимок времени (дня) для Акции, который имеет следующие свойства:

#nullable enable    
        public StockNode? _prev;
        public StockNode? _next;
#nullable disable

        protected string _symbol;
        protected int _date;
        protected double _open;
        protected double _close;
        protected double _high;
        protected double _low;
        protected double _volume;

В настоящее время у меня есть методы индикаторов в самом классе акций. Приятно иметь возможность вызывать методы для каждого фондового дня следующим образом:

var movingAverage20Day = stock.ma(20); //This would return a double

Кроме того, он хорошо работает со ссылками на узлы, на которые я полагаюсь, между объектами Stock, чтобы идти вперед и назад в время собирать данные об этом запасе для индикатора. Мой класс Stock слишком длинный, становится сложным для редактирования и часто создает каскад ошибок при внесении изменений в метод; некоторые показатели зависят от других. Как мне правильно управлять всеми своими индикаторами OOP? Я не думаю, что я следую принципу единой ответственности.

...