Nice example Bruce - compact and powerful!

Here's my riff on it to add multiple calculations and color:

/*
    Osc_Pctl_02.afl

    Finds *for every bar* which was the value of Osc(x) that was exceeded
for a
    limit % number of times over a percentile lookback period.

    e.g.:  On this bar, what is the value of Osc(14) which was exceeded
5% of the time over the last 100 bars

    "For each bar in an array, find the value of Osc(x) over a lookback
period that represents
    a given percentile rank of the min/max range over the same lookback
period."

    Versions

    _01       Bruce R     
http://finance.groups.yahoo.com/group/amibroker/message/142760

    _02         Progster      [email protected]

    Separated high/low percentile specification settings, made percentile
lookback explicit in bars,
    changed variable names, added color, added 2nd calc (CCI) and 3rd
calc (ADX).


*/


Osc_LB = Param( "Osc_LB", 14, 1, 200, 1 );            //   Oscillator
LookBack
LowPctl = Param( "LowPctl", 5, 1, 100, 1 );
HighPctl = Param( "HighPctl", 95, 1, 100, 1 );
Pctl_LB = Param( "Pctl_LB", 50, 50, 5000, 50 );         //   Percentile
LookBack

ShowPctlSpecs= ParamToggle( "ShowPctlSpecs?", "No|Yes", 0 ) ;   //  
turn on morestuff in the display for tutorial/verification purposes


//  Ceil() and Floor() below are used to generate "nearest integer"
values

Calc_01 = RSI( Osc_LB );
ValAtLowPctl_01 = ceil( Percentile( Calc_01, Pctl_LB, LowPctl ) );
ValAtHighPctl_01 = floor( Percentile( Calc_01, Pctl_LB, HighPctl ) );

Calc_02 = CCI( Osc_LB );
ValAtLowPctl_02 = ceil( Percentile( Calc_02, Pctl_LB, LowPctl ) );
ValAtHighPctl_02 = floor( Percentile( Calc_02, Pctl_LB, HighPctl ) );

Calc_03 = ADX( Osc_LB );
ValAtLowPctl_03 = ceil( Percentile( Calc_03, Pctl_LB, LowPctl ) );
ValAtHighPctl_03 = floor( Percentile( Calc_03, Pctl_LB, HighPctl ) );


Filter = 1;

if (ShowPctlSpecs) {
    AddColumn( BarIndex(), "Bar", 8.0, colorDefault, colorDefault, 50 );
    AddColumn( LowPctl, "LowPctl", 2.0, colorDefault, colorDefault, 50 );
}

if (ShowPctlSpecs) {      AddColumn( ValAtLowPctl_01, "ValAtLP", 5.1,
colorDefault, colorDefault, 60 );   }
AddColumn(Calc_01, "RSI", 6.2, colorDefault, IIf( Calc_01 >=
ValAtHighPctl_01,colorGreen, IIf(Calc_01 <= ValAtLowPctl_01, colorRed,
colorDefault)), 50) ;
if (ShowPctlSpecs) {      AddColumn( ValAtHighPctl_01, "ValAtHP", 5.1,
colorDefault, colorDefault, 60 );   }

if (ShowPctlSpecs) {      AddColumn( ValAtLowPctl_02, "ValAtLP", 5.1,
colorDefault, colorDefault, 60 );   }
AddColumn(Calc_02, "CCI", 6.2, colorDefault, IIf( Calc_02 >=
ValAtHighPctl_02,colorGreen, IIf(Calc_02 <= ValAtLowPctl_02, colorRed,
colorDefault)), 50) ;
if (ShowPctlSpecs) {      AddColumn( ValAtHighPctl_02, "ValAtHP", 5.1,
colorDefault, colorDefault, 60 );   }

if (ShowPctlSpecs) {      AddColumn( ValAtLowPctl_03, "ValAtLP", 5.1,
colorDefault, colorDefault, 60 );   }
AddColumn(Calc_03, "ADX", 6.2, colorDefault, IIf( Calc_03 >=
ValAtHighPctl_03,colorGreen, IIf(Calc_03 <= ValAtLowPctl_03, colorRed,
colorDefault)), 50) ;
if (ShowPctlSpecs) {      AddColumn( ValAtHighPctl_03, "ValAtHP", 5.1,
colorDefault, colorDefault, 60 );   }

if (ShowPctlSpecs) {
    AddColumn( HighPctl, "HighPctl", 2.0, colorDefault, colorDefault, 58
);
}

Pictures of the output, and code that can be cut/pasted cleanly have
been posted in the CFT Forum at

http://www.codefortraders.com/phpBB3/viewtopic.php?f=60&t=605




Reply via email to