Welcome to the Traders Laboratory Forums.
Coding Forum Collaborate, receive help, or discuss coding related issues.

Reply
Old 08-18-2011, 07:17 AM   #1

ValueTrader's Avatar

Join Date: Sep 2010
Posts: 72
Ignore this user

Thanks: 32
Thanked 16 Times in 12 Posts

Market Profile in EL

I aquired an EL code for Market Profile from a source i cannot remember online.
Many thanks to the author (whoever they may be).

Code:
input:compress(1),len(30),letter1(1),txtcolr(7),opncol(6),closcol(6),lastcol(6),VAprcnt(.70),Valcol(5),
Valsize(3),stime(0);

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),mp_str32(0);

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



	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
				
					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;
 
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  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  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");
It does not seem to want to compile, i've attempted to debug it, but with my limited coding experiance i feel its a bit out of my league. Im using OEC, is the maybe the reason its not compiling? i've attached the error messages.
im not expecting anyone to simply debug this for free, but maybe someone can point me in the right direction.

Thanks
VT
Attached Thumbnails
Market Profile in EL-bugsmp.jpg  
ValueTrader is offline  
Reply With Quote
Old 08-18-2011, 08:09 AM   #2

Tams's Avatar

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

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

Re: Market Profile in EL

Quote:
Originally Posted by ValueTrader »
I aquired an EL code for Market Profile from a source i cannot remember online.
Many thanks to the author (whoever they may be).
...

It does not seem to want to compile, i've attempted to debug it, but with my limited coding experiance i feel its a bit out of my league. Im using OEC, is the maybe the reason its not compiling? i've attached the error messages.
im not expecting anyone to simply debug this for free, but maybe someone can point me in the right direction.

Thanks
VT
forget about OEC... it won't work in OEC.
OEC's easylanguage is not complete,
and its implementation is non-standard.
you can run simple easylanguage indicators in OEC, but not complex ones like this.
__________________



Only an idiot would reply to a stupid post
Tams is offline  
Reply With Quote
Old 08-18-2011, 08:13 AM   #3

ValueTrader's Avatar

Join Date: Sep 2010
Posts: 72
Ignore this user

Thanks: 32
Thanked 16 Times in 12 Posts

Re: Market Profile in EL

Ok, i'll scrap that idea.

Could you giive me some guidence on how to plot yesterdays Value area H/L and POC and todays developing VA H/L & POC in a line format?

I've attempted it, but i cant get my head around using arrays or formating the Value area calculation into EL.

Thanks

VT
ValueTrader is offline  
Reply With Quote
Old 08-18-2011, 09:27 AM   #4

Tams's Avatar

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

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

Re: Market Profile in EL

Quote:
Originally Posted by ValueTrader »
Ok, i'll scrap that idea.

Could you giive me some guidence on how to plot yesterdays Value area H/L and POC and todays developing VA H/L & POC in a line format?

I've attempted it, but i cant get my head around using arrays or formating the Value area calculation into EL.

Thanks

VT
not with OEC,
don't waste your time... OEC is only good for basic indicators. It cannot do most of the advanced stuff. I have seen countless people wasting their precious trading time wrestling with OEC. It will take you less than one day's trading profit to buy MultiCharts or NinjaTrader... it will ended up costing you more with OEC's "free" program.
__________________



Only an idiot would reply to a stupid post

Last edited by Tams; 08-18-2011 at 09:37 AM.
Tams is offline  
Reply With Quote
Old 08-18-2011, 09:44 AM   #5

ValueTrader's Avatar

Join Date: Sep 2010
Posts: 72
Ignore this user

Thanks: 32
Thanked 16 Times in 12 Posts

Re: Market Profile in EL

Ok, i know we're going off at a tangent here Tams, but does multicharts / ninja have there own data feed or do i have to obtain that elsewhere?

Thanks for your advice, I think your suggestion is gonna be the way forward.
ValueTrader is offline  
Reply With Quote
Old 08-18-2011, 10:27 AM   #6

Tams's Avatar

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

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

Re: Market Profile in EL

Quote:
Originally Posted by ValueTrader »
Ok, i know we're going off at a tangent here Tams, but does multicharts / ninja have there own data feed or do i have to obtain that elsewhere?

Thanks for your advice, I think your suggestion is gonna be the way forward.
You will need 3rd party data feed for MultiCharts or NinjaTrader, either from the broker's quote service, or a data provider like eSignal.

MultiCharts is a general purpose program. If you are serious in Market Profile (ie making money), I would recommend a program specialized in that discipline. (eg. Investor RT.)
__________________



Only an idiot would reply to a stupid post
Tams is offline  
Reply With Quote
Old 08-19-2011, 09:30 AM   #7

ochie's Avatar

Join Date: May 2008
Location: Lucea
Posts: 99
Ignore this user

Thanks: 32
Thanked 66 Times in 48 Posts

Re: Market Profile in EL

I believe the reason you are receiving the "unknown symbol" errors is that you are most likely missing the 3 code functions mp_str32, curletstr and nutpstr. They were part of the original ELD as I remember. Getting it to compile in OEC would be a separate issue.
ochie is offline  
Reply With Quote
The Following User Says Thank You to ochie For This Useful Post:
ValueTrader (08-19-2011)

Reply

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Market Profile 1.71 aaa Trading Indicators 8 04-10-2010 12:58 PM
[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
Market Profile for YM tony1d E-mini Futures Trading Laboratory 13 06-16-2007 11:33 AM
How to use Market Profile maildigger Market Profile 21 05-19-2007 08:08 PM

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