PureBytes Links
Trading Reference Links
|
The inverse sin function is asin, asin(sin(x)) = x. From
http://glek.net/subversion/os/kernel/support/m/e_asin.c
you get
asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
which may get you somewhere. These are all in radians, so somewhere
you'd have to convert to degrees as well.
Regards
MG Ferreira
TsaTsa EOD Programmer and trading model builder
http://www.ferra4models.com
http://fun.ferra4models.com
--- In equismetastock@xxxxxxxxxxxxxxx, "david" <dwei9361@xxxx> wrote:
> Thanks for your response.
>
> If I could do an 'inverse sine' function in metastock, atleast I
would have
> the dominate cycle phase which might be interesting atleast for some
> preliminary investigation.
>
> Best regards
>
> David Weir
>
>
> -----Original Message-----
> From: equismetastock@xxxxxxxxxxxxxxx
[mailto:equismetastock@xxxxxxxxxxxxxxx]
> On Behalf Of superfragalist
> Sent: Thursday, 9 June 2005 4:34 AM
> To: equismetastock@xxxxxxxxxxxxxxx
> Subject: [EquisMetaStock Group] Re: MESASineWave() and phase rate of
change
> less than 67%
>
> What you are asking for is very complex, and it doesn't work all that
> well. You would be much, much better off with the B and Q indicators,
> Trend Quality Indicators and Trend Noise Balance Indicator, from
> Sepiashvili. You can find the correct MS code for these in Roy's
> newsletter. www.metastocktips.co.nz The code on the Equis website is
> wrong and so is the code in S&C.
>
> I've discussed David's approach with Ehlers, and he likes the way
> David goes about this. David's method is tons easier to read and
> interpret. I've read all of Ehlers papers and books. I've tested all
> of his stuff and basically, it's okay but don't get too worked up.
> It's not magic and it really doesn't work any better than simpler
> stuff that's been around a long time. The engineer's always get goose
> bumps when they read Ehler because they think engineering math is
> going to tame the markets. Sorry, no such luck!
>
> Here's David's website: http://www.alticom.com/indicators/overview.html
>
> Here's the MS implementation of approximately what you're looking for.
>
> You left a ton of the TradeStation code out.
>
> I'm going to give you all of the Hilbert formula's because Ehlers uses
> all of them in verious indicators. You can read about this non-sense
> in the May 2000 S&C.
>
> Ehlers Sine Wave Trend Indicator
>
> pd:=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(pd<30 AND cp>0,dc1+((6.818/cp - 0.227)*360),dc1);
> dc3:=If(ip<0, dc2+270, dc2+90);
> dcp:=If(dc3>315, dc3-360, dc3);
>
> Sin(dcp);
> Sin(dcp+45)
>
> Name: H cycle count 1a
> value:= 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 2a
> value:= 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 3a
> value:= 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 1
> pd:=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 2
> pd:=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 3
> pd:=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 1
> pd:=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 2
> pd:=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 3
> pd:=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 1
> value:=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 2
> value:=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 3
> value:=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 - 1a
> value1:=((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-a
> c1:= 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 Line
> pr:=(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)
>
>
>
>
>
>
>
> Yahoo! Groups Links
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/equismetastock/
<*> To unsubscribe from this group, send an email to:
equismetastock-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|