Hi TRO,
Hi Michal,
Hi All,
Normalizing means "transforming" a non normalized indicator into a normalized one that is to say that this indicator will, once normalized, vary between [0, +100] or [1, +1] or even [100, + 100].
When John Bollinger talks about the Bollinger Normalized Volume Indicator, it is a little bit different as the Bollinger Normalized Volume vary between [0, Unlimited] but with the following levels [0, +100, +200, + 300, Unlimited].
More precisely, the 100 Levels equals the X Average of the Volume.
Usually the 50 SMA Average is used.
For Daily or Weekly charts, it is O.K. but for Intraday Volume it is a big mistake because the Intrady Volumes vary strongly during the trading session with peaks at the beginning and at the end of the session and throughs during lunchs. Then how to interpret intraday volumes ?
Easy to say but more difficult to code in EL.
(To continue in 3 minutes)
Automated "Normalized Length" to intraday interval
Moderator: moderators

 rank: <50 posts
 Posts: 19
 Joined: Fri Aug 18, 2006 8:36 am
 Reputation: 0
 Gender:
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.

 rank: <50 posts
 Posts: 19
 Joined: Fri Aug 18, 2006 8:36 am
 Reputation: 0
 Gender:
John Bollinger says that the Daily Saisonnality should be used for intraday volumes.
1 day or preferably 2 or 3 days.
That is 1 or 2 or 3 x (390 minutes) for stocks.
That is 1 or 2 or 3 x (480 minutes) for eminis.
Then if we play stocks, we should create an input called :
TradingSessionLengthInMinutes(390)
Then the normalization will be done as follows :
For a 1 minute chart, the Bollinger Normalized Volume's 100 Level will be the 390/780/1170 Average of 1 Minute Volume Bars.
For a 3 minute chart, the Bollinger Normalized Volume's 100 Level will be the 130/260/390 Average of 3 minute Volume Bars.
It is easy to code but what I would like is that the Indicator automatically detects if running on Charts or on RadarScreen.
This is done in the EL code attached.
AND that the EL code detects the Interval in which the indicator is inserted
for AUTOMATIC VOLUME AVERAGE LENGTH CALCULATION for Normalizing.
My code is supplied hereafter... in 3 minutes.
1 day or preferably 2 or 3 days.
That is 1 or 2 or 3 x (390 minutes) for stocks.
That is 1 or 2 or 3 x (480 minutes) for eminis.
Then if we play stocks, we should create an input called :
TradingSessionLengthInMinutes(390)
Then the normalization will be done as follows :
For a 1 minute chart, the Bollinger Normalized Volume's 100 Level will be the 390/780/1170 Average of 1 Minute Volume Bars.
For a 3 minute chart, the Bollinger Normalized Volume's 100 Level will be the 130/260/390 Average of 3 minute Volume Bars.
It is easy to code but what I would like is that the Indicator automatically detects if running on Charts or on RadarScreen.
This is done in the EL code attached.
AND that the EL code detects the Interval in which the indicator is inserted
for AUTOMATIC VOLUME AVERAGE LENGTH CALCULATION for Normalizing.
My code is supplied hereafter... in 3 minutes.

 rank: <50 posts
 Posts: 19
 Joined: Fri Aug 18, 2006 8:36 am
 Reputation: 0
 Gender:
Here is the picture and the code and the comments.
Bollinger Normalized Volume is :
 Blue if Volume are under the 100 Level for at least 6 periods ina row;
 Cyan if under the 100 Level;
 Still Cyan if under the 200 Level;
 Yellow if above the 200 Level and under the 300 Level;
 Orange (in French) if above 300.
Bollinger Normalized Volume is :
 Blue if Volume are under the 100 Level for at least 6 periods ina row;
 Cyan if under the 100 Level;
 Still Cyan if under the 200 Level;
 Yellow if above the 200 Level and under the 300 Level;
 Orange (in French) if above 300.

 rank: <50 posts
 Posts: 19
 Joined: Fri Aug 18, 2006 8:36 am
 Reputation: 0
 Gender:
