Welcome to the Traders Laboratory Forums.
Trading Indicators Post your custom trading indicators. If you download, remember to click INSTALL.

Reply
Volume Profile Details »»
Volume Profile
Platform: 8, by pinonirvana pinonirvana is offline
Developer Last Online: May 2010 Show Printable Version Email this Page

Platform: Tradestation Rating:
Released: 02-16-2010 Last Update: Never Installs: 3
 
No support by the author.

Dear friends,

I have Volume Profile coded for Ninja Trader.
Is someone able to translate it into tradestation Easy Language please??????

Thank you...

Download Now

File Type: zip PriceVolumeHistogram.zip (6.9 KB, 174 views)

Show Your Support

  • If you like to thanks you by the author -> Click Thanks to the Author
  • This modification may not be copied, reproduced or published elsewhere without the author's permission.
The Following 3 Users Say Thank You to pinonirvana For This Useful Post:
dimlotzad (02-25-2010), pchan (03-16-2010), tdilbert (06-23-2010)

Comments
Old 02-16-2010, 09:01 AM   #2

shrike's Avatar

Join Date: Jun 2009
Location: fantasy
Posts: 85
Ignore this user

Thanks: 44
Thanked 24 Times in 22 Posts

Re: Volume Profile

Hi Pino

I think you are searching this :

Code:
[LegacyColorValue = TRUE];


input:compress(1),len(30),letter1(1),txtcolr(7),opncol(6),closcol(6),lastcol(6),VAprcnt(.70),Valcol(5),
Valsize(3),Stime(Sess1StartTime),passwrd("dxlgkgk79ds8sncdk");

