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

[EquisMetaStock Group] Yearly % change



PureBytes Links

Trading Reference Links

This indicator code update deals with the difficult issue of finding 
the correct closing price of the year.


MetaStock -> Tools -> Indicator Builder -> New -> 
Copy and paste complete formula between "---8<---" lines. 

========== 
Yearly RoC 
========== 
---8<----------------------------- 

{ Yearly Rate of Change (RoC) v3.0 

©Copyright 2004~2006 Jose Silva. 
 The grant of this license is for personal use 
  only - no resale or repackaging allowed. 
 All code remains the property of Jose Silva. 
 http://www.metastocktools.com } 

{ User inputs } 
method:=Input("Method:  [1]%percent,  [2]$points",1,2,1); 
yr:=Input("RoC for Year [1800~2200]", 
 1800,2200,2004); 
yrNr:=Input("Year's RoC:  [1]Selected,  [2]All", 
 1,2,2); 
plot:=Input("plot:  [1]RoC,  [2]Year signals", 
 1,2,1); 

{ Start/End of year } 
nuYear:=Year()<>Ref(Year(),-1) OR Cum(1)=2; 
YearEnd:=PeakBars(1, 
 -(nuYear OR Cum(IsDefined(nuYear))=1),1)=0; 
init:=Cum(IsDefined(YearEnd))=1; 

{ Data Array } 
x:=C; 

{ Year's $ RoC change } 
chPts:=x-ValueWhen(1,YearEnd,x); 
chPts:=If(YearEnd=0,chPts, 
 Ref(chPts,-1)+x-Ref(x,-1)); 

{ Year's % RoC change } 
chPer:=(x/ValueWhen(1,YearEnd,x)-1)*100; 
chPer:=If(YearEnd=0,chPer, 
 Ref(chPer,-1)+(x/Ref(x,-1)-1)*100); 

{ Select %/$ RoC method } 
ch:=If(method=1,chPer,chPts); 

{ Restrict RoC to selected year } 
chYear:=If(Year()=yr,ch,0); 
chYear:=If(Year()=yr,chYear, 
 ValueWhen(1, 
  init OR YearEnd AND Year()=yr,chYear)); 

{ Select individual year's RoC or all years } 
chPer:=If(yrNr=1,chYear,ch); 

{ Plot in own window } 
If(plot=1,chPer,nuYear-YearEnd) 

---8<-----------------------------

All good things come to those that wait. ;)


jose '-)
http://www.metastocktools.com



--- In equismetastock@xxxxxxxxxxxxxxx, "Jose Silva" <josesilva22@xxxx> 
wrote:
>
> John, to determine the correct last trading day of year for dates 
> other than 31st Dec, would involve some hindsight code in MetaStock.
> 
> This hindsight-based code is part of the solution for the current 
> MetaStock competition
> ( http://www.metastocktools.com/comp/comp-01.htm ),
> so I'll tackle this one after we have our second winner there.
> 
> 
>> Also, if this were run in an exploration whose last date, for
>> testing purposes, may be set to a prior year, will it still
>> calculate the change based on the current year (currently 2005) or
>> on the last date set in the exploration?
> 
> If you set the referenced indicator's default to a specific year,
> the exploration will return the yearly RoC% for only that specific
> year.
> 
> 
> jose '-)
> http://www.metastocktools.com
> 
> 
> 
> 
> --- In equismetastock@xxxxxxxxxxxxxxx, "John Doe" <ms001122@xxxx> 
> wrote:
>
> Jose,
> Some time back you posted the formula for calculating this year's %
> change:
> 
> { User inputs }
> yr:=Input("% change for Year [1800~2200]",
>   1800,2200,2000);
> yrNr:=Input("Year:  [1]Selected,  [2]All",
>   1,2,1);
> plot:=Input("plot:  [1]% Change,  [2]New Year markers",1,2,1);
> 
> { Start of year }
> init:=Cum(1)=2;
> nuYear:=Year()<>Ref(Year(),-1) OR init;
> 
> { Data Array }
> x:=C;
> 
> { Year's % change }
> ch:=(x/ValueWhen(1,nuYear,x)-1)*100;
> chYear:=If(Year()=yr,ch,0);
> chYear:=ValueWhen(1,chYear<>0 OR init,chYear);
> 
> { Select individual year's % or all }
> chPer:=If(yrNr=1,chYear,ch);
> 
> { Plot in own window }
> If(plot=1,chPer,nuYear)
> ------------------------------------------
> 
> There's an error in this as it calculates change from the Close of
> 1st trading day of this year, whereas by convention the yearly %
> change is always calculated from the last close of previous trading
> year. The error lies here:
> 
> ch:=(x/ValueWhen(1,nuYear,x)-1)*100;
> 
> as its using nuyear's value, not last year's. Can you fix this
> please?
> 
> Also, if this were run in an exploration whose last date, for
> testing purposes, may be set to a prior year, will it still
> calculate the change based on the current year (currently 2005) or
> on the last date set in the exploration?








------------------------ Yahoo! Groups Sponsor --------------------~--> 
Try Online Currency Trading with GFT. Free 50K Demo. Trade 
24 Hours. Commission-Free. 
http://us.click.yahoo.com/RvFikB/9M2KAA/U1CZAA/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/