Inputs: Period(10);

Vars: Signal(0), Noise(0), Diff(0), ER(0), Smooth(1), Fastest(.6667), Slowest(.0645), AMA(0);

Diff = AbsValue(Close — Close[1]);

IF CurrentBar <= Period Then AMA = Close;

IF CurrentBar > Period Then Begin

Signal = AbsValue(Close — Close[Period]);

Noise = Summation(Diff, Period);

If Noise > 0 then ER = Signal / Noise;

Smooth = Power(ER ∗ (Fastest — Slowest) + Slowest, 2);

AMA = AMA[1] + Smooth ∗ (Close — AMA[1]);

End;

Plot1( AMA, «AMA»);

Periods:= Input(» Periods»,1,1000, 10);

Signal:= CLOSE — Ref(CLOSE,-periods);

Noise:= Sum(Abs(ROC(CLOSE,1,$)),periods);

ER:= Abs(Signal/Noise);

FastSC:= 2/(2 + 1);

SlowSC:= 2/(30 + 1);

SSC:= ER ∗ (FastSC — SlowSC) + SlowSC;

Constant:= Pwr(SSC,2);

AMA:= If(Cum(1) = periods+1, Ref(CLOSE,-1) + constant ∗ (CLOSE — Ref(CLOSE,-1)),PREV +

Constant ∗ (CLOSE — PREV));

AMA

3
Апр

Индикатор AMA на ATF

Posted by: Kamynin   in TRANSAQ

Автор: Николай Камынин

Приведу пример программирования индикатора AMA на встроенном в торговый терминал TRANSAQ языке программирования ATF

//индикатор АМА
#samewindow
#line 0 dot red

extern period=10; //период

extern Fast=2;

extern Slow=30;

var FastSCm;  var SlowSC;  var Signal;   var SSC; var Noise;
//~~~~~~~~~~~~~~
function init(){

setInitCandles(1);

line[0]=close;

Signal=0;

Noise=0;

SlowSC=2/(Slow+1);

FastSCm=2/(Fast+1)-SlowSC;    }
//~~~~~~~~~~~~~~
function calc() {

Noise=Noise+abs(close-close[-1]);
if (period>=noCandle()) { line[0]=close;  }
else{

Noise=Noise-abs(close[-period]-close[-period-1]);

Signal=abs(close-close[-period]);
SSC=Signal*FastSCm/Noise+SlowSC;
line[0]=line[0][-1]+SSC*SSC*(close-line[0][-1]);
}
}

//конец программы

Успехов.

Tags: , , , ,