Volume Spread Analysis

bunny

Well-Known Member
I agree with you on that point. It is a promotional for tradeguider software. But the manual method seems to be working for me, especially after reading Gavin Holmes VSA chart commentary. The first book from Tom William's(The Undeclared Secrets) is a good book to warm up and open your eyes, but it lacks depth and real-life explanation. I trade using VSA only. Served good after Holmes book.

Elsewhere on the internet, there is not much talk happening on VSA. There are always tiny groups of enthusiasts but they never mature into large communities or ecosystems where new people can pick it up!
 

Mr.G

Well-Known Member
I dont really believe in price action as much as VSA as it is much more logical.
 

avny

Well-Known Member
So, how is it going guys? Still pursuing VSA? The current phase of Indian stock markets is a nice demonstration of VSA principles playing out nicely in live.
hi bunny,
gone through the book"trading in the shadow",a good book with logic

but it is not easy to understand and difficult to put in practical

if u have time,then kindly post some charts with explanation

it will help for traders who want to understand VSA

thanks
 
Dear karthikmarar,

I should not be here in this advance analysis forum since i am just a learner and never understand the behavior of this Manipulated market where all kinds of circular trading and exposed (existing positions being held, short / long ) information of most retail traders may be available to a very small group who can easily swing the trend in some other direction. However assuming i am totally wrong why should one use "Volume based analysis" and not "Delivery based analysis" ?

