Price = (High+Low)/2
Fastlimit = 0.5
SlowLimit = 0.05
if(barindex>5) then
Smooth = (4*Price + 3*Price[1] + 2*Price[2] + Price[3]) / 10
Detrender = (.0962*Smooth + .5769*Smooth[2] - .5769*Smooth[4] - .0962*Smooth[6])*(.075*Period[1] + .54)
Q1 = (.0962*Detrender + .5769*Detrender[2] - .5769*Detrender[4] - .0962*Detrender[6])*(.075*Period[1] + .54)
I1 = Detrender[3]
jI = (.0962*I1 + .5769*I1[2] - .5769*I1[4] - .0962*I1[6])*(.075*Period[1] + .54)
jQ = (.0962*Q1 + .5769*Q1[2] - .5769*Q1[4] - .0962*Q1[6])*(.075*Period[1] + .54)
I2 = I1 - jQ
Q2 = Q1 + jI
I2 = .2*I2 + .8*I2[1]
Q2 = .2*Q2 + .8*Q2[1]
Re = I2*I2[1] + Q2*Q2[1]
Im = I2*Q2[1] - Q2*I2[1]
Re = .2*Re + .8*Re[1]
Im = .2*Im + .8*Im[1]
If Im <> 0 and Re <> 0 then
Period = 360/ATAN(Im/Re)
endif
If Period > 1.5*Period[1] then
Period = 1.5*Period[1]
endif
If Period < .67*Period[1] then
Period = .67*Period[1]
endif
If Period < 6 then
Period = 6
endif
If Period > 50 then
Period = 50
endif
Period = .2*Period + .8*Period[1]
SmoothPeriod = .33*Period + .67*SmoothPeriod[1]
if(I1<>0) then
Phase = ATAN(Q1 / I1)
endif
DeltaPhase = Phase[1] - Phase
If DeltaPhase < 1 then
DeltaPhase = 1
endif
alpha = FastLimit / DeltaPhase
If alpha < SlowLimit then
alpha = SlowLimit
endif
MAMA = alpha*Price + (1 - alpha)*MAMA[1]
FAMA = .5*alpha*MAMA + (1 - .5*alpha)*FAMA[1]
endif
condition = MAMA crosses over FAMA or MAMA crosses under FAMA
SCREENER [condition]