Volume has to be the most underrated market variable used in technical analysis. But if you know how to analyze and interpret it, you’ll be able to see market turning points develop and anticipate pullbacks and trend changes.
You can figure out whether the Professionals are buying or selling by analyzing:
The best bar chart indicator applies directly to the price window. If you prefer traditional candlesticks, simply change the name “DRAWBARCHART” in the code to “DRAWCANDLE”.
Source :
// Better Volume Indicator for BarChart
// Original idea by emini-watch.com
// Better Volume Indicator - Summary
// ClimaxUp (Red) : Top, Start Up Trend, Down Trend Continue
// ClimaxDown (White): Bottom, Up Trend Continue, Start Down Trend
// LowVolume (Yellow): Bottom, Top, Up Trend Continue
// Churn (Green): Bottom, Top, Down Trend Continue
// ClimaxChurn (Magenta): Top, Down Trend Continue
// Parameter: History = Boolean
// Parameter: Use2Bars = Boolean
// Parameter: Lookback = 20(Default)
Lookback = 20
ONCE Condition1 = 0
ONCE Condition2 = 0
ONCE Condition3 = 0
ONCE Condition4 = 0
ONCE Condition5 = 0
ONCE Condition6 = 0
ONCE Condition7 = 0
ONCE Condition8 = 0
ONCE Condition9 = 0
ONCE Condition10 = 0
ONCE Condition11 = 0
ONCE Condition12 = 0
ONCE Condition13 = 0
ONCE Condition14 = 0
ONCE Condition15 = 0
ONCE Condition16 = 0
ONCE Condition17 = 0
ONCE Condition18 = 0
ONCE Condition19 = 0
ONCE Condition20 = 0
VolValue = Volume
LowVolValue = VolValue
ClimaxUpValue = VolValue
ClimaxDownValue = VolValue
ChurnValue = VolValue
ClimaxChurnValue = VolValue
//StopVolValue = VolValue
//TrampolineValue = VolValue
//AVVolume = Average[Lookback*2](VolValue)//Average[Lookback*2](VolValue)
IF 0 = 0 THEN
BI = 400
ELSIF 1 = 1 THEN
BI = Lookback //BI=Lookback
ENDIF
IF BARINDEX > BI AND Volume <> 0 THEN
IF Close > Open THEN
Value1 = Volume * (Range / (2 * Range + Open - Close))
ELSIF Close < Open THEN
Value1= Volume * ((Range + Close - Open) / (2 * Range + Close - Open))
ENDIF
IF Close = Open THEN
Value1 = 0.5 * Volume
ENDIF
Value2 = Volume - Value1
Value3 = Value1 + Value2
Value4 = Value1 * Range
Value5 = (Value1 - Value2) * Range
Value6 = Value2 * Range
Value7 = (Value2 - Value1) * Range
IF Range <> 0 THEN
Value8 = Value1 / Range
Value9 = (Value1 - Value2) / Range
Value10 = Value2 / Range
Value11 = (Value2 - Value1) / Range
Value12 = Value3 / Range
ENDIF
Value13 = Value3 + Value3[1]
Value14 = (Value1 + Value1[1]) * (Highest[2](High) - Lowest[2](Low))
Value15 = (Value1 + Value1[1] - Value2 - Value2[1]) * (Highest[2](High) - Lowest[2](Low))
Value16 = (Value2 + Value2[1]) * (Highest[2](High) - Lowest[2](Low))
Value17 = (Value2 + Value2[1] - Value1 - Value1[1]) * (Highest[2](High) - Lowest[2](Low))
IF Highest[2](High) <> Lowest[2](Low) THEN
Value18 = (Value1 + Value1[1]) / (Highest[2](High) - Lowest[2](Low))
ENDIF
Value19 = (Value1 + Value1[1] - Value2 - Value2[1]) / (Highest[2](High) - Lowest[2](Low))
Value20 = (Value2 + Value2[1]) / (Highest[2](High) - Lowest[2](Low))
Value21 = (Value2 + Value2[1] - Value1 - Value1[1]) / (Highest[2](High) - Lowest[2](Low))
Value22 = Value13 / (Highest[2](High) - Lowest[2](Low))
IF 0 = 0 THEN
Condition1 = Value3 = Lowest [Lookback](Value3)
Condition2 = Value4 = Highest[Lookback](Value4) AND Close > Open
Condition3 = Value5 = Highest[Lookback](Value5) AND Close > Open
Condition4 = Value6 = Highest[Lookback](Value6) AND Close < Open
Condition5 = Value7 = Highest[Lookback](Value7) AND Close < Open
Condition6 = Value8 = Lowest [Lookback](Value8) AND Close < Open
Condition7 = Value9 = Lowest [Lookback](Value9) AND Close < Open
Condition8 = Value10 = Lowest [Lookback](Value10) AND Close > Open
Condition9 = Value11 = Lowest [Lookback](Value11) AND Close > Open
Condition10 = Value12 = Highest[Lookback](Value12)
ELSIF 1 = 1 THEN
Condition11 = Value13 = Lowest [Lookback](Value13)
Condition12 = Value14 = Highest[Lookback](Value14) AND Close > Open AND Close[1] > Open[1]
Condition13 = Value15 = Highest[Lookback](Value15) AND Close > Open AND Close[1] > Open[1]
Condition14 = Value16 = Highest[Lookback](Value16) AND Close < Open AND Close[1] < Open[1]
Condition15 = Value17 = Highest[Lookback](Value17) AND Close < Open AND Close[1] < Open[1]
Condition16 = Value18 = Lowest [Lookback](Value18) AND Close < Open AND Close[1] < Open[1]
Condition17 = Value19 = Lowest [Lookback](Value19) AND Close < Open AND Close[1] < Open[1]
Condition18 = Value20 = Lowest [Lookback](Value20) AND Close > Open AND Close[1] > Open[1]
Condition19 = Value21 = Lowest [Lookback](Value21) AND Close > Open AND Close[1] > Open[1]
Condition20 = Value22 = Highest[Lookback](Value22)
ENDIF
// *********************************************************************************************
// Yellow BarChart
IF (Condition1 or Condition11) THEN
LowVol = LowVolValue
DRAWBARCHART(Open,High,Low,Close) COLOURED (255,255,0)
ELSE
LowVol = 0
ENDIF
// Red Barchart
IF (Condition2 or Condition3 or Condition8 or Condition9 or Condition12 or Condition13 or Condition18 or Condition19) THEN
ClimaxUp = ClimaxUpValue
DRAWBARCHART(Open,High,Low,Close)COLOURED (255,0,0)
IF LowVol <> 0 THEN
ClimaxUp = ClimaxUpValue / 2
ENDIF
ELSE
ClimaxUp = 0
ENDIF
// White Barchart
IF (Condition4 or Condition5 or Condition6 or Condition7 or Condition14 or Condition15 or Condition16 or Condition17) THEN
ClimaxDown = ClimaxDownValue
DRAWBARCHART(Open,High,Low,Close)COLOURED (255,255,255)
IF LowVol <> 0 OR ClimaxUp <> 0 THEN
ClimaxDown = ClimaxDownValue
ENDIF
ELSE
ClimaxDown = 0
ENDIF
// Green BarChart
IF (Condition10 or Condition20) THEN
Churn = ChurnValue
DRAWBARCHART(Open,High,Low,Close)COLOURED (0,128,0)
IF LowVol <> 0 OR ClimaxUp <> 0 OR ClimaxDown <> 0 THEN
Churn = ChurnValue / 2
ENDIF
ELSE
Churn = 0
ENDIF
//IF (Condition10 or Condition20) AND (Condition2 or Condition3 or Condition4 or Condition5 or Condition6 or Condition7 or Condition8 or Condition9 or Condition12 or Condition13 or Condition14 or Condition15 or Condition16 or Condition17 or Condition18 or Condition19) THEN
// Magenta BarChart
IF Churn <> 0 AND (ClimaxUp <> 0 OR ClimaxDown <> 0) THEN
ClimaxChurn = ClimaxChurnValue
DRAWBARCHART(Open,High,Low,Close)COLOURED (255,0,255)
ELSE
ClimaxChurn = 0
ENDIF
//StopVolume Orangered BarChart
LocalClosingPosition = 1 - (High - Close) / (High - Low)
IF Volume > Volume[1] AND Range < Range[1] AND ((High > High[1] AND LocalClosingPosition < 0.4) OR (Low < Low[1] AND LocalClosingPosition > 0.6)) THEN
//StopVol = StopVolValue * 1 / 3 // HigherVolume & LowerRange @ HigherHigh or LowerLow - DBlue
DRAWBARCHART(Open,High,Low,Close)COLOURED (255,69,0)
ELSE
//StopVol = 0
ENDIF
//Trampoline Blue BarChart
FOR i = 1 TO 2 // Close together
IF ((ClimaxChurn[i] > 0 OR ClimaxUp[i] > 0) AND (ClimaxChurn > 0 OR ClimaxUp > 0)) AND ((Close[i] > Open[i] AND Close < Open) OR (Close[i] < Open[i] AND Close > Open)) THEN
//Trampoline = TrampolineValue * 1 / 4
BREAK
DRAWBARCHART(Open,High,Low,Close)COLOURED (0,0,255)
ELSE
//Trampoline = 0
ENDIF
NEXT
ENDIF
RETURN
Thanks to Nicolas for this site.