PureBytes Links
Trading Reference Links
|
Just browsing quickly at the code makes me think that amibroker gives
the angle in radians and the problem lies in the conversion ... not
sure but something you could double check. Not too long ago we were
calculating angles on this forum, maybe browse the history a bit.
Regards
MG Ferreira
TsaTsa EOD Programmer and trading model builder
http://www.ferra4models.com
http://fun.ferra4models.com
--- In equismetastock@xxxxxxxxxxxxxxx, "cn001532" <cn001532@xxxx> wrote:
> If been having a devil of a time trying to calculate the actual
> number of degrees of the slope of the 34 EMA and 25 LSMA. I've got
> some opensource AMIbroker code and was able to get some information
> from www.metastocktools.com which get me close but not quite there.
>
> I have no trouble creating an exploration using the slope, to produce
> an equivalent results that I require, however I really would like to
> be able to calculate the actual number of degrees of both slopes for
> other purposes.
>
> A simple atan function of the slope does not do the trick.
>
> Posted below is the relavent open source amibroker code that
> caclulates the actual number of degrees of the angle of the 34 ema
> and 25 LSMA.
>
> Any help would be most appreciated.
>
>
>
> I would like to replicate these in Metastock:
>
> EMA34 = EMA(C,34);
> PI = 3.141593;
> periods = 30;
> HighHigh = HHV(H, periods);
> LowLow = LLV(L, periods);
> range = 25 / (HighHigh - LowLow) * LowLow;
>
> x1_EMA34 = 0;
> x2_EMA34 = 2;
> y1_EMA34 = 0;
> y2_EMA34 = (Ref(EMA34, -2) - EMA34) / Avg * range;
>
> c_EMA34 = sqrt((x2_EMA34 - x1_EMA34)*(x2_EMA34 - x1_EMA34) +
> (y2_EMA34 - y1_EMA34)*(y2_EMA34 - y1_EMA34));
> angle_EMA34 = round(180 * acos((x2_EMA34 - x1_EMA34)/c_EMA34) / PI);
>
>
> x1_LSMA25 = 0;
> x2_LSMA25 = 2;
> y1_LSMA25 = 0;
> y2_LSMA25 = (Ref(LSMA25, -2) - LSMA25) / Avg * range;
>
> c_LSMA25 = sqrt((x2_LSMA25 - x1_LSMA25)*(x2_LSMA25 - x1_LSMA25) +
> (y2_LSMA25 - y1_LSMA25)*(y2_LSMA25 - y1_LSMA25));
> angle_LSMA25 = round(180 * acos((x2_LSMA25 - x1_LSMA25)/c_LSMA25) /
> PI);
>
>
> I tried using/modifying the following code from metastocktools.com
> with no luck:
> MetaStock -> Tools -> Indicator Builder -> New
> Copy and paste formula below.
>
>
> ============================
> Linear Regression true slope
> ============================
> ---8<---------------------------
>
> { Linear Regression true Slope v3.5 }
> { -100~+100% / -90~+90 degrees }
> { ©Copyright 2003-2004 Jose Silva }
> { http://www.metastocktools.com }
>
> pds:=
> Input("Linear Regression periods",2,2520,21);
> pds1:=
> Input("Lin Reg Signal periods",1,252,5);
> x:=Input("Open=1, High=2, Low=3, Close=4, Volume=5, P=6",1,6,4);
> display:=Input("display -100~100%=1, -90~90 degrees=2",1,2,1);
> hist:=Input("display positive histogram fill (on=1, off=0)",0,1,1);
> plot:=Input("[1] LinReg Slope, [2] signals",
> 1,2,1);
>
> x:=If(x=1,O,If(x=2,H,If(x=3,L,
> If(x=5,V,If(x=6,P,C)))));
> LRlast:=LinearReg(x,pds);
> LRS:=LinRegSlope(x,pds);
> LRprev:=LRlast-LRS;
> {LRstart:=Ref(LRlast-LRS*(pds-1),pds-1);}
>
> a:=Min(LRlast,LRprev)/Max(LRlast,LRprev);
> LRratio:=(If(LRlast>LRprev,2-a,a)-1)*80;
> LRSdeg:=If(LRratio<0,Atan(LRratio,1)-360,
> Atan(LRratio,1));
> LRSper:=LRSdeg*10/9;
> LRStrue:=If(display=2,LRSdeg,LRSper);
> signal:=Mov(LRStrue,pds1,E);
> BuySell:=
> Cross(LRStrue,signal)-Cross(signal,LRStrue);
> odd:=Cum(1)/2=Int(Cum(1)/2);
> odd:=If(hist=1 AND LRStrue>signal,
> If(odd,signal,LRStrue),LRStrue);
>
> If(plot=1,odd,0);
> If(plot=1,signal,0);
> If(plot=1,LRStrue,BuySell)
>
> ---8<---------------------------
>
>
> http://www.metastocktools.com
>
>
> and
>
> MetaStock -> Tools -> Indicator Builder -> New
> Copy and paste formula below.
>
>
> =============
> EMA - slope %
> =============
> ---8<---------------------------
>
> { EMA slope % v2.0, +/- 0~100% }
> { ©Copyright 2003 Jose Silva }
> { http://www.metastocktools.com }
>
> pds:=Input("EMA periods",2,2520,21);
> x:=Input("use Open=1 High=2 Low=3 Close=4 Volume=5 P=6",1,6,4);
>
> x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,V,If(x=6,P,C)))));
> EMA:=Mov(x,pds,E);
> EMAprev:=Ref(EMA,-1);
>
> y:=Min(EMA,EMAprev)/Max(EMA,EMAprev);
> EMAratio:=(If(EMA>EMAprev,2-y,y)-1)*100;
> EMAper:=If(EMAratio<0,Atan(EMAratio,1)-360,
> Atan(EMAratio,1))*10/9;
> signal:=Mov(EMAper,pds,E);
>
> 0;signal;EMAper
>
> ---8<---------------------------
>
>
> http://www.metastocktools.com
------------------------ Yahoo! Groups Sponsor --------------------~-->
Put more honey in your pocket. (money matters made easy).
http://us.click.yahoo.com/r7D80C/dlQLAA/cosFAA/BefplB/TM
--------------------------------------------------------------------~->
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/
|