Welcome to the Traders Laboratory Forums.
Market Profile Are you a market profile trader? Post here.

Reply
Old 01-16-2012, 01:40 PM   #33

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: Marketprofile.eld

Quote:
Originally Posted by alex_laxya »
Here is POC function..
thanks for the code.



ps. if you use the code tag instead of the quote tag , you can preserve the code formatting.
__________________



Only an idiot would reply to a stupid post
Tams is offline  
Reply With Quote
Old 01-23-2012, 12:25 PM   #34

alex_laxya's Avatar

Join Date: Aug 2008
Location: pune
Posts: 61
Ignore this user

Thanks: 66
Thanked 43 Times in 17 Posts

Re: Marketprofile.eld

Code:
vars: PriceBin(.50),
TimeBin(0),
Unit4Accum(0),
TypAccum(0),
BegTime1(0),
BegTime2(0),
BegTime3(0),
DoHoriz(True),
Perc4VA(70),
LineSize(1);
{Begin Comment Out for Signal}

vars:
PointRight(True),{If set false then display will point to left }

Smooth(00), {Angle adjustment for VA projection--range -2>+2 }

BegDate(0);{Date on which to start analysis. 0=All }
{this is used to limit the number of analyses that are }
{made and may be necessary -- particularly in TS7/8... }
{to keep "infinite loop" error from occurring. }



{must replace Vars: with in the word INPUT: here for an indicator}

vars:
OnlyLast(true), {Annotate last caclulated values ONLY--AnotHLCP=True also}

AnotHLCP(true), {Annotate the VAHigh, VALow, and CP values on chart }

OnlyHist(false), {Do not make MP for current day until next day. }

DoChan(False), {Draw a channel from VA extremes to next set of extremes }

PlotOpen(True); {Plot open of current analysis -- green dotted line }


Vars: OpenOfDay(0), Is24Hour(Sess1EndTime<=Un ionSess1StartTime),
LowBox(0), DateKnt(0), HKnt(0),
ATR21(AvgTrueRange(21)),
Bin4Price(Iff(PriceBin>AT R21/20,ATR21/20,Iff(PriceBin<ATR21/50,ATR21/50,PriceBin))),
LowValue(LowBox*Bin4Price ), IPass(0),
Bin4Time(AbsValue(IntPort ion(TimeBin))),
ShiftIt((AbsValue(TimeBin )-Bin4Time)*100),
HighValue(H),TotalKnt(0),
HoldBar(CurrentBar), HoldAdd(0), OldHoldBar(0), KeepBar(0);
Vars: TimeBeg1(Iff(BegTime1<25, IntPortion(BegTime1)*100+ FracPortion(BegTime1)*60, BegTime1)),
TimeBeg2(Iff(BegTime2<25, IntPortion(BegTime2)*100+ FracPortion(BegTime2)*60, BegTime2)),
TimeBeg3(Iff(BegTime3<25, IntPortion(BegTime3)*100+ FracPortion(BegTime3)*60, BegTime3));
Vars: VAHigh(0), VALow(0), MaxValue(0), MaxIndex(0), SumValue(0);
Vars: VAHighValue(h), VALowValue(l),VAPivot(c),
VAPerc(Iff(Perc4VA>0,Perc 4VA/100,.7)),
CurrentMin(TimeToMinutes( time)), EntryP(0);
Vars: VAHighOld(0), VAHighNew(0),
VALowOld(0), VALowNew(0),
VABarOld(0), VABarNew(0),
VADateOld(0), VADateNew(0),
VATimeOld(0), VATimeNew(0),
DnCount(0), UpCount(0), LBOC(FALSE), NewDate(0),
HandlHi(-1), HandlLo(-1), HandlCP(-1),
CanBuy(false),CanSell(fal se),DoInit(True);

{Begin comment out for Indicator
Vars: LossMaxPts(LossMax/BigPointValue),
TakProfPts(TakProf/BigPointValue);
End comment out for Indicator}

Vars: ATR21Val(0), MP(0),
StopHH(0), StopLL(0), EnterBar(0),
MaxCont(0), NCont(0), HoldDate(Date-1);
Vars: PDPtrn(0);


Vars: MaxKnt(15000), Direct(0), DoKnt(0);
Arrays: PriceKnt[15000](0), HoldKnt[15000](0), Handl[15000](0);


If DoInit then begin
DoInit=False;
Value1=AvgTrueRange(21)/10;
If PriceBin=0 then Bin4Price=Value1
else Bin4Price=PriceBin;

LowBox = Round(L/Bin4Price,0);
End;

LBOC = LastBarOnChart;
If Date<>Date[1] and TimeBin=0 then NewDate=Date;


{For system remove I_}
If MP<>MP[1] then begin
EntryP=O;
EnterBar=CurrentBar;
StopHH=H;
StopLL=L;
End;

