Я не делал детальной разборки алгоритма FRASMA.
1. Ценовые данные заменил:
Было:
// case PRICE_CLOSE : ArrayCopy(tmpArray,Close,0,0,WHOLE_ARRAY); _FRASMA( lastBars,tmpArray); break;
Стало:
for( int i=0; i < lastBars; i++ ) {
tmpArray = iCustom(NULL,0, T_JMS, Length, Phase, Shift, a01, SpeediShift, a02, TeMA_Method, TeMA_SecondPeriod,
TeMA_ThirdPeriod, TeMA_SmoothingPeriod, Koef, History, 0, i);
}
_FRASMA( lastBars,tmpArray);
break;
Далее FRASMA сама рассчитывает скорость и определяет период сглаживания и с этим периодом рассчитывает МА.
Ваши изменения Третьего Параметра "Length" сказываются только на обработке первичных данных, Length для расчета финальной кривой FRASMA определяет сама.
Я заменил МА на T_JMS, вот другой вариант: где осталась авторская MA.
Выбирайте что нравится. Возможно дальше автор хотел делать еще второе преобразование и после первичной обработки еще раз пройтись по массиву, по крайней мере в коде это видится (заложено). Но - чужая голова потемки, сейчас он просто накинул МА.