Volume Profile and Market Profile a new wave of market picture

Status
Not open for further replies.

XRAY27

Well-Known Member
Yesterday Double distribution so any BO should be above yesterday high with cap to weekly level of 8745

Once BOF is noted...shorted to Half back refer as tsl then moved to above POC..





Same thing applies for P and b distributions !!! first is bullish and later is bearish

Typo in chart just read it as half back refer point
 
Last edited:

XRAY27

Well-Known Member
Buy setup with 15 pts risk upon the same rule of DD... but not moving anyway !! :D
 
Last edited:
Hi

Code:
_SECTION_BEGIN("PoC & VAL/H"); 
// Section from Old Code to Plot Value Areas and PC
VPTF = ParamList("VP Timeframe","Hourly|Daily|Weekly|Monthly",1);

EnMP2= "Solid";
styleLines = styleLine;
Type="Volume Profile";
Period= VPTF; // ParamList("Base","Hourly|Daily|Weekly|Monthly",1);

Den = 5;					percent  = 70;
ViewTPOCount = 1;			ViewPOC  = 1;
ViewVALVAH = 1;			Viewfill = 1;
Colorpoc=ParamColor("Color POC", colorYellow);

EnIB = ParamToggle("Show Initial Balance", "Yes|No");
IBBars = Param("Initial Balance Bars", 2, 0, 10, 1);

if(Period=="Daily"){
	BarsInDay = BarsSince(Day() != Ref(Day(), -1));
	Bot = TimeFrameGetPrice("L", inDaily, 0);
	Top = TimeFrameGetPrice("H", inDaily, 0);
	Vol = TimeFrameGetPrice("V", inDaily, 0);
}

if(Period=="Hourly"){
	BarsInDay = BarsSince(Minute() != Ref(Minute(), -1));
	Bot = TimeFrameGetPrice("L", in5Minute, 0);
	Top = TimeFrameGetPrice("H", in5Minute, 0);
	Vol = TimeFrameGetPrice("V", in5Minute, 0);
}

if(Period=="Weekly"){
	BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
	Bot = TimeFrameGetPrice("L", inWeekly, 0);
	Top = TimeFrameGetPrice("H", inWeekly, 0);
	Vol = TimeFrameGetPrice("V", inWeekly, 0);
}

if(Period=="Monthly" ){
	BarsInDay = BarsSince(Month() != Ref(Month(), -1));
	Bot = TimeFrameGetPrice("L", inMonthly, 0);
	Top = TimeFrameGetPrice("H", inMonthly, 0);
	Vol = TimeFrameGetPrice("V", inMonthly, 0);
}

CurTop = HHV(H,BarsInDay+1);
Curbot = LLV(L,BarsInDay+1);
Range = Highest(Top-Bot);
TodayRange = Top - Bot;

AveRange = Sum(Top-Bot,30)/30;
LAveRange = AveRange[BarCount-1];

// Initialization
baseX = 0;
baseY = floor(Bot[0]/Den)*Den;
relTodayRange = 0;
firstVisBar = Status("firstvisiblebar");
lastVisBar = Status("lastvisiblebar");

D=.0005;
total=0;
totaldn=0;
totalup=0;
shiftup=0;
shiftdn=0;
startr=0;

for (j=0; j <= 100; j++) {
  x[j] = 0;
}

i0 = 0;
i1 = 0;
for (i=0; i<BarCount; i++) {
  if (BarsInDay[i] == 0 AND i < firstVisBar) {
    i0 = i;
  }
  if (BarsInDay[i] == 0 AND i >= lastVisBar) {
    i1 = i;
  }
}