Volume can again be manipulated ...may be delivery too if it is a circular trading :( so what is the real value of all this unless there is some kind of serious protection in the Stock exchange about the status (Open or closed , long / short status, starting from the information protection even at broking agent's servers) , is that not some kind violation of privacy information ?

I have an account with Sherkhan and dont have an advance charting software the kind you all are using :( .


your views please ...

Regards
 
hello ,
im joining this vsa thread and post my 1st analsye while learning also rom forums and books

usdjpy down last week and now its on monthly support

on h4 timeframe 24th january
(4pm) candle 1 = an upclose doji with high volume after downtrend

(8pm) candle 2 = low volume when price go down at support

Did SM accumate on candle1 and dont participate when price moved down on candle2 ?
Can we expect a bullish move on next days?
 
Last edited:
Hi Master can please check and correct some error in the code below. thanks alotSir.
//+------------------------------------------------------------------+
//| VOLUME SWINGS & SR LEVELS.mq4 |
//| Copyright © 2008, FOREXflash. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, FOREXflash"
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue


extern color TrendUpColor=Blue;
extern color TrendDownColor=Red;
extern bool SnapExtremumsToLevelOnChar=True;
extern int FractalBarsOnEachSide=5;
extern int ProceedMaxHistoryBars=1000;
extern int LevelActuality=160;
extern bool RestDefaultTimeframeValues=1;
extern int ExtremumToLevelMaxGap=100;
extern double PriceDeltaFor1Bar=20;

int LevelLength[];
int LevelWidth[];
int PriceCrossedLevel;
double long[];
double short[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
ObjectsDeleteAll();
IndicatorBuffers(2);
SetIndexBuffer(0,long);
SetIndexBuffer(1,short);
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
int i=0;

for (i=Bars-1;i>=0;i--)
if (ObjectFind("Level_"+i)!=-1)
ObjectDelete("Level_"+i);
for (i=Bars-1;i>=0;i--)
if (ObjectFind("Trend_"+i)!=-1)
ObjectDelete("Trend_"+i);
return(0);
}
//+-------------------------------------------+
int LastBarWasHighLow(int LELB, int LEHB)
{
if (LELB==-1 && LEHB!=-1)
return(1);
if (LELB!=-1 && LEHB==-1)
return(-1);
if (LELB!=-1 && LEHB!=-1 && LELB>LEHB)
return(1);
if (LELB!=-1 && LEHB!=-1 && LELB<LEHB)
return(-1);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,j;
int BarsToCheck;
int Stop;
int CurrState;
int LastExtremumHighBar=-1;
int LastExtremumLowBar=-1;
int LastExtremumBar=-1;
double iFractalValue=0,jFractalValue=0;

SetIndexStyle(0,DRAW_ARROW,0,3);
SetIndexArrow(0,159);
SetIndexStyle(1,DRAW_ARROW,0,3);
SetIndexArrow(1,159);
ArrayInitialize(long,0);
ArrayInitialize(short,0);

if (RestDefaultTimeframeValues==1)
{
switch (Period())
{
case 1:
{
ExtremumToLevelMaxGap=2;
PriceDeltaFor1Bar=0.2;
break;
}
case 5:
{
ExtremumToLevelMaxGap=5;
PriceDeltaFor1Bar=0.2;
break;
}
case 15:
{
ExtremumToLevelMaxGap=8;
PriceDeltaFor1Bar=0.2;
break;
}
case 30:
{
ExtremumToLevelMaxGap=10;
PriceDeltaFor1Bar=0.3;
break;
}
case 60:
{
ExtremumToLevelMaxGap=15;
PriceDeltaFor1Bar=0.4;
break;
}
case 240:
{
ExtremumToLevelMaxGap=25;
PriceDeltaFor1Bar=0.4;
break;
}
case 1440:
{
ExtremumToLevelMaxGap=75;
PriceDeltaFor1Bar=1.5;
break;
}
case 10080:
{
ExtremumToLevelMaxGap=150;
PriceDeltaFor1Bar=5;
break;
}
case 43200:
{
ExtremumToLevelMaxGap=300;
PriceDeltaFor1Bar=24;
break;
}
}
}
//+------------------------------------------------------------------+
PriceCrossedLevel=ExtremumToLevelMaxGap*2;

ArrayResize(LevelLength,Bars);
ArrayInitialize(LevelLength,0);
ArrayResize(LevelWidth,Bars);
ArrayInitialize(LevelWidth,1);

if (FractalBarsOnEachSide<=0)
FractalBarsOnEachSide=1;


for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{

if (i==Lowest(Symbol(),Period(),MODE_LOW,FractalBarsOnEachSide*2+1,i-FractalBarsOnEachSide))
{
switch (LastBarWasHighLow(LastExtremumLowBar,LastExtremumHighBar))
{
case -1:
{
if (Low<Low[LastExtremumLowBar])
{
long=Low;
long[LastExtremumLowBar]=0;
LastExtremumLowBar=i;
}
break;
}
case 1:
{
if (Low<High[LastExtremumHighBar])
{
long=Low;
LastExtremumLowBar=i;
}
break;
}
case 0:
{
long=Low;
LastExtremumLowBar=i;
break;
}
}
}

if (i==Highest(Symbol(),Period(),MODE_HIGH,FractalBarsOnEachSide*2+1,i-FractalBarsOnEachSide) && long==0)
{
switch (LastBarWasHighLow(LastExtremumLowBar,LastExtremumHighBar))
{
case 1:
{
if (High>High[LastExtremumHighBar])
{
short=High;
short[LastExtremumHighBar]=0;
LastExtremumHighBar=i;
}
break;
}
case -1:
{
if (High>Low[LastExtremumLowBar])
{
short=High;
LastExtremumHighBar=i;
}
break;
}
case 0:
{
short=High;
LastExtremumHighBar=i;
break;
}
}
}
}


for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (long==Low)
{
Stop=-1;
CurrState=0;
for (j=i-1;j>=0 && Stop==-1;j--)
{
if (CurrState==-1)
if (High[j]>Low+(i-j)*PriceDeltaFor1Bar*Point+PriceCrossedLevel*Point)
Stop=j;
if (CurrState==0)
if (Low[j]<Low+(i-j)*PriceDeltaFor1Bar*Point-PriceCrossedLevel*Point)
CurrState=-1;
}
if (Stop!=-1)
LevelLength=i-Stop;
else
LevelLength=i;
}

if (short==High)
{
Stop=-1;
CurrState=0;
for (j=i-1;j>=0 && Stop==-1;j--)
{
if (CurrState==1)
if (Low[j]<High+(i-j)*PriceDeltaFor1Bar*Point-PriceCrossedLevel*Point)
Stop=j;
if (CurrState==0)
if (High[j]>High+(i-j)*PriceDeltaFor1Bar*Point+PriceCrossedLevel*Point)
CurrState=1;
}
if (Stop!=-1)
LevelLength=i-Stop;
else
LevelLength=i;
}
}


for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (LevelLength>0)
{
if (long!=0)
iFractalValue=long;
if (short!=0)
iFractalValue=short;
BarsToCheck=MathMin(LevelActuality,LevelLength);
j=i-1;
LevelLength=BarsToCheck;
while (BarsToCheck>0)
{
if (LevelLength[j]>0)
{
if (long[j]!=0)
jFractalValue=long[j];
if (short[j]!=0)
jFractalValue=short[j];

if (MathAbs(iFractalValue+(i-j)*PriceDeltaFor1Bar*Point-jFractalValue)<ExtremumToLevelMaxGap*Point)
{
BarsToCheck=MathMin(LevelActuality,LevelLength[j]);
LevelLength=i-j+BarsToCheck;
LevelLength[j]=0;
LevelWidth++;
if (SnapExtremumsToLevelOnChar==1)
{
if (long[j]!=0)
{
long[j]=iFractalValue+(i-j)*PriceDeltaFor1Bar*Point;
}
if (short[j]!=0)
{
short[j]=iFractalValue+(i-j)*PriceDeltaFor1Bar*Point;
}
}
}
}
BarsToCheck--;
j--;
}
}
}

//+------------------------------------------------------------------+
for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (long!=0 || short!=0)
{
if (LastExtremumBar!=-1)
{
if (long!=0)
{
ObjectCreate(StringConcatenate("Trend_",i),OBJ_TREND,0,
Time[LastExtremumBar],short[LastExtremumBar],Time,long);
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_COLOR,TrendDownColor);

//+---------+
int barshift1 = iBarShift( NULL, 0, Time[LastExtremumBar], false) ;
int barshift2 = iBarShift( NULL, 0, short[LastExtremumBar], false) ;
double volumeSum = 0.0;
for (int i2 = barshift1; i2 <= barshift2; i2++)
{
volumeSum = volumeSum + Volume;
}
string label = TimeToStr(Time[LastExtremumBar]) + TimeToStr(short[LastExtremumBar]) + MathRand();
double ordVolume = volumeSum/((barshift2 - barshift1) + 1);

if(ObjectCreate(label,OBJ_TEXT,0,Time[LastExtremumBar],Open[barshift1],0,0,0,0))
ObjectSetText(label,DoubleToStr(ordVolume,0),19,"Tahoma",Yellow);


}
if (short!=0)
{
ObjectCreate(StringConcatenate("Trend_",i),OBJ_TREND,0,
Time[LastExtremumBar],long[LastExtremumBar],Time,short);
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_COLOR,TrendUpColor);
}
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_RAY,0);
ObjectSet(StringConcatenate("Trend_",i),OBJPROP_WIDTH,1);

//+---------+
int barshift1a = iBarShift( NULL, 0, Time[LastExtremumBar], false) ;
int barshift2a = iBarShift( NULL, 0, long[LastExtremumBar], false) ;
double volumeSum2 = 0.0;
for (int i3 = barshift1a; i3 <= barshift2a; i3++)
{
volumeSum2 = volumeSum2 + Volume;
}
string labela = TimeToStr(Time[LastExtremumBar]) + TimeToStr(long[LastExtremumBar]) + MathRand();
double ordVolume2 = volumeSum2/((barshift2a - barshift1a) + 1);

if(ObjectCreate(labela,OBJ_TEXT,0,Time[LastExtremumBar],Open[barshift1a],0,0,0,0))
ObjectSetText(labela,DoubleToStr(ordVolume2,0),19,"Tahoma",Yellow);

}
LastExtremumBar=i;
}
}


