PureBytes Links
Trading Reference Links
|
Hi,
I copied & translated this from
<https://www.sierrachart.com/supportboard/archive/index.php/t-
17446.html>. It's not quite right though. It looks OK till you click
on the chart or scroll it, then it seems to re-calculate & plot a
plateau. I'd appreciate someone else's input, as it looks as if it
could prove quite useful.
Cheers,
Ian
Price = Close;
SmoothPeriod = Smooth = Detrender = Q1 = I1 = j1 = jQ = I2 = Q2 = Re
= Im = Period = SmoothPeriod = Phase = 0;
FastLimit = 0.5;
SlowLimit = 0.05;
MAMA = 0;
FAMA = 0;
// smooth
Smooth = (4*Price + 3*Ref(Price,-1) + 2*Ref(Price,-2) + Ref(Price,-
3))/10;
for (i = 6; i < BarCount -1; i++)
{
// detrender
Detrender[i] = (0.0962*Smooth[i] + 0.5769*Smooth[i-2] - 0.5769*Smooth
[i-4] - 0.0962*Smooth[i-6])*(0.075*Period[i-1] + 0.54);
// compute InPhase and Quadrature components
Q1[i] = (0.0962*Detrender[i] + 0.5769*Detrender[i-2] -
0.5769*Detrender[i-4] - 0.0962*Detrender[i-6])*(0.075*Period[i-1] +
0.54);
I1[i] = Detrender[i-3];
// Advance the phase of I1 and Q1 by 90 degrees
jI[i] = (0.0962*I1[i] + 0.5769*I1[i-2] - 0.5769*I1[i-4] - 0.0962*I1[i-
6])*(0.075*Period[i-1] + 0.54);
jQ[i] = (0.0962*Q1[i] + 0.5769*Q1[i-2] - 0.5769*Q1[i-4] - 0.0962*Q1[i-
6])*(0.075*Period[i-1] + 0.54);
// Phasor addition for 3 bar averaging
I2[i] = I1[i] - jQ[i];
Q2[i] = Q1[i] + jI[i];
// Smooth the I and Q components before applying the discriminator
I2[i] = 0.2*I2[i] + 0.8*I2[i-1];
Q2[i] = 0.2*Q2[i] + 0.8*Q2[i-1];
// Homodyne Discriminator
Re[i] = I2[i]*I2[i-1] + Q2[i]*Q2[i-1];
Im[i] = I2[i]*Q2[i-1] - Q2[i]*I2[i-1];
Re[i] = 0.2*Re[i] + 0.8*Re[i-1];
Im[i] = 0.2*Im[i] + 0.8*Im[i-1];
if (Im[i] != 0.0 AND Re[i] != 0.0)
{
Period[i] = 360/(57.3*atan(Im[i]/Re[i]));
}
if (Period[i] > 1.5*Period[i-1])
{
Period[i] = 1.5*Period[i-1];
}
if (Period[i] < 0.67*Period[i-1])
{
Period[i] = 0.67*Period[i-1];
}
if (Period[i] < 6)
{
Period[i] = 6;
}
if (Period[i] > 50)
{
Period[i] = 50;
}
Period[i] = 0.2*Period[i] + 0.8*Period[i-1];
SmoothPeriod[i] = 0.33*Period[i] + 0.67*SmoothPeriod[i-1];
if (I1[i] != 0)
{
Phase[i] = 57.3*atan(Q1[i]/I1[i]);
}
DeltaPhase = Phase[i-1] - Phase[i];
if (IsNull(DeltaPhase) OR DeltaPhase < 1)
{
DeltaPhase = 1;
}
alpha = FastLimit / DeltaPhase ;
if (IsNull(alpha) OR alpha < SlowLimit)
{
alpha = SlowLimit;
}
MAMA[i] = alpha*Price[i] + (1 - alpha)*MAMA[i-1];
FAMA[i] = 0.5*alpha*MAMA[i] + (1 - 0.5*alpha)*FAMA[i-1];
}
Plot(MAMA, "MAMA", colorBrightGreen, styleLine+styleThick);
Plot(FAMA, "FAMA", colorBlue, styleLine+styleThick);
--- In amibroker@xxxxxxxxxxxxxxx, "ihumbleone" <ihumbleone@xxx> wrote:
>
> Hi all,
> Im a newbie to AFL programming.
>
> May you anyone kindly assist me i have been searching Amibroker
AFL
> Formula for for Ehlers MESA Adaptive Moving Average (MAMA and FAMA)
> with buy sell signals and Kaufman's Adaptive Moving Average KAMA
but
> in vain.
>
> It would be great if you can share the formulas if you have them.
>
>
> "The MESA Adaptive Moving Average (MAMA) adapts to price movement
> based on the rate of change of phase as measured by the Hilbert
> Transform Discriminator (Technical Analysis of Stocks and
Commodities
> magazine, December 2000). This method features a fast attack
average
> and a slow decay average so that composite average rapidly ratchets
> behind price changes and holds the average value until the next
> ratchet occurs." The crossing of the MAMA and FAMA lines can be
used
> to generate Buy and Sell signals. When the MAMA crosses above the
> FAMA a buy signal is given. Alternatively, when the MAMA crosses
> below the FAMA a sell signal is given.
>
> As for KAMA, Developed by Perry Kaufman, this indicator is a moving
> average that automatically adjusts its speed based on market
> volatility.
>
> Sincere Thanks
> Warmest Rgds
> Ihumbleone
>
------------------------------------
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
*********************
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
*********************************
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|