Alan Hull's Rate of Return Indicator, translated from TradeStaion code. MetaStock -> Tools -> Indicator Builder -> New Copy and paste all formulae below. Plot only last formula. ======== RorPlot1 ======== ---8<--------------------------- { http://www.metastocktools.com } If(Round( (6.854*LinearReg(C,13) +4.236*LinearReg(LinearReg(C,13),11) +2.618*LinearReg(LinearReg(LinearReg(C,13),11),7) +1.618*LinearReg(LinearReg(LinearReg(LinearReg(C,13),11),7),5) +LinearReg(LinearReg(LinearReg(LinearReg(LinearReg(C,13),11),7),5),3)) /16.326*100)/100 > PREV ,If(Round( (6.854*LinearReg(C,13) +4.236*LinearReg(LinearReg(C,13),11) +2.618*LinearReg(LinearReg(LinearReg(C,13),11),7) +1.618*LinearReg(LinearReg(LinearReg(LinearReg(C,13),11),7),5) +LinearReg(LinearReg(LinearReg(LinearReg(LinearReg(C,13),11),7),5),3)) /16.326*100)/100 - (2.5*ATR(13)) > PREV ,Round( (6.854*LinearReg(C,13) +4.236*LinearReg(LinearReg(C,13),11) +2.618*LinearReg(LinearReg(LinearReg(C,13),11),7) +1.618*LinearReg(LinearReg(LinearReg(LinearReg(C,13),11),7),5) +LinearReg(LinearReg(LinearReg(LinearReg(LinearReg(C,13),11),7),5),3)) /16.326*100)/100 - (2.5*ATR(13)) ,PREV) ,LinearReg(C,13)) ---8<--------------------------- ======== RorPlot2 ======== ---8<--------------------------- { http://www.metastocktools.com } Tperiod:=13; CFlow:=100000; If( Sum(WC()*V,13) > CFlow AND (LinearReg(WC(),13) +LinearReg(LinearReg(WC(),8),13) +LinearReg(LinearReg(LinearReg(WC(),5),8),13) +LinearReg(LinearReg(LinearReg(LinearReg(WC(),3),5),8),13) +LinearReg(LinearReg(LinearReg(LinearReg(LinearReg(WC(),2),3),5),8),13))/5 > (LinearReg(Ref(WC(),-1),13) +LinearReg(LinearReg(Ref(WC(),-1),8),13) +LinearReg(LinearReg(LinearReg(Ref(WC(),-1),5),8),13) +LinearReg(LinearReg(LinearReg(LinearReg(Ref(WC(),-1),3),5),8),13) +LinearReg(LinearReg(LinearReg(LinearReg(LinearReg(Ref(WC(),-1),2),3),5),8),13))/5 AND LLVBars(WC(),Tperiod) = Tperiod-1 AND PREV = 0 AND Mov(WC(),13,S) > Mov(WC(),21,S) ,Tperiod-1 ,If(PREV > Tperiod-2 AND Mov(WC(),13,S) > Mov(WC(),21,S) {AND Ref(Fml("RorPlot3"),-1) > 24} {Invalid circular reference!} AND Fml("RorPlot1") >= Ref(Fml("RorPlot1"),-1) ,PREV+1 ,If(Mov(WC(),21,S) >= Mov(WC(),13,S) OR Sum(WC()*V,13) > CFlow OR Ref(Fml("RorPlot1"),-1) > Fml("RorPlot1") {OR Ref(Fml("RorPlot3"),-1) < 25} {Invalid circular reference!} ,0,PREV))) ---8<--------------------------- ======== RorPlot3 ======== ---8<--------------------------- { http://www.metastocktools.com } Round( If(Fml("RorPlot2")>0, If(Fml("RorPlot2")<52, (5200/(Fml("RorPlot2")+1))*((LinearReg(WC(),13) {-Ref(WC(),-Fml("RorPlot2")) <--MS cannot handle variables in Ref function!} -Ref(WC(),-20)) {<-- replaced with 20 period Ref function!} /LinearReg(WC(),13)), 100*((LinearReg(WC(),13)-LinearReg(Ref(WC(),-51),13))/LinearReg(WC(),13))), 0)) ---8<--------------------------- http://www.metastocktools.com