Join our facebook group for Amibroker afl code discussion https://www.facebook.com/groups/603980776889348

Average Bull Bear Volume Trading Zone

Average Bull Bear Volume Trading Zone
Average Bull Bear Volume Trading Zone

//www.aflcode.com
_SECTION_BEGIN("BullBear Volume");
 
C1 = Ref(C, -1);
uc = C > C1; dc = C <= C1;
ud = C > O; dd = C <= O;
 
green = 1; blue = 2; yellow = 3; red = 4; white = 5;
VType = IIf(ud,             
            IIf(uc, green, yellow),
         IIf(dd, 
            IIf(dc, red, blue), white));
 
 
gv = IIf(VType == green, V, 0); 
yv = IIf(VType == yellow, V, 0); 
rv = IIf(VType == red, V, 0); 
bv = IIf(VType == blue, V, 0); 
 
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), "", colorAqua, 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, styleNoLabel);
}
if(bullvolume AND !OscillatorOnly){
Plot(MAuv, "Average Bull Volume", colorBlue, styleThick+styleNoLabel);
}
if(bearvolume AND !OscillatorOnly){
Plot(MAdv, "Average Bear Volume", colorRed, styleThick+styleNoLabel);
}
if(bearvolume AND !OscillatorOnly){
Plot(MAdv, "", colorWhite, styleNoLabel);
PlotOHLC( 0 , MAdv , 0 , MAdv , "", colorDarkRed, styleCloud | styleNoRescale|styleNoLabel);

}
if(bullvolume AND !OscillatorOnly){
Plot(MAuv, "", colorWhite, styleNoLabel);
PlotOHLC( 0 , MAuv , O ,MAuv , "", colorDarkBlue, styleCloud | styleNoRescale|styleNoLabel);

}
if(totalVolume AND !OscillatorOnly){
Plot(MAtv, "Total Volume", colorYellow );
PlotOHLC( 0 , MAtv , 0 , MAtv , "", colorGrey50, styleCloud | styleNoRescale|styleNoLabel);
 
}
 
Buy=Cross(MAuv,MAdv);
Sell=Cross(MAdv,MAuv);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone) ,colorBlue);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed);
Filter=Buy OR Sell;
Buy=ExRem(Buy,Sell); Sell=ExRem(Sell,Buy);
AddColumn(Close,"Close");AddColumn(Volume,"Total Volume");AddColumn(Buy,"Buy"); AddColumn(Sell,"sell"); 
 
/* better visibility of zero line: */
Plot(0, "", colorYellow, 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, "Amimals War", 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, styleArea|styleOwnScale|styleNoLabel);
}
GraphXSpace = 0.5;
_SECTION_END();

_SECTION_BEGIN("Background");
 SetChartBkColor(ParamColor("Outer panel",colorBlack)); // color of outer border 
 SetChartBkGradientFill( ParamColor("Inner panel upper",colorBlack),ParamColor("Inner panel lower",colorBlack));
 tchoice=Param("Title Selection ",2,1,2,1);
_SECTION_END();
Previous
Next Post »