[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [EquisMetaStock Group] Re: help in building an indicator



PureBytes Links

Trading Reference Links

Dear Preston,
Thanks a lot for your help. It was a great support and guidance. The
indicator need not be so complex but just for fun of the same i used added
complexity with 6 types of moving avg and adjustable period of ROC of and
adjustable periods of the moving avg of the ROC.

Also attaching an exploration result of all F&O stocks using this formulae
with 6 and 9 default ROC of EMA.
members comments on improvement are highly valued.
regards
joshik


===============================================================================
{This indicator calulates the Diff of the moving avg of the index(nifty) and
stock. This can be very useful in explorations and shortlisting the nifty
out performers. (Relative strength comparative cannot be used there).

You need to correct the nifty path in the formulae. and the default working
is fine. max you may adjust with moving avg. period of the ROC.

other complexities are usualy not needed.}
Sec:= Security("C:\MetaStock Data\EOD-NSE\S&P CNX Nifty",C);
R1:=Input("Enter ROC Period of Index",1,250,1);
MOVtypeCode1:=Input("EMA(1),TEMA(2),Vol(3),ZeroLag(4),Hull(5),AdapMV(6)",1,6,1);
P1:=Input("Enter Moving Avg Period of ROC of Index",1,250,9);

R2:=Input("Enter ROC Period of Stock",1,250,1);
MOVtypeCode2:=Input("EMA(1),TEMA(2),Vol(3),ZeroLag(4),Hull(5),AdapMV(6)",1,6,1);
P2:=Input("Enter Moving Avg Period of Stock",1,250,9);

{calculate ROC of index here}
RA1:=ROC(Sec{close of sec},R1,%);
{calculate ROC of stock here}
RA2:= ROC(C,R2,%);
{variables for adaptive moving Average}
K1:=Power(ROC(sec,P1,$)/Sum(Abs(ROC(sec,1,$)),P1),2);
AMA1:=    If(Cum(1)<=P1+1,Sec,PREV*(1-K1)+sec*K1);

K2:=Power(ROC(C,P2,$)/Sum(Abs(ROC(C,1,$)),P2),2);
AMA2:=    If(Cum(1)<=P2+1,C,PREV*(1-K2)+C*K2);

{calculate moving avg of ROC of index here}
RA1MA:= If(MOVtypeCode1=1, Mov(RA1,P1, E),
{else}
If(MOVtypeCode1=2, Tema(RA1, P1),
{else}
If(MOVtypeCode1=3, Mov(RA1,P1,VOL),
{else}
If(MOVtypeCode1=4, Mov(RA1,P1, E) + (Mov(RA1,P1, E) -
Mov(Mov(RA1,P1,E),P1,E)),
If(MOVtypeCode1=5, Mov(2*Mov(RA1,P1/2,W) -
Mov(RA1,P1,W),LastValue(Sqrt(P1)),W),
AMA1
)))));

{calculate moving avg of ROC of Stock here}
RA2MA:= If(MOVtypeCode2=1, Mov(RA2,P2, E),
{else}
If(MOVtypeCode2=2, Tema(RA2, P2),
If(MOVtypeCode2=3, Mov(RA2,P2,VOL),
If(MOVtypeCode2=4, Mov(RA2,P2, E) + (Mov(RA2,P2, E)- Mov(Mov(RA2,P2,
E),P2,E)),
If(MOVtypeCode2=5, Mov(2*Mov(RA2,P2/2,W) -
Mov(RA2,P2,W),LastValue(Sqrt(P2)),W),
AMA2
)))));

{Plot}
(RA2MA-RA1MA);
=============================================================================




On 12/25/06, pumrysh <no_reply@xxxxxxxxxxxxxxx> wrote:
>
>   Let's see if this will at least get you going.
>
> BTW, Its much easier to address someone by a name not "stock market".
>
> The formula you are seeking requires a bit of manipulation and use
> of "if" variables which are tricky but can be done. I've coded the
> first part but the moving averages you requested in 4,5,and 6 are
> not standard metastock indicators so you need to decide how you will
> deal with them. You can include the formula in the indicator code or
> call a Formula variable from an external indicator formula. You
> should also keep in mind that you may be reaching a line limitation
> so the external FMLVAR call may save you some space.
>
> Here's part one of the formula:
>
> Sec:= Security("C:\MetaStock Data\EOD-NSE\S&P CNX Nifty",C);
> P1:=Input("Enter Moving Avg Period of Index",1,250,6);
> R1:=Input("Enter ROC Period of Index",1,250,6);
> MOVtypeCode1:=Input("EMA(1),TEMA(2),Vol(3),ZeroLag(4),Hull(5),AdapMV
> (6)",1,6,1);
>
> {place all input variables above this line}
>
> RA1:=ROC(SEC {close of sec},R1,%);
>
> {manipulate data above this line}
>
> MA1:=Mov(RA1,P1, E);
> MA2:= Tema(RA1, P1);
> MA3:= Mov(RA1,P1,V);
> MA4:= {Zero Lag here};
> MA5:= {Hull here};
> MA6:= {Adap MV here};
>
> RAMA:= If(MOVtypeCode1=1, MA1,
> {else}
> If(MOVtypeCode1=2, MA2,
> {else}
> If(MOVtypeCode1=3, MA3,
> {else}
> If(MOVtypeCode1=4, MA4,
> {else}
> If(MOVtypeCode1=5, MA5,
> {else}
> MA6)))));
>
> RAMA;{no need for this line if you do not wish to plot RAMA}
>
> hope this helps,
>
> Preston
>
>
> --- In equismetastock@xxxxxxxxxxxxxxx <equismetastock%40yahoogroups.com>,
> "stock market"
>
> <stockmarket1974@xxx> wrote:
> >
> > hi,
> > i am trying to build and indicator for comparing the price
> movement of the
> > security with the index. This should give the market out
> performers. as i am
> > not very good at this. Help from all the seniors in the line is of
> great
> > value.
> >
> > the indicator would do as under
> > calculate the daily ROC of index and the security
> > calculate the moving average of this roc(both the index and
> security)
> > the diff of the two would be the chart
> >
> > i have writen the following code but cannot understand how to
> > 1) use the input that selects the kind of moving avg to be used.
> (line 6)
> > 2) how to select the price of index that has been selected with
> the variable
> > sec(line5)
> >
> > please also check the rest of the code and suggest improvements
> >
> >
> ====================================================================
> > Sec:= Security("C:\MetaStock Data\EOD-NSE\S&P CNX Nifty",C);
> > P1:=Input("Enter Moving Avg Period of Index",1,250,6);
> > MOVtypeCode1:=Input("EMA(1),TEMA(2),Vol(3),ZeroLag(4),Hull
> (5),AdapMV(6)",1,5,1);
> > MOVtype1:=0; {this varriable is to select the moving avg type in
> formulae
> > language}
> > ROC1:=ROC(c{close of sec},1,%);
> > ROCma1:=Mov(ROC1,P1,e{kind of mov to be used});
> >
> > P2:=Input("Enter Moving Avg Period of security",1,250,6);
> > MOVtypeCode2:=Input("EMA(1),TEMA(2),Vol(3),ZeroLag(4),Hull
> (5),AdapMV(6)",1,5,1);
> > MOVtype2:=0; {this varriable is to select the moving avg type in
> formulae
> > language}
> > ROC2:=ROC(C,1,%);
> > ROCma2:=Mov(ROC2,P2,e{1/2/3/4/5/6});
> >
> > diff:=(ROCma1-ROCma2)/
> >
> > {Plot}
> > diff;
> >
> =====================================================================
> ===
> >
>
>  
>


[Non-text portions of this message have been removed]



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/equismetastock/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/equismetastock/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:equismetastock-digest@xxxxxxxxxxxxxxx 
    mailto:equismetastock-fullfeatured@xxxxxxxxxxxxxxx

<*> 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/