vars:lett("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),t1(0),vsize(0),cpt(0),dl(0),
lcount(1),fp(0),daynum(0),d0(0),mid(0),dlo(0),pc(0),pc2(0),skp(0),labl(0),vala(0),vap(0),cp(0),t0(0),nuflag(0),
hh(0),ll(0),x(0),et(0), clet(""),curtxt(""),th(0),tl(0),tpstr("00"),tot(0),va(0),d2p(0),oldclet(""),
barhi(0),barlo(0),mintick(0),xpts(0),price(0),up(0),dn(0),oldup(0),olddn(0),flag(0),flag2(0) ;

array:pri[10000](0),tpo[10000](0),pristr[10000]("");


nuflag=0;
if t0 <= Sess1EndTime and t > Sess1EndTime and Sess2StartTime <> 0 then nuflag=1;
if d <> d0 and Sess2StartTime = Sess2EndTime then nuflag=1;
if t0=sess1endtime then nuflag=1;
if  currentbar=1  or nuflag=1   then begin
	if currentbar=1 then begin
		vap=VAprcnt;
		x=currentdate;
		if x < 991001 and x > 250101 and passwrd ="bngjdfjru57er" then value98=1; 
		if x < 991231 and x > 250101 and passwrd ="dxlgkgk79ds8sncdk" then value98=1; 
		if BlockNumber <> 32474  then value98=1;	
		value97= 1/value98;
		vsize=mod(valsize+7,7);        
		if vsize < 2  then value88=5 else value88=vsize;
		mintick = 1 point * minmove * compress; 
		xpts=500*mintick;
	end;
	lcount=letter1;
	if currentbar > 1 then begin
		if valcol <> 0 and flag2=0 then begin
			mid=0;value23=0;
			cpt=tl;cp=tl + (th-tl)/2; {center of dist.}
			for x = tl to th begin 
				if pristr[x] <> "" then begin
					pristr[x]=nutpstr(tpo[x],pristr[x],pri[x]);
					value23=value23 + tpo[x]; {total tpo count}
					if tpo[x]=mid and x <= cp then cpt=x;
					if tpo[x]=mid and x>cp and(x-cp) < AbsValue(cp-cpt) then cpt=x;
					if tpo[x] > mid then begin
						cpt=x;
						mid = tpo[x];
					end;
				end;
			end;
			va=value23 * vap;

			x=mid;up=cpt;dn=cpt;
			while x < va begin
				value19=tpo[up+1]+tpo[up+2];  value20=tpo[dn-1]+tpo[dn-2];
				if value19 >= value20 then begin
					if x+tpo[up+1] >= va then begin
						x=x+tpo[up+1]; up=up+1;
					end else begin
						x=x+value19;  up=up+2;
					end;
				end else begin
					if x+tpo[dn-1] >= va then begin
						x=x+tpo[dn-1]; dn=dn-1;
					end else begin
						x=x+value20;  dn=dn-2;
					end;				
				end;
			end;	
			if up > th then up=th; if dn < tl then dn=tl;	
			up= fp+((up-500)*mintick);
			dn=fp+((dn-500)*mintick);
			value62=fp+((cpt-500)*mintick);
			labl= text_new(d2p,t1,dl-mintick,"VA:"+mp_str32(dn)+" "+mp_str32(up));
			TEXT_SETSTYLE(labl,0,2);	
			TEXT_SETCOLOR(labl,valcol);
			vala=TL_New(d2p,t1,up,d2p,t1,dn);
			TL_SetColor(vala,valcol);
			TL_SetSize(vala,vsize);
			
			value60=TL_New(d2p,t1,value62+mintick/15,d2p,t1,value62-mintick/15);				
			TL_SetColor(value60,valcol);
			TL_SetSize(value60,value88);
		end;
		pc2=0;
		for value4=tl to th begin
			price=fp+((value4-500)*mintick) ;					
			if price <= pc  then pc2=value4;  
		end;
		if pc2=0 then pc2=barlo;
		curtxt=pristr[pc2];
		if RightStr(curtxt,1) <> "<" then begin
			 text_setstring(pri[pc2],curtxt+" <");
			Text_SetColor(pri[pc2],closcol);
		end;
	end; 
	t1=t;
	d2p=d;
	labl=0;vala=0;
	for value1=tl to th begin
		pristr[value1]="";
		tpo[value1]=0;
	end;
	clet=curletstr(stime,len,letter1);
	oldclet=clet;
	dlo=l;
	fp=o; 
	tpo[500]=1;
	th=500;tl=500;
	flag=0;                                   
	pri[500]= text_new(d,t1,o,"   >"+clet);
	pristr[500]="   >"+clet;
	TEXT_SETSTYLE(pri[500],0,2);	
	TEXT_SETCOLOR(pri[500],opncol);
	hh=o;ll=o;mid=1;tot=1;value22=currentbar;
	dl=l;
	if d= JulianToDate(LastCalcJDate) then flag2=1;
end; 
clet=curletstr(stime,len,letter1) ;
t0=t;d0=d;pc=c;
barhi=intportion((xpts+h-fp+(mintick/10))/mintick);
barlo=ceiling((xpts+l-fp-(mintick/10))/mintick);
if barhi > th then th=barhi;
if barlo < tl then tl=barlo;
if l < dl then dl=l;
IF datacompression=0 and  currentbar  > value22 then begin
	lcount=lcount+1;
	if lcount=53 then lcount=1;
	clet=midstr(lett,lcount,1) ;
	hh=o;ll=o;flag=flag+1; 
end;
value22=currentbar;
IF datacompression = 1 and oldclet <> clet  then begin
	hh=o;ll=o;flag=flag+1;
end;

for value4=barlo to barhi begin
	price=fp+((value4-500)*mintick);
	curtxt=pristr[value4]; 
	if curtxt = ""   then begin
		tpo[value4]=1;
		pri[value4]= text_new(d2p,t1,price,"    "+clet);
		pristr[value4]="    "+clet;
		TEXT_SETSTYLE(pri[value4],0,2);	
		TEXT_SETCOLOR(pri[value4],txtcolr);
	end else begin
		if RightStr(curtxt,1) <> clet then begin
			text_setstring(pri[value4],curtxt+clet);
			pristr[value4]=curtxt+clet;
			tpo[value4]=tpo[value4]+1;
		end;
	end;
end;
if h>hh then hh=h;
if l < ll then ll = l;
{------------------------------------------------------------------------------------------}
if valcol <> 0  and  lastbaronchart  then begin
mid=0;value16=0;value23=0;
cpt=tl;cp=tl + (th-tl)/2; {center of dist.}
for x = tl to th begin 
	if pristr[x] <> "" then begin
		pristr[x]=nutpstr(tpo[x],pristr[x],pri[x]); 
		value23=value23 + tpo[x]; {total tpo count}
		if tpo[x]=mid and x <= cp then cpt=x;
		if tpo[x]=mid and x>cp and(x-cp) < AbsValue(cp-cpt) then cpt=x;
		if tpo[x] > mid then begin
			cpt=x;
			mid = tpo[x];
		end;
	end;
end;
va=value23 * vap;
if l < dlo  then begin
	dlo=l;
	price=fp+((tl-501)*mintick);
	if labl <> 0 then Text_SetLocation(labl,d2p,t1,price);
end;
if labl =0 then begin
	price=fp+((tl-501)*mintick);
	labl= text_new(d2p,t1,price,"-");
	TEXT_SETSTYLE(labl,0,2);	
	TEXT_SETCOLOR(labl,valcol);
end;
if va <> 0 then begin
value61=value18; 
x=mid;up=cpt;dn=cpt;
while x < va begin
	value19=tpo[up+1]+tpo[up+2];  value20=tpo[dn-1]+tpo[dn-2];
	if value19 >= value20 then begin
		if x+tpo[up+1] >= va then begin
			x=x+tpo[up+1]; up=up+1;
		end else begin
			x=x+value19;  up=up+2;
		end;
	end else begin
		if x+tpo[dn-1] >= va then begin
			x=x+tpo[dn-1]; dn=dn-1;
		end else begin
			x=x+value20;  dn=dn-2;
		end;				
	end;
end;	
if up > th then up=th; if dn < tl then dn=tl;	
value18=cpt;
oldup=up;
olddn=dn;
up= fp+((up-500)*mintick);
dn=fp+((dn-500)*mintick);
if flag=1 then value63=t;
if up > dn and flag > 1  then begin
	if vala = 0 then begin
		vala=TL_New(d2p,t1,up,d2p,t1,dn);
		TL_SetColor(vala,valcol);
		TL_SetSize(vala,vsize);
		value62=fp+((value18-500)*mintick);
		value60=TL_New(d2p,t1,value62+mintick/15,d2p,t1,value62-mintick/15);
		TL_SetColor(value60,valcol);
		TL_SetSize(value60,value88);
	end else begin
		if oldup <> up then TL_SetBegin(vala,d2p,t1,up);
		if olddn <> dn then TL_SetEnd(vala,d2p,t1,dn);
	end;
end;
if {value61 <> value18 and} flag > 1  then begin
	value62=fp+((value18-500)*mintick);
	TL_SetBegin(value60,d2p,t1,value62+mintick/15);
	TL_SetEnd(value60,d2p,t1,value62-mintick/15);
end;
Text_SetString(labl,"VA:"+mp_str32(dn)+" "+mp_str32(up));
end;
end;

if lastcol > 0   then begin
if value10 = 0 and currentbar=3 then begin
	value10=tl_new(value50,value51,c,d,t,c);
	tl_setcolor(value10,lastcol);
	tl_setsize(value10,0);
	TL_SetExtLeft(value10,true);
end else if currentbar > 3 and LastBarOnChart   then begin
	tl_setend(value10,d,t,c);
	tl_setbegin(value10,value52,value53,c);
end;
value52=value50;value53=value51;
value50=d;value51=t;
end;

plot1(l-mintick,"dummy");
P.S.

Juve or Toro ?
shrike is offline  
Reply With Quote
The Following User Says Thank You to shrike For This Useful Post:
Tams (03-17-2010)
Old 02-16-2010, 09:23 AM   #3

Join Date: Feb 2010
Location: Turin
Posts: 5
Ignore this user

Thanks: 0
Thanked 4 Times in 2 Posts

Re: Volume Profile

Thank you Shrike for your reply, but I think this code is referring to Market Profile...while I am looking for Volume Profile... :-(
Do you have any idea where I can find it?

I need something like this:

Ps: Juve...! :-D Are you italian?
Attached Thumbnails
Volume Profile-dec-12-vp-chart-globex-esh9.png  
pinonirvana is offline  
Reply With Quote
Old 02-16-2010, 09:41 AM   #4

Tams's Avatar

Join Date: Sep 2008
Location: Geelong
Posts: 3,779
Ignore this user

Thanks: 2,084
Thanked 1,477 Times in 912 Posts

Re: Volume Profile

Quote:
Originally Posted by pinonirvana »
Thank you Shrike for your reply, but I think this code is referring to Market Profile...while I am looking for Volume Profile... :-(
Do you have any idea where I can find it?

I need something like this:

Ps: Juve...! :-D Are you italian?

can you describe the difference?
__________________



Only an idiot would reply to a stupid post
Tams is offline  
Reply With Quote
Old 02-16-2010, 09:47 AM   #5

shrike's Avatar

Join Date: Jun 2009
Location: fantasy
Posts: 85
Ignore this user

Thanks: 44
Thanked 24 Times in 22 Posts

Re: Volume Profile

Quote:
Originally Posted by pinonirvana »
Thank you Shrike for your reply, but I think this code is referring to Market Profile...while I am looking for Volume Profile... :-(
Do you have any idea where I can find it?

I need something like this:

Ps: Juve...! :-D Are you italian?
Hi pino

take a look at the formula , it produces the same thing that you posted

yes i'm italian and i come from the city where you have stolen the game last sunday
shrike is offline  
Reply With Quote
Old 02-16-2010, 10:22 AM   #6

Join Date: Feb 2010
Location: Turin
Posts: 5
Ignore this user

Thanks: 0
Thanked 4 Times in 2 Posts

Re: Volume Profile

Thank to Tams too for his reply.

Well, correct me if I'm wrong, but I know that there is an important difference: MP shows the POC (Point of Control), while VP shows the PVP (Peak Volume Price), that sometimes it is not the same value.
In VP the PVP is not necessarely the peak with the major persistence of volume, but it is the average of the prices times total volume.

So, I don't need to know how many times a specific price occurs (as indicated in MP), but I need to know how much volume occurs at every price level, because it is possible that price "X" occurs 10000 times (so that MP shows a peak at X price level) while peak of volume occures at "Y" price level (so that VP shows a peak at Y price level).

Sorry for my bad english, but I hope you understood me. ;-)

So Shrike, you are from Genova, right?
pinonirvana is offline  
Reply With Quote
Old 02-17-2010, 03:20 AM   #7

Join Date: Feb 2010
Location: Turin
Posts: 5
Ignore this user

Thanks: 0
Thanked 4 Times in 2 Posts

Lightbulb Re: Volume Profile

Hi guys, I have 2 questions for you EasyLanguage guru that can be very helpful for a lot of readers. :-D

1)
Is it possible to plot the whole content of an array?
E.g, if I had a dinamic array declaration like PinonirvanaArray[999](0), where each element number (from 0 to 999) correspond to price, and each element value correspond to volume recorded for each price, could it be possible to plot all these values together on a chart?

2)
Is is possible to plot on a chart an indicator with different axis? I mean, is it possible to plot on a 5 minute chart an indicator that shows prices on Y axis and for example seconds on X axis?
As alternative, coming back to my aim to write down a Volume Profile code, on X axis I could plot volume for each price.

Thank you all...

Last edited by pinonirvana; 02-17-2010 at 04:04 AM.
pinonirvana is offline  
Reply With Quote
Old 03-13-2010, 05:15 PM   #8

Tams's Avatar

Join Date: Sep 2008
Location: Geelong
Posts: 3,779
Ignore this user

Thanks: 2,084
Thanked 1,477 Times in 912 Posts

Re: Volume Profile

Quote:
Originally Posted by pinonirvana »
Hi guys, I have 2 questions for you EasyLanguage guru that can be very helpful for a lot of readers. :-D

1)
Is it possible to plot the whole content of an array?
E.g, if I had a dinamic array declaration like PinonirvanaArray[999](0), where each element number (from 0 to 999) correspond to price, and each element value correspond to volume recorded for each price, could it be possible to plot all these values together on a chart?
yes, it is possible.


