Для закрепления пройденного материала разберем код составного индикатора Alligator, который находится в папке со скриптами. Аллигатор является комбинацией 3-х сглаженных скользящих средних разной длины и с разным сдвигом вперед. Соответственно для каждой из них есть по одному индикатору SSMA (сглаженная скользящая средняя), по два параметра и по одной серии данных. Рассмотрим для начала поля класса:
Далее взглянем на процесс конфигурации индикатора в методе OnStateChange:
Каждый внутренний индикатор создается по следующему принципу:
Далее в методе OnProcess наполняются все 3 серии данных.
Рассмотрим подробнее логику вычислений на примере одной серии данных _seriesTeeth.
Обратите внимание на следующий факт. Все объекты, создаваемые в индикаторе, помещаются в соответствующие списки в той же последовательности, в которой они создаются. Все параметры хранятся в свойстве:
public List<IndicatorParameter> Parameters
Числовые параметры, а именно объекты классов IndicatorParameterInt и IndicatorParameterDecimal конвертируются в объекты ParameterDigit и помещаются в список:
public List<ParameterDigit> ParametersDigit
Все серии данных помещаются в список:
public List<IndicatorDataSeries> DataSeries
Все встроенные индикаторы размещаются в списке:
public List<Aindicator> IncludeIndicators
Метод ProcessIndicator помимо индикатора принимает произвольное имя. Эти имена помещаются в список
public List<string> IncludeIndicatorsName
и хранятся там параллельно индикаторам, то есть если индикатор добавлен в свой список по индексу 0, то и имя будет храниться в соответствующем списке под индексом 0.
Комментарии