If Date>=BegDate then begin



If (TimeBin>0 and Unit4Accum>0) then begin
Condition1=false;
Condition3=false;
If Unit4Accum=1 then If Date[ShiftIt]<>Date[ShiftIt+1] then DoKnt=DoKnt+1;
If Unit4Accum=2 then If DayOfWeek(date[ShiftIt])<DayOfWeek(Date[ShiftIt+1]) then DoKnt=DoKnt+1;
If Unit4Accum=3 then If Month(Date) <>Month(Date[1]) then DoKnt=DoKnt+1;
If Unit4Accum=4 then begin
For Value1 = 0 to 3 begin
Value2=Value1*3+1;
If Month(Date)=Value2 and Month(Date[1])<>Value2 then DoKnt=DoKnt+1;
End;
End;
If Unit4Accum=5 then begin
DoKnt=0;

Value0=AbsValue(IntPortio n(Direct));
If Sign(Direct)<>Sign(Direct[1]) or LBOC then begin
Condition1=True;
Condition3=Condition1;
If Direct[1]=0 then begin
HoldBar=CurrentBar-Value0;
HoldAdd=HoldBar-OldHoldBar;
End
Else begin
If LBOC and Sign(Direct)=Sign(Direct[1]) then begin
If LBOC[1]=FALSE THEN OldHoldBar=HoldBar;
HoldBar=CurrentBar;
Value0=0;
End
Else begin
OldHoldBar=HoldBar;
HoldBar=CurrentBar-Value0;
End;

Value2=Highest(H[Value0],HoldBar-OldHoldBar+1);
Value3=Lowest (L[Value0],HoldBar-OldHoldBar+1);
LowBox =Round(Value3/Bin4Price,0);
TotalKnt=Round(Value2/Bin4Price,0)-LowBox;
LowValue=LowBox*Bin4Price ;
HoldAdd=HoldBar-OldHoldBar;
LowBox =0;
While TotalKnt<8 begin
Bin4Price=Bin4Price/2;
LowBox =Round(Value3/Bin4Price,0);
TotalKnt=Round(Value2/Bin4Price,0)-LowBox;
LowValue=LowBox*Bin4Price ;
LowBox =0;
End;
For Value1 = LowBox to TotalKnt begin
Value3=Value1 * Bin4Price + LowValue;
PriceKnt[Value1]=0;
For Value4 = CurrentBar-HoldBar to CurrentBar-OldHoldBar+1 begin
If Value3<=H[Value4] and Value3>=L[Value4] then PriceKnt[Value1]=PriceKnt[Value1]+1;
End;
End;
End;
End;
End;
If DoKnt>=TimeBin then begin
Condition1=True;
Condition3=Condition1;
DoKnt=0;
End;
End
Else begin
Condition1=false;
Condition3=false;
If TimeBin>0 then begin
If TimeBeg1=0
then CurrentMin=TimeToMinutes( time)-TimeToMinutes(Sess1FirstB arTime)
else CurrentMin=TimeToMinutes( time)-TimeToMinutes(TimeBeg1);
If CurrentMin<0 then CurrentMin=CurrentMin+Tim eToMinutes(2359)+1;
If CurrentMin<0 then CurrentMin=CurrentMin+24* 60;
Condition1=Mod(CurrentMin ,TimeBin)<Mod(CurrentMin[1],TimeBin);
Condition3=Condition1;
End
Else begin
If TimeBin<0 then begin
If ShiftIt>Bin4Time then ShiftIt=Mod(ShiftIt,Bin4T ime);
Condition1=Mod(CurrentBar-ShiftIt,Bin4Time)=0;
Condition3=Condition1;
End
Else begin
If DataCompression>1 then begin
If ShiftIt>13 then ShiftIt=0;
Condition1=Mod(CurrentBar-ShiftIt,13)=0;
Condition3=Condition1;
End
Else Begin
Condition9=(Date<>Date[1] and Is24Hour=False) or (Is24Hour and Time>=Sess1StartTime and Time[1]<=Sess1EndTime);
If TimeBeg1>0 then if Time>=TimeBeg1 and (Time[1]<TimeBeg1 or Condition9) and TimeBin=0 then Condition1=True;
If TimeBeg2>0 then if Time>=TimeBeg2 and Time[1]<TimeBeg2 and TimeBin=0 then Condition1=True;
If TimeBeg3>0 then if Time>=TimeBeg3 and Time[1]<TimeBeg3 and TimeBin=0 then Condition1=True;
If TimeBeg1=0 then if TimeBin=0 and Condition9 or (LBOC and time>=Addtime(Sess1EndTim e,-5)) then Condition1=True;
Condition3=Condition1;
End;
End;
End;
End;
If LBOC=True and CurrentBar<>KeepBar and (OnlyHist=False or Time=Sess1EndTime) or TimeBin>9998 then Condition1=True;

