Ну если всего несколько строк, то можно было бы и так предоставить :)
Если кто из программистов готов взяться за переделку - я могу предоставить код на Омеговском языке, там всего несколько строк.
Inputs:Price(Close),Len(30),Lag(0.0),Nx(10.0),Entr(-2.0),Exit(0.5);
Variables:F(0),e1(Price),e2(Price),Av(Price),Fn(0),N(0),B(Price),S(Price),ExB(Price),ExS(Price);
F = 2 / (Len + 1);
e1 = F * Price + (1 - F) * e1[1];
e2 = F * e1 + (1 - F) * e2[1];
Av = e1 * (2 - Lag) - e2 * (1 - Lag);
Fn = 2 / (Len * Nx + 1);
N = Fn * AbsValue(Price - Av) + (1 - Fn) * N[1];
B = Av + N * Entr;
S = Av - N * Entr;
ExB = Av + N * Exit;
ExS = Av - N * Exit;
If CurrentBar > Len*Nx then begin
Buy B Limit;
Sell S Limit;
ExitLong ExB Limit;
ExitShort ExS Limit;
end;
Здесь инпут Lag может плавно менять вид мувинга и его отставание от цены:
Lag = 1 = обычная EMA(Price,Len)
Lag = 2 = дважды сглаженная EMA(EMA(Price,Len),Len)
Lag = 0 = зеро-лаг EMA
Можно задавать и отрицательные значения, получится опережающий мувинг на длинном тренде, но при смене тренда он будет заскакивать выше/ниже цены (т.н. "овершотинг").
