Error

 Previous Topic Next Topic
 KTP2 #1 Posted : Wednesday, November 12, 2008 4:19:04 PM(UTC) Rank: Advanced MemberGroups: Registered, Registered Users, SubscribersJoined: 2/2/2007(UTC)Posts: 367Was thanked: 1 time(s) in 1 post(s) Here is the MetaStock 6.52 or higher formula code for the Instantaneous Trendline and Sinewave Indicator as described by John Ehlers in his article "At Last! A Trend-Friendly Oscillator". To implement them the following formulas must be created in MetaStock's Indicator Builder. Each formula must be created separately and must be named exactly as it appears below. Only the last two formulas are plotted, so you may wish to prevent the others from being displayed in the Indicator QuickList by unchecking the "Display In QuickList" option when creating the formula. Name: H cycle count 1avalue:= Fml("Hilbert cycle period - 1a");If(Sum(value,6)>=360 AND Sum(value,5)<360 ,6,0) +If(Sum(value,7)>=360 AND Sum(value,6)<360 ,7,0) +If(Sum(value,8)>=360 AND Sum(value,7)<360 ,8,0) +If(Sum(value,9)>=360 AND Sum(value,8)<360 ,9,0) +If(Sum(value,10)>=360 AND Sum(value,9)<360 ,10,0) +If(Sum(value,11)>=360 AND Sum(value,10)<360 ,11,0) +If(Sum(value,12)>=360 AND Sum(value,11)<360 ,12,0) +If(Sum(value,13)>=360 AND Sum(value,12)<360 ,13,0) +If(Sum(value,14)>=360 AND Sum(value,13)<360 ,14,0) +If(Sum(value,15)>=360 AND Sum(value,14)<360 ,15,0) Name: H cycle count 2avalue:= Fml("Hilbert cycle period - 1a");If(Sum(value,16)>=360 AND Sum(value,15)<360 ,16,0) +If(Sum(value,17)>=360 AND Sum(value,16)<360 ,17,0) +If(Sum(value,18)>=360 AND Sum(value,17)<360 ,18,0) +If(Sum(value,19)>=360 AND Sum(value,18)<360 ,19,0) +If(Sum(value,20)>=360 AND Sum(value,19)<360 ,20,0) +If(Sum(value,21)>=360 AND Sum(value,20)<360 ,21,0) +If(Sum(value,22)>=360 AND Sum(value,21)<360 ,22,0) +If(Sum(value,23)>=360 AND Sum(value,22)<360 ,23,0) +If(Sum(value,24)>=360 AND Sum(value,23)<360 ,24,0) +If(Sum(value,25)>=360 AND Sum(value,24)<360 ,25,0) Name: H cycle count 3avalue:= Fml("Hilbert cycle period - 1a");If(Sum(value,26)>=360 AND Sum(value,25)<360 ,26,0) +If(Sum(value,27)>=360 AND Sum(value,26)<360 ,27,0) +If(Sum(value,28)>=360 AND Sum(value,27)<360 ,28,0) +If(Sum(value,29)>=360 AND Sum(value,28)<360 ,29,0) +If(Sum(value,30)>=360 AND Sum(value,29)<360 ,30,0) +If(Sum(value,31)>=360 AND Sum(value,30)<360 ,31,0) +If(Sum(value,32)>=360 AND Sum(value,31)<360 ,32,0) +If(Sum(value,33)>=360 AND Sum(value,32)<360 ,33,0) +If(Sum(value,34)>=360 AND Sum(value,33)<360 ,34,0) +If(Sum(value,35)>=360 AND Sum(value,34)<360 ,35,0) Name: H ip sum 1pd:=Int(Fml("Hilbert cycle period - final-a"));pr:=(H+L)/2;(Cos(0)*pr)+(Cos(360*(1/pd))*Ref(pr,-1))+(Cos(360*(2/pd))*Ref(pr,-2))+(Cos(360*(3/pd))*Ref(pr,-3))+(Cos(360*(4/pd))*Ref(pr,-4))+(Cos(360*(5/pd))*Ref(pr,-5))+If(pd>6, Cos(360*(6/pd))*Ref(pr,-6), 0)+If(pd>7, Cos(360*(7/pd))*Ref(pr,-7), 0)+If(pd>8, Cos(360*(8/pd))*Ref(pr,-8), 0)+If(pd>9, Cos(360*(9/pd))*Ref(pr,-9), 0)+If(pd>10, Cos(360*(10/pd))*Ref(pr,-10), 0)+If(pd>11, Cos(360*(11/pd))*Ref(pr,-11), 0)+If(pd>12, Cos(360*(12/pd))*Ref(pr,-12), 0)+If(pd>13, Cos(360*(13/pd))*Ref(pr,-13), 0)+If(pd>14, Cos(360*(14/pd))*Ref(pr,-14), 0) Name: H ip sum 2pd:=Int(Fml("Hilbert cycle period - final-a"));pr:=(H+L)/2;If(pd>15, Cos(360*(15/pd))*Ref(pr,-15), 0)+If(pd>16, Cos(360*(16/pd))*Ref(pr,-16), 0)+If(pd>17, Cos(360*(17/pd))*Ref(pr,-17), 0)+If(pd>18, Cos(360*(18/pd))*Ref(pr,-18), 0)+If(pd>19, Cos(360*(19/pd))*Ref(pr,-19), 0)+If(pd>20, Cos(360*(20/pd))*Ref(pr,-20), 0)+If(pd>21, Cos(360*(21/pd))*Ref(pr,-21), 0)+If(pd>22, Cos(360*(22/pd))*Ref(pr,-22), 0)+If(pd>23, Cos(360*(23/pd))*Ref(pr,-23), 0)+If(pd>24, Cos(360*(24/pd))*Ref(pr,-24), 0) Name: H ip sum 3pd:=Int(Fml("Hilbert cycle period - final-a"));pr:=(H+L)/2;If(pd>25, Cos(360*(25/pd))*Ref(pr,-25), 0)+If(pd>26, Cos(360*(26/pd))*Ref(pr,-26), 0)+If(pd>27, Cos(360*(27/pd))*Ref(pr,-27), 0)+If(pd>28, Cos(360*(28/pd))*Ref(pr,-28), 0)+If(pd>29, Cos(360*(29/pd))*Ref(pr,-29), 0)+If(pd>30, Cos(360*(30/pd))*Ref(pr,-30), 0)+If(pd>31, Cos(360*(31/pd))*Ref(pr,-31), 0)+If(pd>32, Cos(360*(32/pd))*Ref(pr,-32), 0)+If(pd>33, Cos(360*(33/pd))*Ref(pr,-33), 0)+If(pd>34, Cos(360*(34/pd))*Ref(pr,-34), 0) Name: H rp sum 1pd:=Int(Fml("Hilbert cycle period - final-a"));pr:=(H+L)/2;(Sin(0)*pr)+(Sin(360*(1/pd))*Ref(pr,-1))+(Sin(360*(2/pd))*Ref(pr,-2))+(Sin(360*(3/pd))*Ref(pr,-3))+(Sin(360*(4/pd))*Ref(pr,-4))+(Sin(360*(5/pd))*Ref(pr,-5))+If(pd>6, Sin(360*(6/pd))*Ref(pr,-6), 0)+If(pd>7, Sin(360*(7/pd))*Ref(pr,-7), 0)+If(pd>8, Sin(360*(8/pd))*Ref(pr,-8), 0)+If(pd>9, Sin(360*(9/pd))*Ref(pr,-9), 0)+If(pd>10, Sin(360*(10/pd))*Ref(pr,-10), 0)+If(pd>11, Sin(360*(11/pd))*Ref(pr,-11), 0)+If(pd>12, Sin(360*(12/pd))*Ref(pr,-12), 0)+If(pd>13, Sin(360*(13/pd))*Ref(pr,-13), 0)+If(pd>14, Sin(360*(14/pd))*Ref(pr,-14), 0) Name: H rp sum 2pd:=Int(Fml("Hilbert cycle period - final-a"));pr:=(H+L)/2;If(pd>15, Sin(360*(15/pd))*Ref(pr,-15), 0)+If(pd>16, Sin(360*(16/pd))*Ref(pr,-16), 0)+If(pd>17, Sin(360*(17/pd))*Ref(pr,-17), 0)+If(pd>18, Sin(360*(18/pd))*Ref(pr,-18), 0)+If(pd>19, Sin(360*(19/pd))*Ref(pr,-19), 0)+If(pd>20, Sin(360*(20/pd))*Ref(pr,-20), 0)+If(pd>21, Sin(360*(21/pd))*Ref(pr,-21), 0)+If(pd>22, Sin(360*(22/pd))*Ref(pr,-22), 0)+If(pd>23, Sin(360*(23/pd))*Ref(pr,-23), 0)+If(pd>24, Sin(360*(24/pd))*Ref(pr,-24), 0) Name: H rp sum 3pd:=Int(Fml("Hilbert cycle period - final-a"));pr:=(H+L)/2;If(pd>25, Sin(360*(25/pd))*Ref(pr,-25), 0)+If(pd>26, Sin(360*(26/pd))*Ref(pr,-26), 0)+If(pd>27, Sin(360*(27/pd))*Ref(pr,-27), 0)+If(pd>28, Sin(360*(28/pd))*Ref(pr,-28), 0)+If(pd>29, Sin(360*(29/pd))*Ref(pr,-29), 0)+If(pd>30, Sin(360*(30/pd))*Ref(pr,-30), 0)+If(pd>31, Sin(360*(31/pd))*Ref(pr,-31), 0)+If(pd>32, Sin(360*(32/pd))*Ref(pr,-32), 0)+If(pd>33, Sin(360*(33/pd))*Ref(pr,-33), 0)+If(pd>34, Sin(360*(34/pd))*Ref(pr,-34), 0) Name: H TL sum 1value:=Int(Fml("Hilbert cycle period - final-a"));If(value=6, Mov((H+L)/2,8,S),0) +If(value=7, Mov((H+L)/2,9,S),0) +If(value=8, Mov((H+L)/2,10,S),0) +If(value=9, Mov((H+L)/2,11,S),0) +If(value=10, Mov((H+L)/2,12,S),0) +If(value=11, Mov((H+L)/2,13,S),0) +If(value=12, Mov((H+L)/2,14,S),0) +If(value=13, Mov((H+L)/2,15,S),0) +If(value=14, Mov((H+L)/2,16,S),0) +If(value=15, Mov((H+L)/2,17,S),0) Name: H TL sum 2value:=Int(Fml("Hilbert cycle period - final-a"));If(value=16, Mov((H+L)/2,18,S),0) +If(value=17, Mov((H+L)/2,19,S),0) +If(value=18, Mov((H+L)/2,20,S),0) +If(value=19, Mov((H+L)/2,21,S),0) +If(value=20, Mov((H+L)/2,22,S),0) +If(value=21, Mov((H+L)/2,23,S),0) +If(value=22, Mov((H+L)/2,24,S),0) +If(value=23, Mov((H+L)/2,25,S),0) +If(value=24, Mov((H+L)/2,26,S),0) +If(value=25, Mov((H+L)/2,27,S),0) Name: H TL sum 3value:=Int(Fml("Hilbert cycle period - final-a"));If(value=26, Mov((H+L)/2,28,S),0) +If(value=27, Mov((H+L)/2,29,S),0) +If(value=28, Mov((H+L)/2,30,S),0) +If(value=29, Mov((H+L)/2,31,S),0) +If(value=30, Mov((H+L)/2,32,S),0) +If(value=31, Mov((H+L)/2,33,S),0) +If(value=32, Mov((H+L)/2,34,S),0) +If(value=33, Mov((H+L)/2,35,S),0) +If(value=34, Mov((H+L)/2,36,S),0) +If(value=35, Mov((H+L)/2,37,S),0) Name: Hilbert cycle period - 1avalue1:=((H+L)/2) - Ref(((H+L)/2),-6);value2:= Ref(value1,-3);value3:=0.75*(value1-Ref(value1,-6)) + 0.25*(Ref(value1,-2)-Ref(value1,-4)); inphase:= 0.33 * value2 + (0.67 * PREV);quad:= 0.2 * value3 + ( 0.8 * PREV); p1:=Atan(Abs(quad+Ref(quad,-1)),Abs(inphase+Ref(inphase,-1))); phase:=If(inphase<0 AND quad>0, 180-p1,If(inphase<0 AND quad<0, 180+p1,If(inphase>0 AND quad<0, 360-p1,p1))); dp:=If(Ref(phase,-1)<90 AND phase>270, 360+Ref(phase,-1)-phase,Ref(phase,-1)-phase);dp2:=If(dp < 1, 1,If(dp > 60, 60, dp)); dp2 Name: Hilbert cycle period - final-ac1:= Fml( "H cycle count 1a") + Fml( "H cycle count 2a") + Fml( "H cycle count 3a") ;c2:=If(c1=0,PREV,c1); (0.25*c2) + (0.75*PREV) Name: Instantaneous Trend Linepr:=(H+L)/2;(Fml("H TL sum 1") + Fml("H TL sum 2") + Fml("H TL sum 3"));0.33*(pr + (0.5*(pr-Ref(pr,-3)))) + (0.67*PREV) Name: Sinewave Indicatorpd:=Int(Fml("Hilbert cycle period - final-a"));cp:=Fml("Hilbert cycle period - final-a");ip:=Fml( "H ip sum 1") + Fml( "H ip sum 2") +Fml( "H ip sum 3");rp:=Fml( "H rp sum 1") + Fml( "H rp sum 2") +Fml( "H rp sum 3");dc1:=If(Abs(ip)>0.001, Atan(rp/ip,1), 90*If(rp>=0,1,-1));dc2:=If(ip<0, dc1+270, dc1+90);dcp:=If(dc2>315, dc2-360, dc2);Sin(dcp);Sin(dcp+45)
 Wanna join the discussion?! Login to your Discussions forum accountor Register a new forum account.
 Users browsing this topic
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.