Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

Recommended Posts

Hi Pino

 

I think you are searching this :

 

[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 ?

Share this post


Link to post
Share on other sites

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?

5aa70fd14c4f7_dec12vpChartofGLOBEX@ESH9.png.9a530dd24b84353e46766360713a1dbf.png

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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 :\:helloooo:

 

yes i'm italian and i come from the city where you have stolen the game last sunday

:boxing:

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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...

:missy:

Edited by pinonirvana

Share this post


Link to post
Share on other sites
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.

 

 

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...

:missy:

 

yes with MultiCharts.

not sure with TradeStation.

Share this post


Link to post
Share on other sites

not sure why you say Price is Purple... The Purple lines must be either Volume at Time or Volume from another timeframe. Price is clearly shown on the Right Axis.

 

Could you post a link to the source of this image please.

 

Thanks

bakrob99

Share this post


Link to post
Share on other sites
says

"show the price distribution in magenta and volume distribution in cyan"

 

I believe that what he means by this is that the Magenta shows the TPO count or the That Price Occurred which means the amount of time the market spent in this price zone. Normally based on a 30 minute period.

 

The Cyan will reflect the volume at the price in all periods.

 

Both are volume measurements.

 

Why anyone would pay for this is beyond me. TradeStation (and most other platforms) have the volume distribution contained in their DOM and that uses much feweer resources than trying to update this. Notice that there is no axis to reference how much volume is in either the magenta or cyan bars.

Share this post


Link to post
Share on other sites

This one interested me because it wasn't based on 30 min etc but the entire session. I haven't had time yet but will work with.

Not actual volume - percentage of by price.

Price is percentage as well by number of trades at instead of volume.

Why would anyone pay for anything instead of learning to code?

Just kidding.

I am chart only so that is why I would use - I don't open the matrix.

 

Anyway, posted pic in reply to ability to plot in axis of choice.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Quantower
      The main goal of this thread is to show what Power Trades is and how it works in different markets. We will show some patterns on the ES and NQ futures, as well as discuss possible improvements to this functionality.
      What is Power Trades?
      Ok, first we will consider what the Power Trades is and how it finds zones.
      Power Trades shows the zones with the execution of a large number of orders in a very short time, which will affect the price change with a high probability.
      Here are a few examples of how it looks like


      How it finds zones?
      There is a continuous process of placing, changing and executing orders in the market. All this affects the price change and the expectations of traders regarding the future price.
      When a large order appears at a certain level, the price is more likely to come to this order and it will be executed because the market is always looking for levels with liquidity. This already applies to the order flow and the mechanics of orders matching, so we will omit the principles on which the orders are matched.
      It is only important to understand that "abnormal events" occur in the market at certain times. Execution of a significant volume of orders in a very short time is one of such events.
      The Power Trades Scanner has several important settings that directly affect the results:

      Total Volume — the minimum value of the volume that should be traded during the specified time interval
      Time Interval, sec — the time over which the Total Volume should be traded
      Basis Volume Interval, sec — this parameter shows how much % took the traded volume in the total volume for the specified time.
      Zone Height, ticks — this parameter will show only those zones where the height is less than or equal to the specified value (in ticks).
      Level2 level count — the number of levels that are involved in the calculation of Imbalance and the Level 2 Ratio column in the table of results.
      Filter by Delta,% — the parameter will show zones that have a delta value greater than or equal to that specified in the setting. The value must be specified by the module, so the table will show both positive and negative delta values. We recommend paying attention to the zones with the delta above 50% (taking into account the specifics of each trading instrument).
      For example, let's set the Total Volume of 2000 contracts and Time Interval in 3 seconds on the E-mini SP500 futures. This means that the scan will be based on the available history and will show on the chart only those zones that have such a volume for the specified time.

      Additionally, it is worth to set a delta value to filter out the zones with one-side trades. The more delta value, the high probability that the price will reverse.

      So, as a starting point about this scanner, I think this information will be enough
    • By makuchaku
      Hi everyone,
      This is my maiden analysis using volume profile - so please don't hesitate to share your feedback.
      As per the attached analysis, I think that SPY is primed for a short - for many reasons
      - Multiple strong rejection of long positions exist at Resistance R1 and R2 : seems like sellers defending their positions
      - Very strong short volume seen at R2 : further signifying sellers who are ready at that level
      However, once the price reaches Support S1, there seems to be a strong buying sentiment which has rejected previous shorts. You can see trading ranges & pullbacks to S1 where buyers and sellers seem to agree on a price range, often leading to a buyer dominance.
      What do you think?

    • By TraderJoe
      Hey All,
      does anyone sell Volume Profile Indicator for NT8.
       
      Regards
  • Topics

  • Posts

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.