// Downloaded From https://www.WiseStockTrader.com
function SigomPcnt()
{
    yom = 100 * ( C - Ref( MA( C, 25 ), 12 ) )/Ref( MA( C, 25 ), 12 );
    avyom = MA( yom, 50 );
    varyom = MA( yom ^ 2, 50 ) - avyom ^ 2;
    som = Ref( sqrt( varyom ), -12 );
    return MA( som, 25 );
}

function UCI( period )
{
    period2 = floor( period / 2 ); // divide original period by 2
    period4 = floor( period / 4 ); // half
    sigom = SigomPcnt();
    yme = 100 * ( EMA( C, period4 ) - EMA( C, period2 ))/EMA( C, period2 );
    ymes = TSF( yme, 6 );
    return 100 * ymes / sigom;
}

function CenteredUCI( period )
{
    period2 = floor( period / 2 ); // divide original period by 2
    period4 = floor( period / 4 ); // half
    sigom = SigomPcnt();
    ym = 100 * ( Ref( MA( C, period2 ), period4 ) -
         Ref( MA( C, period ), period2 ) ) /
         Ref( MA( C, period ), period2 );
    return 100 * ym / sigom;
}

period = Param("period", 25, 25, 100, 2 );
IsCentered = ParamToggle("Centered?", "No|Yes");
grid = IIf( period >= 100, 150, IIf( period >= 50, 100, 50 ) );
SetChartOptions( 0, 0, 0 );

if( IsCentered )
{
   Plot( x = CenteredUCI( period ), "Centered UCI(" + period + ")",
         ParamColor("Color", colorRed) );
}
else
{
   Plot( x = UCI( period ), "UCI(" + period + ")",
         ParamColor("Color", colorRed) );
}

PlotGrid( grid );
PlotGrid( 0 );
PlotGrid( -grid );