i1 = BarCount-1;
for (i=i0; i<=i1; i++) {
  if (BarsInDay[i] == 0) {
    baseX = i;
    baseY = floor(Bot[i]/Den)*Den;
    maxY = floor(Top[i]/Den)*Den;
    relTodayRange = (maxY-baseY)/Den;

    for (j=0; j <= relTodayRange; j++) {
      x[j] = 0;
    }
  }
	
	range_x=lastVisBar-firstVisBar;
	spread = Param("X Space", 112, 1, 200, 1);
	tpl = 30;//Param("Time Per Letter (mins)", 30, 1, 360, 1);
	Intervalmin=Interval()/60;
	flt =Param("First Letter (Bars)", 1, 1, 60, 1);
	teb=ParamToggle("To Each Bar","No|Yes");
	Color=Param("Color Threshold",20,1,50,1);
	stopg=0;
	stopr=0;
	new=0;
	
	Voloumeunit=Vol[i]/LastValue(BarsInDay);	
   for (j=0; j<= relTodayRange; j++) {
     if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
		if(Type=="Price Profile"){x[j]=x[j]+1;}
		else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit);}
 	
	  }
   }

  // Draw Initial Balance after 11am bar is complete
  if (BarsInDay[i] == IBBars AND EnIB == 0) {
    Line1 = LineArray(i-2, curtop[i-1],i+7, curtop[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
    Line1 = LineArray(i-2, curbot[i-1],i+7, curbot[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
  }

  // Examine x[j]
  if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) {
    maxXj = 0;
	maxj = 0;
    for (j=0; j<= relTodayRange; j++) {
      if (maxXj < x[j]) {maxXj = x[j]; maxj = j; StaticVarSet("Maxj",j); new=j;
	  }
    }
	for ( n = 1; n <= relTodayRange; n++ ) {
       total[n]=x[n]+total[n-1];
        }
	Value_area=(total[relTodayRange]*percent)/100;

	for ( a = 1; a <= relTodayRange; a++ )
	 {
		if(Maxj-a>0 AND Maxj+a<relTodayRange)
		{
			if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)]>=Value_area) {shiftup=a; shiftdn=a; break;}
	 	}	
		else if(Maxj-a<1 ) 
		{
			if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]>=Value_area){shiftup=a; shiftdn=maxj-1; break;}		
   		}
		else if(Maxj+a>relTodayRange ) 
		{
			if(MaxXj+total[relTodayRange]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)] >=Value_area){shiftup=relTodayRange-maxj; shiftdn=a; break;}		
   		}
	 }

	Vah = LineArray(baseX, baseY+(maxj+shiftup)*Den, i, baseY+(maxj+shiftup)*Den,0,True);
	Val = LineArray(baseX, baseY+(maxj-shiftdn)*Den, i, baseY+(maxj-shiftdn)*Den,0,True);
	poc = LineArray(baseX, baseY+maxj*Den, i, baseY+maxj*Den,0,True);

//Shift for Yesterday's Values
	nobs = ceil(375/(Interval()/60));
	if(ViewVALVAH==1){
		Plot(Vah,"",ParamColor("Color_VA",  colorLightBlue),styleLine|styleNoRescale);
		Plot(Val,"",ParamColor("Color_VA",  colorLightBlue),styleLine|styleNoRescale);
		Plot(Val,"",colorLightGrey,styleDashed|styleNoRescale,0,0,nobs);
		Plot(Vah,"",colorLightGrey,styleDashed|styleNoRescale,0,0,nobs);
	}
	if(ViewPOC==1){
		Plot(poc,"",Colorpoc,styleLine|styleNoRescale);
		Plot(poc,"",colorYellow,styleDashed|styleNoRescale,0,0,nobs);
	}
}
}
_SECTION_END();
The above code is the section which only plots Value Hi/Lo and PoC including yesterdays values but will have same limitations with the original code

Happy :)
 

XRAY27