If Condition1 then begin

If Condition1 or CurrentBar=1 then begin
CanBuy=True;
CanSell=True;
DateKnt=DateKnt+1;
If LBOC=False or Condition3 then OpenOfDay=Open;
End;

If LBOC=True and LBOC[1]=False and Unit4Accum<>5 then begin
Value3=Round(Low/Bin4Price,0);
If Value3<LowBox and Value3<>0 then begin
Value2=LowBox-Value3;
For Value1= 2000-Value2 downto 0 begin
PriceKnt[Value1+Value2]=PriceKnt[Value1];
PriceKnt[Value1]=0;
End;
LowBox =Value3;
LowValue=LowBox*Bin4Price ;
TotalKnt=TotalKnt+Value2;
End;
Value2=Round(Low/Bin4Price,0) -LowBox;
Value3=Round(High/Bin4Price,0) -LowBox;
For Value1=Value2 to Value3 begin
PriceKnt[Value1]=PriceKnt[Value1]+1;
End;
If Value3>TotalKnt then TotalKnt=Value3;
End;

If TotalKnt>1 and DateKnt>1 then begin
MaxValue=-99999;
SumValue=0;
{Find the max value and sum up the price occupancies}
Value99=0;
For Value1=0 to TotalKnt begin
Value4=PriceKnt[Value1];
If Value4>0 then Value99=Value1;
SumValue=SumValue+Value4;
If Value4>=MaxValue then begin
MaxIndex=Value1;
MaxValue=Value4;
End;
End;
{Find all alike and setup CP at middle}
Value2=0;
For Value1=0 to TotalKnt begin
If PriceKnt[Value1]=MaxValue then Value2=Value2+1;
End;
If Value2>1 then MaxIndex=MaxIndex-IntPortion(Value2/2);

{Now find the Value Area (70% of total counts)}
VAHigh=MaxIndex;
VALow =MaxIndex;
Value9=PriceKnt[MaxIndex];
Value10=0;
While Value9<=IntPortion(SumVal ue*VAPerc) begin
Value10=Value10+1;
If MaxIndex-Value10>=0 and Value9<=IntPortion(SumVal ue*VAPerc) then begin
VALow =MaxIndex-Value10;
Value9=Value9+PriceKnt[VALow];
End;
If Value10+MaxIndex<=Value99 and Value9<=IntPortion(SumVal ue*VAPerc) then begin
VAHigh=MaxIndex+Value10;
Value9=Value9+PriceKnt[VAHigh];
End;
End;

VAHighValue=LowValue+VAHi gh *Bin4Price;
VALowValue =LowValue+VALow *Bin4Price;
VAPivot =LowValue+MaxIndex*Bin4Pr ice;
Value1=0;
VAHighOld=VAHighNew; VAHighNew=VAHighValue[Value1];
VALowOld=VALowNew; VALowNew=VALowValue[Value1];
VADateOld=VADateNew; VADateNew=Date[Value1];
VATimeOld=VATimeNew; VATimeNew=Time[Value1];
VABarOld=VABarNew; VABarNew=CurrentBar;

If TotalKnt>0 then PDPtrn=MaxIndex/TotalKnt
else PDPtrn=0;
PDPtrn=Round(PDPtrn*4,0);

If DateKnt>2 then begin

Value2=LowValue;
If PointRight then Value6=CurrentBar-HoldBar+HoldAdd
else Value6=HoldAdd;

{Now plot the data and highlight VA}
If DateKnt>3 then begin

If LBOC then begin
for Value1=0 to TotalKnt begin
If Handl[Value1]<>0 then begin
TL_Delete(Handl[Value1]);
Handl[Value1]=0;
End;
End;
End;


HKnt=0;
For Value1=0 to TotalKnt begin
Value4=PriceKnt[Value1];
If PointRight then If HoldBar-HoldAdd+Value4>CurrentBar then Value4=Value6;
If Value4>0 and Value5<MaxKnt then begin
If DoHoriz then begin
{Value2=(LowBox+Value1)*B in4Price;}
If PointRight
Then Value5=TL_New(date[Value6],time[Value6],Value2,date[Value6-Value4],time[Value6-Value4],Value2)
Else Value5=TL_New(date[Value6],time[Value6],Value2,date[Value6+Value4],time[Value6+Value4],Value2);
Value7=Blue;
If LBOC then Handl[Value1]=Value5;
If Value1<VALow then value7=red;
If Value1>VAHigh then value7=yellow;
If Value1=MaxIndex then value7=Red;
Value7=TL_SetAll(Value5, Value7, LineSize, 3, False, false);
End;
If AnotHLCP then begin
If (OnlyLast and LBOC) or (OnlyLast=False) or (OnlyHIst) then begin
If PointRight then Value30=-Value4 else Value30=0;
If Value1=VALow then begin
If HandlLo>=0 then Text_Delete(HandlLo);
HandlLo=Text_New(date[Value6+Value30],time[Value6+Value30],Value2,NumToStr(Value2,2 ));
Text_SetStyle(HandlLo,0,2 );
End;
If Value1=VAHigh then begin
If HandlHi>=0 then Text_Delete(HandlHi);
HandlHi=Text_New(date[Value6+Value30],time[Value6+Value30],Value2,NumToStr(Value2,2 ));
Text_SetStyle(HandlHi,0,2 );
End;
If Value1=MaxIndex then begin
If HandlCP>=0 then Text_Delete(HandlCP);
HandlCP=Text_New(date[Value6+Value30],time[Value6+Value30],Value2,NumToStr(Value2,2 )+"--"+NumToStr(PDPtrn,0)) ;
Text_SetStyle(HandlCP,0,2 );
End;
End;
End;
End;
Value2=Value2+Bin4Price;
End;

