Thanks for that.
Users who want to avoid the PREV function will
find that by changing the PREV lines, as in this modified version, that the
formula executes somewhat faster.
Regards
Roy
{HACO Sylvain Vervoort} avg:=Input("Up TEMA
average: ",1,100,34); avgdn:=Input("Down TEMA Average:
",1,100,34); haOpen:=Wilders(Ref((O+H+L+C)/4,-1),2); haC:=((O+H+L+C)/4+haOpen+Max(H,haOpen)+Min(L,haOpen))/4; TMA1:=
Tema(haC,avg); TMA2:= Tema(TMA1,avg); Diff:= TMA1 - TMA2; ZlHa:= TMA1 +
Diff; TMA1:= Tema((H+L)/2,avg); TMA2:= Tema(TMA1,avg); Diff:= TMA1 -
TMA2; ZlCl:= TMA1 +
Diff; ZlDif:=ZlCl-ZlHa; keep1:=Alert(haC>=haOpen,2); keep2:=ZlDif>=0; keeping:=(keep1
OR keep2); keepall:=keeping OR (Ref(keeping,-1) AND (C>=O) OR
C>=Ref(C,-1)); keep3:=(Abs(C-O)<(H-L)*.35 AND
H>=Ref(L,-1)); utr:=Keepall OR (Ref(keepall,-1) AND keep3); TMA1:=
Tema(haC,avgdn); TMA2:= Tema(TMA1,avgdn); Diff:= TMA1 - TMA2; ZlHa:=
TMA1 + Diff; TMA1:= Tema((H+L)/2,avgdn); TMA2:=
Tema(TMA1,avgdn); Diff:= TMA1 - TMA2; ZlCl:= TMA1 +
Diff; ZlDif:=ZlCl-ZlHa; keep1:=Alert(haC<haOpen,2); keep2:=ZlDif<0; keep3:=Abs(C-O)<(H-L)*.35
AND L<=Ref(H,-1); keeping:=keep1 OR keep2; keepall:=keeping OR
(Ref(keeping,-1) AND (C<O) OR C<Ref(C,-1)); dtr:=If(Keepall OR
(Ref(keepall,-1) AND keep3)=1,1,0); upw:=dtr=0 AND Ref(dtr,-1) AND
utr; dnw:=utr=0 AND Ref(utr,-1) AND
dtr; result:=If(upw,1,If(dnw,0,ValueWhen(1,upw+dnw,If(upw,1,0)))); result;
----- Original Message -----
Sent: Monday, December 08, 2008 8:10
AM
Subject: [EquisMetaStock Group] Re:
HEIKIN-ASHI CANDLESTICK OSCILLATOR
--- In equismetastock@yahoogroups.com,
"maurizio_innamorati" <maurizio.innamorati@xxx>
wrote: > > The above indicator is discussed in TASC December
issue. unfortunately, > the formula in MS code is not listed in
Traders' Tips (given in article > itself only available to
subscribers). Could somebody share the code > for the above
indicator witg us? Thanks. >
Here is the MetaStock formula for
the HACO oscillator:
{HACO Sylvain Vervoort} avg:=Input("Up
TEMA average: ",1,100,34); avgdn:=Input("Down TEMA Average:
",1,100,34); haOpen:=(Ref((O+H+L+C)/4,-1) +
PREV)/2; haC:=((O+H+L+C)/4+haOpen+Max(H,haOpen)+Min(L,haOpen))/4; TMA1:=
Tema(haC,avg); TMA2:= Tema(TMA1,avg); Diff:= TMA1 -
TMA2; ZlHa:= TMA1 + Diff; TMA1:= Tema((H+L)/2,avg); TMA2:=
Tema(TMA1,avg); Diff:= TMA1 - TMA2; ZlCl:= TMA1 +
Diff; ZlDif:=ZlCl-ZlHa; keep1:=Alert(haC>=haOpen,2); keep2:=ZlDif>=0; keeping:=(keep1
OR keep2); keepall:=keeping OR (Ref(keeping,-1) AND (C>=O) OR
C>=Ref(C,-1)); keep3:=(Abs(C-O)<(H-L)*.35 AND
H>=Ref(L,-1)); utr:=Keepall OR (Ref(keepall,-1) AND
keep3); TMA1:= Tema(haC,avgdn); TMA2:=
Tema(TMA1,avgdn); Diff:= TMA1 - TMA2; ZlHa:= TMA1 + Diff; TMA1:=
Tema((H+L)/2,avgdn); TMA2:= Tema(TMA1,avgdn); Diff:= TMA1 -
TMA2; ZlCl:= TMA1 +
Diff; ZlDif:=ZlCl-ZlHa; keep1:=Alert(haC<haOpen,2); keep2:=ZlDif<0; keep3:=Abs(C-O)<(H-L)*.35
AND L<=Ref(H,-1); keeping:=keep1 OR keep2; keepall:=keeping OR
(Ref(keeping,-1) AND (C<O) OR C<Ref(C,-1)); dtr:=If(Keepall
OR (Ref(keepall,-1) AND keep3)=1,1,0); upw:=dtr=0 AND Ref(dtr,-1)
AND utr; dnw:=utr=0 AND Ref(utr,-1) AND
dtr; result:=If(upw,1,If(dnw,0,PREV)); result
Best
regards,
__________ NOD32 3668 (20081206)
Information __________
This message was checked by NOD32 antivirus
system. http://www.eset.com
__._,_.___
__,_._,___
|