Jurik Moving Average AFL for AmiBroker

#1
Below is my code for Jurik Moving Average. It's an error free interpretation of tradingview pine script into AmiBroker AFL. Though error free and plotting a line, but still it is not functional. How can it be fixed? Please help.

Code:
_SECTION_BEGIN( "Jurik Moving Average" );
SetBarsRequired( 100, 0 );

function jmapow( src, len )
{
    upperband = src;
    lowerband = src;

    del1 = src - Ref( upperband, -1 );
    del2 = src - Ref( lowerband, -1 );
    volty = IIf( abs( del1 ) == abs( del2 ), 0, Max( abs( del1 ), abs( del2 ) ) );

    vSum = 0.0;

    for( i = 10; i < BarCount; i++ )
    {
        vSum += Nz( vSum[i] ) + 0.1 * ( volty[i] - Nz( volty[i - 10], volty[i] ) );
    }

    avgLen = 65;
    avgVolty = MA( vSum, avgLen );

    alen = ( len - 1 ) / 2;
    len1 = Max( log( sqrt( alen ) ) / log( 2 ) + 2, 0 );
    pow1 = Max( len1 - 2, 0.5 );

    rVolty = IIf( avgVolty != 0, volty / avgVolty, 0 );
    rVolty += IIf( rVolty > len1 ^ ( 1 / pow1 ), len1 ^ ( 1 / pow1 ), IIf( rVolty < 1, 1, rVolty ) );

    pow2  = rVolty ^ pow1;

    return pow2;
}

function jurikma( src, len, pow, ph )
{
    phr = IIf( ph < -100, 0.5, IIf( ph > 100, 2.0, ( ph / 100 ) + 1.5 ) );
    beta = 0.54 * ( len - 1 ) / ( 0.45 * ( len - 1 ) + 2 );
    pow = jmapow( src, len );
    alpha = beta ^ pow;

    e0 = 0.0;
    e1 = 0.0;
    e2 = 0.0;
    jma = 0.0;

    for( i = 0; i < BarCount; i++ )
    {
        e0[i] += ( 1 - alpha[i] ) * src[i] + alpha[i] * Nz( e0[i] );
        e1[i] += ( src[i] - e0[i] ) * ( 1 - beta[i] ) + beta[i] * Nz( e1[i] );
        e2[i] += ( e0[i] + ( phr[i] * e1[i] ) - Nz( jma[i] ) ) * ( ( 1 - alpha[i] ) ^ 2 ) + ( alpha[i] ^ 2 ) * Nz( e2[i] );
        jma[i] += e2[i] + Nz( jma[i] );
    }

    return jma;
}

src = ( High + Low + Close ) / 3;
len = Param( "Length", 14, 5, 100, 1 );
pow = Param( "Power", 2, 1, 100, 1 );
ph = Param( "Phase", 0, -100, 100, 1 );

Plot( jurikma( src, len, pow, ph ), "Jurik Moving Average", colorBrown, styleNoLabel | styleNoRescale | styleThick );
_SECTION_END();
 

Similar threads