PureBytes Links
Trading Reference Links
|
CNxxx, this is the same problem that plagues Elliot Wave & Fib followers.
When you really think about it, it is not possible to derive an absolute
value for the slope of any indicator or price on a chart. Any pseudo
slope, such as the AmiBroker & MetaStock code sample plots, cannot
provide absolute slope values.
An absolute slope requires two absolute values: x (horizontal, time) and
y (vertical, price) axis. The vertical component of a plot can be absolute
(price, indicator/oscillator values), but the horizontal axis is not - it shifts
from chart to chart, from user to user.
Since the reference x-axis (date bar) is not constant or absolute, the
slope of an indicator being relative to the x-axis, slope values will
depend on how far one stretches the total number of bars viewed on a
chart.
In other words, an EMA will look much steeper on a compressed chart
(say, 260 bars from left to right edges), than it would on a more diluted
chart (say, a 60 bar chart).
In any case, the MetaStock sample code below provides a constant
pseudo-slope in degrees. Perhaps this can be of use.
==================
EMA - slope degrees
==================
---8<---------------------------
{ EMA slope % v2.1, +/- 0~90deg }
{ ©Copyright 2005 Jose Silva }
{ For personal use only }
{ http://www.metastocktools.com }
pds:=Input("EMA periods",2,2600,34);
x:=Input("use Open=1 High=2 Low=3 Close=4 Volume=5",1,5,4);
x:=If(x=1,O,If(x=2,H,If(x=3,L,If(x=5,V,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;
EMAdeg:=If(EMAratio<0,Atan(EMAratio,1)-360,
Atan(EMAratio,1)){*10/9};
signal:=Mov(EMAdeg,pds,E);
0;signal;EMAdeg
---8<---------------------------
jose '-)
http://www.metastocktools.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 --------------------~-->
<font face=arial size=-1><a href="http://us.ard.yahoo.com/SIG=12hg3rjoo/M=362343.6886682.7839641.1493532/D=groups/S=1705375617:TM/Y=YAHOO/EXP=1124700681/A=2894350/R=0/SIG=10tj5mr8v/*http://www.globalgiving.com">Make a difference. Find and fund world-changing projects at GlobalGiving</a>.</font>
--------------------------------------------------------------------~->
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/
|