for (i=MathMin(ProceedMaxHistoryBars,Bars-FractalBarsOnEachSide-1);i>=FractalBarsOnEachSide;i--)
{
if (LevelLength!=0)
{
if (long!=0)
iFractalValue=long;
if (short!=0)
iFractalValue=short;

ObjectCreate(StringConcatenate("Level_",i),OBJ_TREND,0,
Time,iFractalValue,Time[i-LevelLength],iFractalValue+LevelLength*PriceDeltaFor1Bar*Point);
ObjectSet(StringConcatenate("Level_",i),OBJPROP_RAY,0);
if (LevelWidth>1)
{
ObjectSet(StringConcatenate("Level_",i),OBJPROP_WIDTH,MathMin(LevelWidth,5));
if (LevelWidth==2)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_COLOR,LightGray);
if (LevelWidth==3)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_COLOR,Silver);
if (LevelWidth==4)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_COLOR,DarkGray);
if (LevelWidth>=5)
ObjectSet(StringConcatenate("Level_",i),OBJPROP_COLOR,Gray);
}
else
{
ObjectSet(StringConcatenate("Level_",i),OBJPROP_COLOR,LightGray);
ObjectSet(StringConcatenate("Level_",i),OBJPROP_STYLE,STYLE_DOT);
}
}
}

return(0);
}

//+------------------------------------------------------------------+
 

yachusai

Well-Known Member
last week i saw hindalco . As per VSA in my point of view the last day it end with no demand bar with low volume comapre with last 2 may i conclude that is a down trend and this is a short time . pls crt me if anything i miss it in my observation. thank you
 
karthikmarar man every new trader should read your post ... it took me decade to understand that principle after taking large losses.

at one point u do your own TA why that happened .why price falled or ride. by time u learn it;s too late.

you have explained all things every easily and it can save a decade of experience to gain that :)

good work buddy . i read your few pages and will continue to read it .
God bless you :)
 

Similar threads