Хочу задать вопрос по поводу расчета СС. Вопрос следующий:
Мне нужно расчитать Exponential MA. Нашел формулы расчета.
"Взято с www.fibo-futures.ru/pages.php?page=52"Экспоненциальное скользящее среднее
Экспоненциальное, или экспоненциально сглаженное, скользящее среднее определяется путем добавления к вчерашнему значению скользящего среднего определенной доли сегодняшней цены закрытия. В случае экспоненциальных скользящих средних больший вес имеют последние цены закрытия.
Формула для расчёта экспоненциальной скользящей средней задается рекурсионно:
MAE = P1*K + MAE-1*(1-K),
где MAE - экспоненциальная скользящая средняя;
P1 - цена в рассчитываемый период;
MAE-1 - предыдущее значение экспоненциальной скользящей средней;
K = 2/(N + 1)
N - период усреднения.
Так вот. Написал код, по примеру Simple MA, взятой из стратегии, входящей в ФТ.
Код: Выделить всё
{-----Reset strategy--------------------------------------------------------}
procedure ResetStrategy; stdcall;
begin
OrderHandle := -1;
end;
// Расчет EMA
function GetEMA(period: integer): double;
var
i: integer;
sum: double;
begin
sum := 0;
for i:=0 to period - 1 do
sum := (sum + Close(i));
result := sum*(2/(period + 1)) + result*(1-(2/(period + 1)));
end;
Return value of function 'GetEMA' might be undefined.
Если запринтить потом значения ф-ции, вообще леваковые выдает.
Помогите пожалуйста разобраться в чем моя ошибка!
P.S. Ув. Terranin, если Вам несложно, подскажите, когда будет свободное время! Вы точно знаете что к чему!!