afl formula help required

#1
hi

i found the following volume afl formula on the web about bull /bear volume Which i was looking for ,But i am unable to scan the stocks with this formula

can someone pls help me developing scanner for the below mentioned afl code

/* basic variable defs
ud: up-Day (Close up from Open)
dd: down-Day (Close down from Open)
uc: up-Close (Close up from previous Close)
dc: down-Close: (Close down from previous Close)
*/
C1 = Ref(C, - 1);
uc = C > C1;
dc = C <= C1;
ud = C > O;
dd = C <= O;

/*
Volume Day types:
green: up-day and up-close
yellow: up-day but down-close
red: down-day and down-close
blue: down-day but up-close
white: close equals open, close equals previous close

(currently unused vtypes are for future enhancements)
*/
green = 1;
blue = 2;
yellow = 3;
red = 4;
white = 5;
VType = IIf(ud, IIf(uc, green, yellow), IIf(dd, IIf(dc, red, blue), white));

/* green volume: up-day and up-close*/
gv = IIf(VType == green, V, 0);
/* yellow volume: up-day but down-close */
yv = IIf(VType == yellow, V, 0);
/* red volume: down-day and down-close */
rv = IIf(VType == red, V, 0);
/* blue volume: down-day but up-close */
bv = IIf(VType == blue, V, 0);

/* split up volume of up-close days from down-close days - (for the purposes of this volume display indicator, up-days that closed down from the previous close are considered bearish volume days, and conversely, down-days that nevertheless closed up from the previous close are considered bullish volume days - my testing indicates this is more accurate than using ordinary up-days and down-days) */
uv = gv + bv;
uv1 = Ref(uv, - 1); /* up volume */
dv = rv + yv;
dv1 = Ref(dv, - 1); /* down volume */

/* create moving average period parameters */
VolPer = Param("Adjust Vol. MA per.", 34, 1, 255, 1);
ConvPer = Param("Adjust Conv. MA per.", 9, 1, 255, 1);

/* create triple exponential moving avearges of separate up and down volume moving averages */
MAuv = TEMA(uv, VolPer);
mauv1 = Ref(mauv, - 1);
MAdv = TEMA(dv, VolPer);
madv1 = Ref(madv, - 1);
MAtv = TEMA(V, VolPer); //total volume

/* Switch for Horizontal lines indicating current level of positive and negative volume for ease in comparing to past highs/lows - toggle via parmameter window */
OscillatorOnly = Param("Show Oscillator Only", 0, 0, 1, 1);
CompareBullVolume = Param("Show Bull Level", 1, 0, 1, 1);
if (CompareBullvolume AND !OscillatorOnly)
{
Plot(SelectedValue(MAuv), "", colorGreen, styleLine);
}

CompareBearVolume = Param("Show Bear Level", 1, 0, 1, 1);
if (CompareBearVolume AND !OscillatorOnly)
{
Plot(SelectedValue(MAdv), "", colorRed, styleLine);
}

/* Volume Segment Switches - toggle via parameter window */
bullvolume = Param("Show Bull Volume", 1, 0, 1, 1);
bearvolume = Param("Show Bear Volume", 1, 0, 1, 1);
totalvolume = Param("Show Total Volume", 1, 0, 1, 1);

/* plot volume lines and histograms if toggled on: */
bearToFront = Param("Show Bear Vol in Front", 0, 0, 1, 1);
if (bearToFront AND !OscillatorOnly)
{
Plot(MAdv, "", colorRed, styleHistogram | styleNoLabel);
}

if (bullvolume AND !OscillatorOnly)
{
Plot(MAuv, "Average Bull Volume", colorGreen, styleHistogram | styleNoLabel);
}

if (bearvolume AND !OscillatorOnly)
{
Plot(MAdv, "Average Bear Volume", colorRed, styleHistogram | styleNoLabel);
}

if (totalVolume AND !OscillatorOnly)
{
Plot(MAtv, "Total Volume", colorWhite, styleHistogram | styleNoLabel);
Plot(MAtv, "", colorWhite, styleLine);
}

if (bullvolume AND !OscillatorOnly)
{
Plot(MAuv, "", colorGreen, styleLine);
}

if (bearvolume AND !OscillatorOnly)
{
Plot(MAdv, "", colorRed, styleLine);
}

/* better visibility of zero line: */
Plot(0, "", colorBlue, 1);

/* Rise/Fall Convergence variables: */
Converge = (TEMA(MAuv - MAdv, ConvPer));
Converge1 = Ref(Converge, - 1);
ConvergeUp = Converge > Converge1;
ConvergeOver = Converge > 0;
rising = ConvergeUp AND ConvergeOver;
falling = !ConvergeUp AND ConvergeOver;

/* Rise/Fall Convergence Oscillator Switch - toggle via parameter window - (provides a better view of resulting combination of battling bull/bear volume forces) */
convergenceOscillator = Param("Show Oscillator", 0, 0, 1, 1);
if (convergenceOscillator OR OscillatorOnly)
{
Plot(Converge, "Bull/Bear Volume Convergence/Divergence", colorViolet, 1 | styleLeftAxisScale | styleNoLabel | styleThick);
Plot(0, "", colorYellow, 1 | styleLeftAxisScale | styleNoLabel);
}

/********************************************************
Convergence Rise/Fall Shadows:

(provides a more easily visible display of rising and falling bull/bear volume convergence) - toggle via parameter window

-posiitive Volume exceeding negative Volume: Light shadow
-negative volume exceeding positive volume: dark shadow
-if you use standard gray background - best shadows are:
-my greys: 14 = (216, 216, 216); 15 = (168, 168, 168));
-best substitute? using AB color constants?
-light: colorpalegreen; dark: colorRose;?
-(depends on your color scheme - customize to your tastes)
**********************************************************/

/* uncomment if you use my custom color greys: */
riseFallColor = IIf(rising, 14, 15); //my custom shadow greys

/* comment out if you use my custom color gray shadows: */
/* riseFallColor = IIf(rising, colorPaleGreen,colorRose); */

/* Rise/Fall Convergence Plot Switch - toggle via parameter window */
riseFallShadows = Param("Show RiseFallShadows", 0, 0, 1, 1);
if (riseFallShadows)
{
Plot(IIf(rising OR falling, 1, 0), "", riseFallColor, styleHistogram | styleArea | styleOwnScale | styleNoLabel);
}

GraphXSpace = 0.5;


regards
 

Similar threads