Well-Known Member
What is this rule of DD? I did not get this point :confused:
Vipul !!! at yesterday lower area we can expect price to pull back so entered @ 8623 POC after closing my short trade with sl 8608 (below day low)..but not moving as expected :(
 

XRAY27

Well-Known Member
Vipul !!! at yesterday lower area we can expect price to pull back so entered @ 8623 POC after closing my short trade with sl 8608 (below day low)..but not moving as expected :(
out @ 8633.45 !!!

just check this !!!

 

wisp

Well-Known Member
Hi

Code:
_SECTION_BEGIN("PoC & VAL/H"); 
// Section from Old Code to Plot Value Areas and PC
VPTF = ParamList("VP Timeframe","Hourly|Daily|Weekly|Monthly",1);

EnMP2= "Solid";
styleLines = styleLine;
Type="Volume Profile";
Period= VPTF; // ParamList("Base","Hourly|Daily|Weekly|Monthly",1);

Den = 5;					percent  = 70;
ViewTPOCount = 1;			ViewPOC  = 1;
ViewVALVAH = 1;			Viewfill = 1;
Colorpoc=ParamColor("Color POC", colorYellow);

EnIB = ParamToggle("Show Initial Balance", "Yes|No");
IBBars = Param("Initial Balance Bars", 2, 0, 10, 1);

if(Period=="Daily"){
	BarsInDay = BarsSince(Day() != Ref(Day(), -1));
	Bot = TimeFrameGetPrice("L", inDaily, 0);
	Top = TimeFrameGetPrice("H", inDaily, 0);
	Vol = TimeFrameGetPrice("V", inDaily, 0);
}

if(Period=="Hourly"){
	BarsInDay = BarsSince(Minute() != Ref(Minute(), -1));
	Bot = TimeFrameGetPrice("L", in5Minute, 0);
	Top = TimeFrameGetPrice("H", in5Minute, 0);
	Vol = TimeFrameGetPrice("V", in5Minute, 0);
}

if(Period=="Weekly"){
	BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
	Bot = TimeFrameGetPrice("L", inWeekly, 0);
	Top = TimeFrameGetPrice("H", inWeekly, 0);
	Vol = TimeFrameGetPrice("V", inWeekly, 0);
}

if(Period=="Monthly" ){
	BarsInDay = BarsSince(Month() != Ref(Month(), -1));
	Bot = TimeFrameGetPrice("L", inMonthly, 0);
	Top = TimeFrameGetPrice("H", inMonthly, 0);
	Vol = TimeFrameGetPrice("V", inMonthly, 0);
}

CurTop = HHV(H,BarsInDay+1);
Curbot = LLV(L,BarsInDay+1);
Range = Highest(Top-Bot);
TodayRange = Top - Bot;

AveRange = Sum(Top-Bot,30)/30;
LAveRange = AveRange[BarCount-1];

// Initialization
baseX = 0;
baseY = floor(Bot[0]/Den)*Den;
relTodayRange = 0;
firstVisBar = Status("firstvisiblebar");
lastVisBar = Status("lastvisiblebar");

D=.0005;
total=0;
totaldn=0;
totalup=0;
shiftup=0;
shiftdn=0;
startr=0;

for (j=0; j <= 100; j++) {
  x[j] = 0;
}

i0 = 0;
i1 = 0;
for (i=0; i<BarCount; i++) {
  if (BarsInDay[i] == 0 AND i < firstVisBar) {
    i0 = i;
  }
  if (BarsInDay[i] == 0 AND i >= lastVisBar) {
    i1 = i;
  }
}

i1 = BarCount-1;
for (i=i0; i<=i1; i++) {
  if (BarsInDay[i] == 0) {
    baseX = i;
    baseY = floor(Bot[i]/Den)*Den;
    maxY = floor(Top[i]/Den)*Den;
    relTodayRange = (maxY-baseY)/Den;

    for (j=0; j <= relTodayRange; j++) {
      x[j] = 0;
    }
  }
	
	range_x=lastVisBar-firstVisBar;
	spread = Param("X Space", 112, 1, 200, 1);
	tpl = 30;//Param("Time Per Letter (mins)", 30, 1, 360, 1);
	Intervalmin=Interval()/60;
	flt =Param("First Letter (Bars)", 1, 1, 60, 1);
	teb=ParamToggle("To Each Bar","No|Yes");
	Color=Param("Color Threshold",20,1,50,1);
	stopg=0;
	stopr=0;
	new=0;
	
	Voloumeunit=Vol[i]/LastValue(BarsInDay);	
   for (j=0; j<= relTodayRange; j++) {
     if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
		if(Type=="Price Profile"){x[j]=x[j]+1;}
		else if(Type=="Volume Profile"){x[j]=x[j]+round(V[i]/Voloumeunit);}
 	
	  }
   }

  // Draw Initial Balance after 11am bar is complete
  if (BarsInDay[i] == IBBars AND EnIB == 0) {
    Line1 = LineArray(i-2, curtop[i-1],i+7, curtop[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
    Line1 = LineArray(i-2, curbot[i-1],i+7, curbot[i-1],0,True);
    Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
  }

  // Examine x[j]
  if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) {
    maxXj = 0;
	maxj = 0;
    for (j=0; j<= relTodayRange; j++) {
      if (maxXj < x[j]) {maxXj = x[j]; maxj = j; StaticVarSet("Maxj",j); new=j;
	  }
    }
	for ( n = 1; n <= relTodayRange; n++ ) {
       total[n]=x[n]+total[n-1];
        }
	Value_area=(total[relTodayRange]*percent)/100;

	for ( a = 1; a <= relTodayRange; a++ )
	 {
		if(Maxj-a>0 AND Maxj+a<relTodayRange)
		{
			if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)]>=Value_area) {shiftup=a; shiftdn=a; break;}
	 	}	
		else if(Maxj-a<1 ) 
		{
			if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]>=Value_area){shiftup=a; shiftdn=maxj-1; break;}		
   		}
		else if(Maxj+a>relTodayRange ) 
		{
			if(MaxXj+total[relTodayRange]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)] >=Value_area){shiftup=relTodayRange-maxj; shiftdn=a; break;}		
   		}
	 }

	Vah = LineArray(baseX, baseY+(maxj+shiftup)*Den, i, baseY+(maxj+shiftup)*Den,0,True);
	Val = LineArray(baseX, baseY+(maxj-shiftdn)*Den, i, baseY+(maxj-shiftdn)*Den,0,True);
	poc = LineArray(baseX, baseY+maxj*Den, i, baseY+maxj*Den,0,True);

