Rank: Advanced Member
Groups: Registered, Registered Users Joined: 1/19/2005(UTC) Posts: 1,065 Location: Koh Pha-Ngan, Earth
Was thanked: 2 time(s) in 2 post(s)
|
Ever wanted to measure the Rate of Change (RoC/Momentum in MetaStock) since a defined past event, rather than since the normal x periods ago?
The indicators below will measure % or $ RoC since the beginning of year as default. Input your own event code (or system entry signals code) to measure RoC since a specific date or event.
[code:1:d2724f829c] MetaStock -> Tools -> Indicator Builder -> New -> Copy and paste complete formulae between "---8<---" lines.
=============== RoC since event =============== ---8<--------------------------
{ Rate of Change (RoC) since past event v1.0 }
{ ©Copyright 2005 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 } choose:=Input("event: [1]Week, [2]Month, [3]Year, [4]User-defined",1,5,3); method:=Input("method: [1]%-percent, [2]$-points",1,2,1); plot:=Input("plot: [1]RoC, [2]Event signals", 1,2,1);
{ Event1 - start of Week } event1:=DayOfWeek()<Ref(DayOfWeek(),-1);
{ Event2 - start of Month } event2:=DayOfMonth()<Ref(DayOfMonth(),-1);
{ Event3 - start of Year } event3:=Year()<>Ref(Year(),-1);
{ Event4 - EMA crossover signals example } event4:=Cross(Mov(C,5,E),Mov(C,21,E));
{ Event5 - LinReg crossover signals example } event5:=Cross(LinearReg(C,5),LinearReg(C,21));
{ Choose event } event:= If(choose=1,event1, If(choose=2,event2, If(choose=3,event3, If(choose=4,event4, event5))));
{ Event's Close value } start:=Cum(IsDefined(event))=1; eventVal:=ValueWhen(1,event OR start,C);
{ RoC since chosen event } RoCper:=(C/eventVal-1)*100; RoCpts:=C-eventVal;
{ Select % or $ method } eventRoC:=If(method=1,RoCper,RoCpts);
{ Plot in own window } If(plot=1,eventRoC,event)
---8<--------------------------
[/code:1:d2724f829c]
jose '-)
|