Here they are
Here is a picture and the EL code text.
Just copy past in your TS platform.
Olivier
[LegacyColorValue = false];
{ Last revision by OB : 10/02/2007 }
{ Normalized_Volume = John Bollinger's Normalized (between 0  100  200  300  Unlimited) Volume (Indicator)
with 100/200/300 Levels based on 1 up to 3 times an X Periods (default Input = 50) Volume Average) }
Inputs :
Vol_Avg_Len(50),
Bo_N_Vol_Lev_100(100),
Bo_N_Vol_Lev_200(200),
Bo_N_Vol_Lev_300(300),
Bo_N_Vol_Col(Cyan),
Bo_N_Vol_Lev_100_Col(Red),
Bo_N_Vol_Lev_200_Col(Red),
Bo_N_Vol_Lev_300_Col(Red);
Variables :
Vol_Val(0),
Vol_Avg_Val(0),
Bo_N_Vol_Val(0),
{ Variables that determine if an indicator is executing in a Chart or in RadarScreen }
VolQty(0),
Chart(False),
RadarScreen(False),
Chart_Or_RadarScreen(0);
If CurrentBar = 1 Then Begin
Chart_Or_RadarScreen = getappinfo(aiapplicationtype);
If Chart_Or_RadarScreen = 1 Then Chart = True Else Chart = False;
If Chart_Or_RadarScreen = 2 Then RadarScreen = True Else RadarScreen = False;
If Chart = False And RadarScreen = False Then RaiseRunTimeError ("This indicator only runs in Charts or in RadarScreen.");
End;
{ Code that determines the Volume Value with an Indicator that runs both in Charts And in RadarScreen.
Variable name used is VolQty, both for Charts and RadarScreen.
This code works for all time frame intervals through the Reserved Word Function "BarType" that returns
the following values : 0 for TickBar, 1 for Intraday, 2 for Daily, 3 for Weekly, 4 for Monthly and 5 for Point& Figure Intervals }
If Chart Then Begin
If BarType = 0 Or BarType = 1 Then VolQty = Round(Ticks, 0)
Else
If BarType = 2 Or BarType = 3 Or BarType = 4 Then VolQty = Round(Volume, 0);
End
Else
If RadarScreen Then VolQty = Round(Volume, 0);
{ Variable Assignements }
Vol_Val = VolQty;
Vol_Avg_Val = Average(Vol_Val, Vol_Avg_Len);
Bo_N_Vol_Val = IFF(Vol_Avg_Val <> 0, Vol_Val / Vol_Avg_Val * 100, 1);
{ Bo_N_Vol_Val : Color Criteria }
If Bo_N_Vol_Val < Bo_N_Vol_Lev_100 Then Begin
SetPlotColor(1, Cyan);
End;
If Bo_N_Vol_Val >= Bo_N_Vol_Lev_100 And Bo_N_Vol_Val < Bo_N_Vol_Lev_200 Then Begin
SetPlotColor(1, Cyan);
End;
If Bo_N_Vol_Val >= Bo_N_Vol_Lev_200 And Bo_N_Vol_Val < Bo_N_Vol_Lev_300 Then Begin
SetPlotColor(1, Yellow);
End;
If Bo_N_Vol_Val >= Bo_N_Vol_Lev_300 Then Begin
SetPlotColor(1, RGB(255,128,0));
End;
If Bo_N_Vol_Val < 67 { Volume Congestion }
And Bo_N_Vol_Val[1] < 67
And Bo_N_Vol_Val[2] < 67
And Bo_N_Vol_Val[3] < 67
And Bo_N_Vol_Val[4] < 67
And Bo_N_Vol_Val[5] < 67
Then Begin
SetPlotColor(1, Blue);
End;
SetPlotWidth(1, 3);
{ Bo_N_Volume : All Plots }
Plot1(Bo_N_Vol_Val, "Bo_N_Vol");
Plot2(Bo_N_Vol_Lev_100, "BoNVolLev100", Bo_N_Vol_Lev_100_Col);
Plot3(Bo_N_Vol_Lev_200, "BoNVolLev200", Bo_N_Vol_Lev_200_Col);
Plot4(Bo_N_Vol_Lev_300, "BoNVolLev300", Bo_N_Vol_Lev_300_Col);
Just copy past in your TS platform.
Olivier
[LegacyColorValue = false];
{ Last revision by OB : 10/02/2007 }
{ Normalized_Volume = John Bollinger's Normalized (between 0  100  200  300  Unlimited) Volume (Indicator)
with 100/200/300 Levels based on 1 up to 3 times an X Periods (default Input = 50) Volume Average) }
Inputs :
Vol_Avg_Len(50),
Bo_N_Vol_Lev_100(100),
Bo_N_Vol_Lev_200(200),
Bo_N_Vol_Lev_300(300),
Bo_N_Vol_Col(Cyan),
Bo_N_Vol_Lev_100_Col(Red),
Bo_N_Vol_Lev_200_Col(Red),
Bo_N_Vol_Lev_300_Col(Red);
Variables :
Vol_Val(0),
Vol_Avg_Val(0),
Bo_N_Vol_Val(0),
{ Variables that determine if an indicator is executing in a Chart or in RadarScreen }
VolQty(0),
Chart(False),
RadarScreen(False),
Chart_Or_RadarScreen(0);
If CurrentBar = 1 Then Begin
Chart_Or_RadarScreen = getappinfo(aiapplicationtype);
If Chart_Or_RadarScreen = 1 Then Chart = True Else Chart = False;
If Chart_Or_RadarScreen = 2 Then RadarScreen = True Else RadarScreen = False;
If Chart = False And RadarScreen = False Then RaiseRunTimeError ("This indicator only runs in Charts or in RadarScreen.");
End;
{ Code that determines the Volume Value with an Indicator that runs both in Charts And in RadarScreen.
Variable name used is VolQty, both for Charts and RadarScreen.
This code works for all time frame intervals through the Reserved Word Function "BarType" that returns
the following values : 0 for TickBar, 1 for Intraday, 2 for Daily, 3 for Weekly, 4 for Monthly and 5 for Point& Figure Intervals }
If Chart Then Begin
If BarType = 0 Or BarType = 1 Then VolQty = Round(Ticks, 0)
Else
If BarType = 2 Or BarType = 3 Or BarType = 4 Then VolQty = Round(Volume, 0);
End
Else
If RadarScreen Then VolQty = Round(Volume, 0);
{ Variable Assignements }
Vol_Val = VolQty;
Vol_Avg_Val = Average(Vol_Val, Vol_Avg_Len);
Bo_N_Vol_Val = IFF(Vol_Avg_Val <> 0, Vol_Val / Vol_Avg_Val * 100, 1);
{ Bo_N_Vol_Val : Color Criteria }
If Bo_N_Vol_Val < Bo_N_Vol_Lev_100 Then Begin
SetPlotColor(1, Cyan);
End;
If Bo_N_Vol_Val >= Bo_N_Vol_Lev_100 And Bo_N_Vol_Val < Bo_N_Vol_Lev_200 Then Begin
SetPlotColor(1, Cyan);
End;
If Bo_N_Vol_Val >= Bo_N_Vol_Lev_200 And Bo_N_Vol_Val < Bo_N_Vol_Lev_300 Then Begin
SetPlotColor(1, Yellow);
End;
If Bo_N_Vol_Val >= Bo_N_Vol_Lev_300 Then Begin
SetPlotColor(1, RGB(255,128,0));
End;
If Bo_N_Vol_Val < 67 { Volume Congestion }
And Bo_N_Vol_Val[1] < 67
And Bo_N_Vol_Val[2] < 67
And Bo_N_Vol_Val[3] < 67
And Bo_N_Vol_Val[4] < 67
And Bo_N_Vol_Val[5] < 67
Then Begin
SetPlotColor(1, Blue);
End;
SetPlotWidth(1, 3);
{ Bo_N_Volume : All Plots }
Plot1(Bo_N_Vol_Val, "Bo_N_Vol");
Plot2(Bo_N_Vol_Lev_100, "BoNVolLev100", Bo_N_Vol_Lev_100_Col);
Plot3(Bo_N_Vol_Lev_200, "BoNVolLev200", Bo_N_Vol_Lev_200_Col);
Plot4(Bo_N_Vol_Lev_300, "BoNVolLev300", Bo_N_Vol_Lev_300_Col);
 Attachments

 2007 02 16  Normalized Volume.jpg (69.46 KiB) Viewed 493 times
Please add www.kreslik.com to your ad blocker white list.
Thank you for your support.
Thank you for your support.