If DoChan and Value5<4500 then begin
Value3=TL_NEW(VADateOld,V ATimeOld,VAHighOld,VADate New,VATimeNew,VAHighNew);
Value4=TL_NEW(VADateOld,V ATimeOld,VALowOld, VADateNew,VATimeNew,VALow New);
Value7=TL_SetAll(Value3, blue, LineSize, 3, False, false);
Value7=TL_SetAll(Value4, red , LineSize, 3, False, false);
End;
End;


Condition5=True;
If TimeBin<>0 then begin
If (TypAccum>210000 and Date[1]=TypAccum) then Condition5=False;
If (TypAccum=-2 and Date[1]=CurrentDate) then Condition5=False;
If (TypAccum=-1 and Time<>Sess1StartTime+BarI nterval) then Condition5=False;
End;
If LBOC=False then begin
If Condition5 then begin
For Value1=0 to 2000 begin
PriceKnt[Value1]=0;
End;
TotalKnt=0;
LowBox =Round(Low/Bin4Price,0);
LowValue=LowBox*Bin4Price ;
End;
If Unit4Accum<>5 then HoldBar =CurrentBar;
IPASS=Time;
End;
End;
End;
If LBOC then KeepBar=CurrentBar;
End;

If DateKnt>1 then begin

If DateKnt>3 and VAHighValue<>0 and VALowValue<>0 then begin

If Smooth=0 then begin
Value17=VAHighNew;
Value18=VALowNew;
End
Else begin
If Condition1 then begin
Value15=(VAHighNew-VAHighOld+VALowNew-VALowOld)*0.5/(VABarNew-VABarOld);
Value19=.5/(VABarNew-VABarOld);
End;
Value14=(CurrentBar-VABarNew);
Value16=Value15*Value14*S mooth*(1-Value14*Value19);
Value17=VAHighNew+Value16 ;
Value18=VALowNew +Value16;
End;


{Remove right brace for SIGNAL -- add for INDICATOR}
If LBOC then begin
Value2=-MaxBarsForward;
Value3=-1;
{If KeepBar=0 then OpenOfDay=C;}
If Smooth=0 then begin


End;
End
else begin
Value27=Value17;
Value28=Value18;
Value29=VAPivot;
Value2=0;
Value3=0;
If Unit4Accum=5 then Value3=Value6;
End;



End;
If HandlHi>-1 then begin
Text_SetLocation(HandlHi, Date,Time,Value17);
Text_SetLocation(HandlCP, Date,Time,VAPivot{Value29 });
Text_SetLocation(HandlLo, Date,Time,Value18);
End;

End;

End;



If Condition3 and (OnlyLast=False) then begin
HandlHi=(-1); HandlLo=(-1); HandlCP=(-1);
End;

If DateKnt>1 and (LBOC=False or LBOC[1]=True) then begin
Value3=Round(Low/Bin4Price,0);
If Value3<LowBox and Value3<>0 then begin
Value2=LowBox-Value3;
For Value1= 2000-Value2 downto 0 begin
PriceKnt[Value1+Value2]=PriceKnt[Value1];
PriceKnt[Value1]=0;
End;
LowBox =Value3;
LowValue=LowBox*Bin4Price ;
TotalKnt=TotalKnt+Value2;
End;
Value2=Round(Low/Bin4Price,0) -LowBox;
Value3=Round(High/Bin4Price,0) -LowBox;
For Value1=Value2 to Value3 begin
PriceKnt[Value1]=PriceKnt[Value1]+1;
End;
If Value3>TotalKnt then TotalKnt=Value3;
End;



{end date loop}




poc=vapivot;
alex_laxya is offline  
Reply With Quote
The Following User Says Thank You to alex_laxya For This Useful Post:
ValueTrader (03-01-2012)

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
MarketProfile vs Return Destribution ImXotep Market Profile 2 11-28-2007 04:53 PM

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