Market Profile code for Tradestation

Market Profile Code for Tradestation:

From Tradestation 8.8
Set to 30 min chart
Space accordingly
Here it is, Market Profile for Tradestation, just cut and paste the code below:
(sometimes the copy over can move a few things, just run verify and it will show you where the minor mistakes may be, very easy fix)
_________________________________________________________________________
[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[1000](0),tpo[1000](0),pristr[1000]("");
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");

[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[1000](0),tpo[1000](0),pristr[1000]("");

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 beginmid=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 beginvalue61=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 beginif 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");

0 Users Collected

Post Topics

Post Details

Download Our Free eBook

25 Stock Market Indicators To Know

And subscribe to our MarketHeist Guides newsletter!

Comments

6 responses to Market Profile code for Tradestation

  1. todd said on May 25, 2010

    This code does not verify

  2. todd said on May 25, 2010

    This code does not verify

  3. sometimes the copy over can move a few things, just run verify and it will show you where the minor mistakes may be, very easy fix

  4. sometimes the copy over can move a few things, just run verify and it will show you where the minor mistakes may be, very easy fix

  5. also-how should one deal with the “password”?

  6. Where is the function “nutpstr” defined?

Leave a reply

You must be logged in to post a comment.

Login to Comment

Free Brokers, Software, & Tools to Start.

Start with Brokers that have free accounts and professional grade software. Software that's the same whether you're practicing with fake money or trading real money.

Submit a Service

Profile Photo

TD Ameritrade Online Broker

With free thinkorswim, Trade Architect, & mobile software. Practice with virtual money. Invest and trade in stocks, ETFs, mutual funds, bonds, options, futures, and forex. No minimum and no maintenance fees. $0 to start.

☆ Collect Launch

Profile Photo

tradeMONSTER Online Broker

Free browser & mobile software. Easy to use technology including strategySeek and paperTRADE. Invest and trade in stocks, ETFs, mutual funds, bonds, and options. No minimum and no maintenance fees. $0 to start.

☆ Collect Launch

Profile Photo

optionsXpress Online Broker

optionsXpress offers an innovative suite of online brokerage services for investor education, strategy evaluation and trade execution. No minimum requirements.

☆ Collect Launch

Learn The Business. Take A Course.

What is the market and how it works
Finding Opportunities (with Technical Analysis & Fundamental Analysis)
Planning & Safety (with strategies to make smart decisions.)
Plan Execution: Buying & Selling

Submit a Service

Learn Stocks

Profile Photo

Investools Investing Foundations Program

Get trained in the foundations of the stock market and stock trading with two courses, a wealth of easy-to-use tools, and top-tier coaching support, in the program that helps you start managing your own portfolio. In the Investing Foundation Program, you’ll enjoy live and online workshops that can help you quickly overcome fears and learn […]

☆ Collect Launch

Learn Options

Profile Photo

OptionsAnimal Apprentice Options Education Program

Description Build your knowledge from the ground up. Understand key concepts and learn the basic spread trades that will give you a foundation to trade successfully. Learn how to properly structure a trade using the Protective Put, Covered Call, Collar Trade as well as applying the Straddle/Strangle. Trade Adjustment Spread Trades OptionsAnimal Trader Professional Program […]

☆ Collect Launch

Learn Futures

Profile Photo

OpenTrader Professional Training Program

The industry’s only training program built by professional full-time traders. You used to have to get hired by a professional trading firm to get world-class training. Not anymore. If you’ve been a losing trader, getting beaten down by the market again and again, low on confidence and full of doubt, things are about to change […]

☆ Collect Launch

On-The-Job Training. Earn While Learning.

Follow Live Trades, Step By Step
Detailed Trade and Market Analysis
Explanations of Strategies and Tactics
Questions Answered in Webcasts & Chatrooms
Learn by Copying The Pros At Every Step

Submit a Service

Learn Stocks

Profile Photo

Mish’s Market Minute Premium Stock Picks Video Subscription

Live-in-the-market instruction showing you how to trade in the afternoon the choice stock and ETF picks vetted by MarketGauge’s tools earlier in the day. Video up to 15 minutes: 4 times a week (M/T/W/Th) by 1:30PM ET $124.97/month Includes ETF Monitor & Nuggets List Private real-time Twitter Alerts 2 week FREE trial Learn as Mish: […]

☆ Collect Launch

Learn Options

Profile Photo

stockguy22 Live Trading & Education for Part Time Traders

What You’ll Get Learn stocks and options trading at your own pace from a group of full time traders dedicated to teaching through live trading, education, and mentoring.  See how trading is done methodologically as an occupation on a daily basis, from beginning to end.  Start with the daily in-depth analysis of stocks, the overall […]

☆ Collect Launch

Learn Futures

Profile Photo

Emini Wizard Trading System & Live Trading Chat Room

Thanks for considering The Emini Wizard System: This system is available for purchase for people who want to make a one time investment for the entire program. You get: Access to the Member’s website Spreadsheets Common plays Special plays Trade logic explained Chart patterns Chart settings we prefer Separate active chat area (30 days free […]

☆ Collect Launch

Some Partners We've Worked With

  • Download Our Free eBook

    25 Stock Market Indicators To Know

    And subscribe to our MarketHeist Guides newsletter!