Общий вопрос по реализации Индикаторов
Всем доброго дня )))
Вопрос такой: почему индикаторы сделаны через дженерики таким образом, что могут не отрабатывать контракт?
На примере кода:
var candle = new TimeFrameCandle()
;
IIndicator indicator = new ExponentialMovingAverage();
var result = indicator.Process(new CandleIndicatorValue(candle));
Если же взять Peak индикатор, то код внезапно начинает работать.
Самое обидное, что контракт - всегда выполнен. Любой индикатор поддерживает интерфейс взаимодействия IIndicator, на вход Process подается IIndicatorValue.
Но в одном случае IIndicatorValue обрабатывается корректно, а в другом - дает сбой.
Расследование показало, что это происходит из за вызова var newValue = input.GetValue<decimal>(); в EMA. Т.е. EMA исходит из того, что input строго decimal, хотя контрактом на EMA это не регламентировано.
Что делать?