I have read the book ""Dynamic Trading Indicators" by Mark Helweg and David Stendahl." where Value Charts and Price Action Profile indicators are explained but the formulas to calculate the values was not fully disclosed.
I am intrigued by the indicator and have been searching all over the web for this indicator … no indicator found except one you can download for Trade Station (Not for MT4)
Some posts on this subject found elsewhere: Value Charts and Price Action Profile - Aussie Stock Forums
TTM/DDF Value Chart
Links and Downloads Manager - NinjaTrader Support Forum (Value Chart Indicator - I am unable to download)
I need the indicator for MT4.
Please? Would some of our brilliant MT4 programmers be so kind to convert the code below to MT4 platform indicator in MQ4 format in order to change settings inside the code to optimize or enhance it? OR provide a link where I can download the indicator for MT4?
What I have so far: (I think it is written in Java script – I am not familiar with it and I am not a Java programmer)
START of CODE:
If
yInputs:
NumBars(5),Color_Val(Red),Color_Alert(blue),Color_ High_Extreme(Red),Color_Low_Extreme(Green),Color_C lose(black),Show_Close(True);
Variables:
Vopen(0),VHigh(0),VLow(0),VClose(0),Var1(0),Var2(0 );
Var:
VcloseLam(0),ValueSOB(" "),ValueMOB(" "),ValueMOS(" "), ValueSOS(" "), ValueFair(" "), lastdate(0);
{Calcualte Value Chart}
VOpen = VChart(NumBars,Open);
VHigh = VChart(NumBars,High);
VLow = VChart(NumBars,Low);
VClose = VChart(NumBars,Close);
If currentbar > Numbars then
Begin
Plot1(VHigh,"VHigh",Color_Val);
Plot2(VLow,"VLow",Color_Val);
Plot3(8,"8",Color_High_Extreme);
Plot4(-8,"-8",Color_Low_Extreme);
Plot5(Vhigh,"Long Exit");
Plot6(VLow,"Short Exit");
if show_close=true then
begin
Plot7(VClose,"Close",Color_Close);
end;
End;
if vhigh>8 then
setplotcolor(1,color_Alert);
if vhigh>8 then
setplotcolor(2,color_alert);
if vlow<-8 then
setplotcolor(2,color_Alert);
if vlow<-8 then
setplotcolor(2,color_alert);
#function VChart
{
************************************************** *****************************
Description : This Function returns Value Chart prices. Provided By : Mark W. Helweg (c) Copyright 2001 ************************************************** *****************************
}
Inputs:
NumBars(Numeric),Price(NumericSeries);
Variables:
VarNumBars(0),Var0(0),LRange(0),YDiv(0),RanVar4(0) ,VOpen(0),VHigh(0),VLow(0),VClose(0),VarA(0),VarB( 0),VarC(0),VarD(0),VarE(0),VarP(0),VarR1(0),VarR2( 0),VarR3(0),VarR4(0),VarR5(0);
{Insure NumBars is between 2 and 1000}
If NumBars < 2 then
VarNumBars = 2;
If Numbars > 1000 then
VarNumBars = 1000;
If Numbars >= 2 and NumBars <=1000 then
VarNumBars = NumBars;
VarP=Round(VarNumBars/5,0);
If VarNumBars >7 then
begin
VarA=Highest(H,VarP)-Lowest(L,VarP);
If VarA = 0 and VarP=1 then
VarR1=absvalue(C-C[VarP])
Else
VarR1 = VarA; VarB=Highest(H,VarP)[VarP+1]-Lowest(L,VarP)[VarP];
If VarB = 0 and VarP=1 then
VarR2=absvalue(C[VarP]-C[VarP*2])
Else
VarR2 = VarB; VarC=Highest(H,VarP)[VarP*2]-Lowest(L,VarP)[VarP*2];
If VarC = 0 and VarP=1 then
VarR3=absvalue(C[VarP*2]-C[VarP*3])
Else
VarR3 = VarC;
VarD=Highest(H,VarP)[VarP*3]-Lowest(L,VarP)[VarP*3];
If VarD = 0 and VarP=1 then
VarR4=absvalue(C[VarP*3]-C[VarP*4])
Else
VarR4 = VarD;
VarE=Highest(H,VarP)[VarP*4]-Lowest(L,VarP)[VarP*4];
If VarE = 0 and VarP=1 then
VarR5=absvalue(C[VarP*4]-C[VarP*5])
Else
VarR5 = VarE;
LRange=((VarR1+VarR2+VarR3+VarR4+VarR5)/5)*.2;
End;
If VarNumBars <=7 then
Begin
If AbsValue(C-C[1]) > (H-L) then
Var0=AbsValue(C-C[1])
else
var0=(H-L);
If H=L then
Var0=absvalue(C-C[1]);
LRange=Average(Var0,5)*.2;
End;
If LRange > 0 then
begin
If Price = Open then
VChart=((Open-Average((H+L)/2,VarNumBars)))/(LRange);
If Price = High then
VChart=((High-Average((H+L)/2,VarNumBars)))/(LRange);
If Price = Low then
VChart=((Low-Average((H+L)/2,VarNumBars)))/(LRange);
If Price = Close then
VChart=((Close-Average((H+L)/2,VarNumBars)))/(LRange);
End;
Here is the same re-written in Easy Language for Trade Station: (Again I am not familiar with this)
Posted on TTM/DDF Value Chart by BlueRay
The first part is for the function VChart:
Inputs:NumBars(Numeric),P rice(NumericSeries);
Variables:VarNumBars(0),V ar0(0),LRange(0),YDiv(0), RanVar4(0),VOpen(0),VHigh (0),VLow(0),VClose(0),
VarA(0),VarB(0),VarC(0),V arD(0),VarE(0),VarP(0),Va rR1(0),VarR2(0),VarR3(0), VarR4(0),VarR5(0);
{Insure NumBars is between 2 and 1000}
If NumBars < 2 then VarNumBars = 2;
If Numbars > 1000 then VarNumBars = 1000;
If Numbars >= 2 and NumBars <=1000 then VarNumBars = NumBars;
VarP=Round(VarNumBars/5,0);
If VarNumBars >7 then begin
VarA=Highest(H,VarP)-Lowest(L,VarP);
If VarA = 0 and VarP=1 then VarR1=absvalue(C-C[VarP]) Else VarR1 = VarA;
VarB=Highest(H,VarP)[VarP+1]-Lowest(L,VarP)[VarP];
If VarB = 0 and VarP=1 then VarR2=absvalue(C[VarP]-C[VarP*2]) Else VarR2 = VarB;
VarC=Highest(H,VarP)[VarP*2]-Lowest(L,VarP)[VarP*2];
If VarC = 0 and VarP=1 then VarR3=absvalue(C[VarP*2]-C[VarP*3]) Else VarR3 = VarC;
VarD=Highest(H,VarP)[VarP*3]-Lowest(L,VarP)[VarP*3];
If VarD = 0 and VarP=1 then VarR4=absvalue(C[VarP*3]-C[VarP*4]) Else VarR4 = VarD;
VarE=Highest(H,VarP)[VarP*4]-Lowest(L,VarP)[VarP*4];
If VarE = 0 and VarP=1 then VarR5=absvalue(C[VarP*4]-C[VarP*5]) Else VarR5 = VarE;
LRange=((VarR1+VarR2+VarR 3+VarR4+VarR5)/5)*.2;
End;
If VarNumBars <=7 then Begin
If AbsValue(C-C[1]) > (H-L) then Var0=AbsValue(C-C[1]) else var0=(H-L);
If H=L then Var0=absvalue(C-C[1]);
LRange=Average(Var0,5)*.2 ;
End;
If LRange > 0 then begin
If Price = Open then
VChart=((Open-Average((H+L)/2,VarNumBars)))/(LRange);
If Price = High then
VChart=((High-Average((H+L)/2,VarNumBars)))/(LRange);
If Price = Low then
VChart=((Low-Average((H+L)/2,VarNumBars)))/(LRange);
If Price = Close then
VChart=((Close-Average((H+L)/2,VarNumBars)))/(LRange);
End;
The second part is the indicator
Inputs:NumBars(5);
Variables:Vopen(0),VHigh( 0),VLow(0),VClose(0),Var1 (0),Var2(0);
Var: VcloseLam(0),ValueSOB(" "),ValueMOB(" "),ValueMOS(" "), ValueSOS(" "), ValueFair(" "), lastdate(0);
{Calcualte Value Chart}
VOpen = VChart(NumBars,Open);
VHigh = VChart(NumBars,High);
VLow = VChart(NumBars,Low);
VClose = VChart(NumBars,Close);
If currentbar > Numbars then Begin
Plot1(VOpen,"VOpen");
Plot2(VHigh,"VHigh");
Plot3(VLow,"VLow");
Plot4(VClose,"VClose");
Plot5(8,"8");
Plot6(4,"4");
Plot7(-4,"-4");
Plot8(-8,"-8");
Plot9(0,"0");
End;
Thank you in advance!
Regards
ForexID10T



Reply With Quote