Quote:
Originally Posted by pinonirvana »
2)
Is is possible to plot on a chart an indicator with different axis? I mean, is it possible to plot on a 5 minute chart an indicator that shows prices on Y axis and for example seconds on X axis?
As alternative, coming back to my aim to write down a Volume Profile code, on X axis I could plot volume for each price.

Thank you all...
yes with MultiCharts.
not sure with tradestation.
__________________



Only an idiot would reply to a stupid post
Tams is offline  
Reply With Quote

Reply

Tags
volume profile

Thread Tools
Help Others By Rating This Thread
Help Others By Rating This Thread:


Similar Threads
Thread Thread Starter Forum Replies Last Post
Market/Volume Profile Indicator on Tradestation agon Coding Forum 36 10-05-2011 11:58 AM
[Market Profile] Market profile / volume profile jfutures Technical Analysis 2 10-10-2008 10:08 AM
Profile Trend March + Market Profile Momentum spyro Coding Forum 12 10-04-2008 04:17 AM
Ant: Simulating volume profile in Activity Bar? nasdaq5048 Market Profile 5 03-27-2007 05:56 PM
ER2 Profile and Volume Breakdown TinGull Technical Analysis 4 12-15-2006 06:32 PM

All times are GMT -4. The time now is 08:38 AM.
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
CS to VB integration by DeskLancer
©2006-2011 Traders Laboratory, All Rights Reserved.