//Shift for Yesterday's Values
	nobs = ceil(375/(Interval()/60));
	if(ViewVALVAH==1){
		Plot(Vah,"",ParamColor("Color_VA",  colorLightBlue),styleLine|styleNoRescale);
		Plot(Val,"",ParamColor("Color_VA",  colorLightBlue),styleLine|styleNoRescale);
		Plot(Val,"",colorLightGrey,styleDashed|styleNoRescale,0,0,nobs);
		Plot(Vah,"",colorLightGrey,styleDashed|styleNoRescale,0,0,nobs);
	}
	if(ViewPOC==1){
		Plot(poc,"",Colorpoc,styleLine|styleNoRescale);
		Plot(poc,"",colorYellow,styleDashed|styleNoRescale,0,0,nobs);
	}
}
}
_SECTION_END();
The above code is the section which only plots Value Hi/Lo and PoC including yesterdays values but will have same limitations with the original code

Happy :)
Thanks a lot. These numbers are slightly different than the justinftech ones which are of course different from the market profile ones.

XRAY bro, which numbers to go with?
 

XRAY27

Well-Known Member
Thanks a lot. These numbers are slightly different than the justinftech ones which are of course different from the market profile ones.

XRAY bro, which numbers to go with?
Wisp !!! i'm just going with the AFL which i posted !!! as long as trade logic is fine ,any afl is ok !!!
 
Last edited:
Status
Not open for further replies.

Similar threads