Hi Roy

The constants limit was the reason for the unwieldy coding as you guessed. 
Fortunately the 3 working indicators were quick to create using Excel and the 
=CONCATENATE function. Your solution is ingenious and highlights your 
exceptional MetaStock coding skill.

Thanks for pointing out the 99 vs 100 comparisons. Careless on my part.

Kind regards

Stuart



--- In [email protected], "Roy Larsen" <rlarsen@...> wrote:
>
> 
> Hi Stuart
> 
> 
> I meant to reply to your post earlier but other tasks have had to take 
> priority. A little while ago I did some work on Connors RSI for a client, and 
> while I'm not sure that my code is correct either, there are a couple of 
> things here that might be useful to yourself or other readers.
> 
> My initial Connors RSI code use PREV to avoid the long-winded method of 
> producing the ranking component, but when asked to make a non-PREV version I 
> found that it could all be contained within the one indicator. I also managed 
> to incorporate an adjustable lookback range, but more on that in a minute.
> 
> I'm guessing that the biggest obstacle you ran into was MetaStock's limit of 
> 40 constants, and I have to admit that this is a real pain. Nevertheless it 
> is possible to get around that obstacle. The code below is a reworked version 
> of your "Connors RSI Working 1" and does away with the need for the #2 and #3 
> indicators.
> 
> As an example notice that the expression "-50-9" can be used as a substitute 
> for the constant "-59". As a rule I usually limit the number of constants 
> about 30 and then use 40, 50, 60 and so on with an appropriate modifying 
> constant to generate all the values required. I'm quite sure that the rest of 
> the indicator can also be squeezed into less than 2500 characters so that the 
> entire "Connors RSI" is held in just one formula.
> 
> I notice that your three "Working" indicators only add up to 99 comparisons 
> against the current ROC value. For the code below I've added a 100th 
> comparison, and with that both our formulas produce the same result from this 
> element.
> 
> As regards adjusting the lookback range, each element can be included or 
> excluded from the total by multiplying each element by lookback range 
> component.
> 
> For example, this section of code could be changed to accommodate a lookback 
> extreme of between 90 and 100.
> 
> (ox>Ref(x,-80-9))+(x>Ref(x,-90))+
> (x>Ref(x,-90-1))+(x>Ref(x,-90-2))+
> (x>Ref(x,-90-3))+(x>Ref(x,-90-4))+
> (x>Ref(x,-90-5))+(x>Ref(x,-90-6))+
> (x>Ref(x,-90-7))+(x>Ref(x,-90-8))+
> (x>Ref(x,-90-9))+(x>Ref(x,-100));
> 
> And here's how it might look after adding the lookback control. Applying that 
> method to all 100 comparisons will force the use of a second indicator simply 
> because of limited space.
> 
> (x>Ref(x,-80-9))+ (N80+9)*(x>Ref(x,-90))+
> (N>90)*(x>Ref(x,-90-1))+ (N>90+1)*(x>Ref(x,-90-2))+
> (N>90+2)*(x>Ref(x,-90-3))+ (N>90+3)*(x>Ref(x,-90-4))+
> (N>90+4)*(x>Ref(x,-90-5))+ (N>90+5)*(x>Ref(x,-90-6))+
> (N>90+6)*(x>Ref(x,-90-7))+ (N>90+7)*(x>Ref(x,-90-8))+
> (N>90+8)*(x>Ref(x,-90-9))+ (N>90+9)*(x>Ref(x,-100));
> 
> 
> Well, that's my two pennyworth; I hope it helps someone :-)
> 
> 
> Regards
> 
> Roy
> 
> 
> {Connors RSI Working 1}
> x:=ROC(C,1,%);
> (x>Ref(x,-1))+(x>Ref(x,-2))+(x>Ref(x,-3))+
> (x>Ref(x,-4))+(x>Ref(x,-5))+(x>Ref(x,-6))+
> (x>Ref(x,-7))+(x>Ref(x,-8))+(x>Ref(x,-9))+
> (x>Ref(x,-10))+(x>Ref(x,-11))+(x>Ref(x,-12))+
> (x>Ref(x,-13))+(x>Ref(x,-14))+(x>Ref(x,-15))+
> (x>Ref(x,-16))+(x>Ref(x,-17))+(x>Ref(x,-18))+
> (x>Ref(x,-19))+(x>Ref(x,-20))+(x>Ref(x,-21))+
> (x>Ref(x,-22))+(x>Ref(x,-23))+(x>Ref(x,-24))+
> (x>Ref(x,-25))+(x>Ref(x,-26))+(x>Ref(x,-27))+
> (x>Ref(x,-28))+(x>Ref(x,-29))+(x>Ref(x,-30))+
> (x>Ref(x,-30-1))+(x>Ref(x,-30-2))+
> (x>Ref(x,-30-3))+(x>Ref(x,-30-4))+
> (x>Ref(x,-30-5))+(x>Ref(x,-30-6))+
> (x>Ref(x,-30-7))+(x>Ref(x,-30-8))+
> (x>Ref(x,-30-9))+(x>Ref(x,-40))+
> (x>Ref(x,-40-1))+(x>Ref(x,-40-2))+
> (x>Ref(x,-40-3))+(x>Ref(x,-40-4))+
> (x>Ref(x,-40-5))+(x>Ref(x,-40-6))+
> (x>Ref(x,-40-7))+(x>Ref(x,-40-8))+
> (x>Ref(x,-40-9))+(x>Ref(x,-50-0))+
> (x>Ref(x,-50-1))+(x>Ref(x,-50-2))+
> (x>Ref(x,-50-3))+(x>Ref(x,-50-4))+
> (x>Ref(x,-50-5))+(x>Ref(x,-50-6))+
> (x>Ref(x,-50-7))+(x>Ref(x,-50-8))+
> (x>Ref(x,-50-9))+(x>Ref(x,-60))+
> (x>Ref(x,-60-1))+(x>Ref(x,-60-2))+
> (x>Ref(x,-60-3))+(x>Ref(x,-60-4))+
> (x>Ref(x,-60-5))+(x>Ref(x,-60-6))+
> (x>Ref(x,-60-7))+(x>Ref(x,-60-8))+
> (x>Ref(x,-60-9))+(x>Ref(x,-70-0))+
> (x>Ref(x,-70-1))+(x>Ref(x,-70-2))+
> (x>Ref(x,-70-3))+(x>Ref(x,-70-4))+
> (x>Ref(x,-70-5))+(x>Ref(x,-70-6))+
> (x>Ref(x,-70-7))+(x>Ref(x,-70-8))+
> (x>Ref(x,-70-9))+(x>Ref(x,-80))+
> (x>Ref(x,-80-1))+(x>Ref(x,-80-2))+
> (x>Ref(x,-80-3))+(x>Ref(x,-80-4))+
> (x>Ref(x,-80-5))+(x>Ref(x,-80-6))+
> (x>Ref(x,-80-7))+(x>Ref(x,-80-8))+
> (x>Ref(x,-80-9))+(x>Ref(x,-90))+
> (x>Ref(x,-90-1))+(x>Ref(x,-90-2))+
> (x>Ref(x,-90-3))+(x>Ref(x,-90-4))+
> (x>Ref(x,-90-5))+(x>Ref(x,-90-6))+
> (x>Ref(x,-90-7))+(x>Ref(x,-90-8))+
> (x>Ref(x,-90-9))+(x>Ref(x,-100));
> 
> 
> 
>   ----- Original Message ----- 
>   From: stuart_yg123 
>   To: [email protected] 
>   Sent: Friday, March 08, 2013 2:02 AM
>   Subject: [EquisMetaStock Group] Re: ConnorsRSI
> 
> 
>     
> 
> 
>   I converted the Amibroker code ex
>   
> http://www.marketcalls.in/amibroker/larry-connors-rsi-amibroker-afl-code.html
> 
>   I made a change to the upDays and downDays lines by commenting out the 
> equals sign. I don't think the equals is correct based on reading the guide 
> from http://analytics.tradingmarkets.com/ConnorsRSI/
> 
>   I required 4 indicators for the calculations. Hope my coding is correct.
> 
>   Regards
> 
>   Stuart
> 
>   {Connors RSI Working 1}
>   x:=ROC(C,1,%);
>   If(x>Ref(x,-1),1,0)+
>   If(x>Ref(x,-2),1,0)+
>   If(x>Ref(x,-3),1,0)+
>   If(x>Ref(x,-4),1,0)+
>   If(x>Ref(x,-5),1,0)+
>   If(x>Ref(x,-6),1,0)+
>   If(x>Ref(x,-7),1,0)+
>   If(x>Ref(x,-8),1,0)+
>   If(x>Ref(x,-9),1,0)+
>   If(x>Ref(x,-10),1,0)+
>   If(x>Ref(x,-11),1,0)+
>   If(x>Ref(x,-12),1,0)+
>   If(x>Ref(x,-13),1,0)+
>   If(x>Ref(x,-14),1,0)+
>   If(x>Ref(x,-15),1,0)+
>   If(x>Ref(x,-16),1,0)+
>   If(x>Ref(x,-17),1,0)+
>   If(x>Ref(x,-18),1,0)+
>   If(x>Ref(x,-19),1,0)+
>   If(x>Ref(x,-20),1,0)+
>   If(x>Ref(x,-21),1,0)+
>   If(x>Ref(x,-22),1,0)+
>   If(x>Ref(x,-23),1,0)+
>   If(x>Ref(x,-24),1,0)+
>   If(x>Ref(x,-25),1,0)+
>   If(x>Ref(x,-26),1,0)+
>   If(x>Ref(x,-27),1,0)+
>   If(x>Ref(x,-28),1,0)+
>   If(x>Ref(x,-29),1,0)+
>   If(x>Ref(x,-30),1,0)+
>   If(x>Ref(x,-31),1,0)+
>   If(x>Ref(x,-32),1,0)+
>   If(x>Ref(x,-33),1,0)
> 
>   {Connors RSI Working 2}
>   x:=ROC(C,1,%);
>   If(x>Ref(x,-34),1,0)+
>   If(x>Ref(x,-35),1,0)+
>   If(x>Ref(x,-36),1,0)+
>   If(x>Ref(x,-37),1,0)+
>   If(x>Ref(x,-38),1,0)+
>   If(x>Ref(x,-39),1,0)+
>   If(x>Ref(x,-40),1,0)+
>   If(x>Ref(x,-41),1,0)+
>   If(x>Ref(x,-42),1,0)+
>   If(x>Ref(x,-43),1,0)+
>   If(x>Ref(x,-44),1,0)+
>   If(x>Ref(x,-45),1,0)+
>   If(x>Ref(x,-46),1,0)+
>   If(x>Ref(x,-47),1,0)+
>   If(x>Ref(x,-48),1,0)+
>   If(x>Ref(x,-49),1,0)+
>   If(x>Ref(x,-50),1,0)+
>   If(x>Ref(x,-51),1,0)+
>   If(x>Ref(x,-52),1,0)+
>   If(x>Ref(x,-53),1,0)+
>   If(x>Ref(x,-54),1,0)+
>   If(x>Ref(x,-55),1,0)+
>   If(x>Ref(x,-56),1,0)+
>   If(x>Ref(x,-57),1,0)+
>   If(x>Ref(x,-58),1,0)+
>   If(x>Ref(x,-59),1,0)+
>   If(x>Ref(x,-60),1,0)+
>   If(x>Ref(x,-61),1,0)+
>   If(x>Ref(x,-62),1,0)+
>   If(x>Ref(x,-63),1,0)+
>   If(x>Ref(x,-64),1,0)+
>   If(x>Ref(x,-65),1,0)+
>   If(x>Ref(x,-66),1,0)
> 
>   {Connors RSI Working 3}
>   x:=ROC(C,1,%);
>   If(x>Ref(x,-67),1,0)+
>   If(x>Ref(x,-68),1,0)+
>   If(x>Ref(x,-69),1,0)+
>   If(x>Ref(x,-70),1,0)+
>   If(x>Ref(x,-71),1,0)+
>   If(x>Ref(x,-72),1,0)+
>   If(x>Ref(x,-73),1,0)+
>   If(x>Ref(x,-74),1,0)+
>   If(x>Ref(x,-75),1,0)+
>   If(x>Ref(x,-76),1,0)+
>   If(x>Ref(x,-77),1,0)+
>   If(x>Ref(x,-78),1,0)+
>   If(x>Ref(x,-79),1,0)+
>   If(x>Ref(x,-80),1,0)+
>   If(x>Ref(x,-81),1,0)+
>   If(x>Ref(x,-82),1,0)+
>   If(x>Ref(x,-83),1,0)+
>   If(x>Ref(x,-84),1,0)+
>   If(x>Ref(x,-85),1,0)+
>   If(x>Ref(x,-86),1,0)+
>   If(x>Ref(x,-87),1,0)+
>   If(x>Ref(x,-88),1,0)+
>   If(x>Ref(x,-89),1,0)+
>   If(x>Ref(x,-90),1,0)+
>   If(x>Ref(x,-91),1,0)+
>   If(x>Ref(x,-92),1,0)+
>   If(x>Ref(x,-93),1,0)+
>   If(x>Ref(x,-94),1,0)+
>   If(x>Ref(x,-95),1,0)+
>   If(x>Ref(x,-96),1,0)+
>   If(x>Ref(x,-97),1,0)+
>   If(x>Ref(x,-98),1,0)+
>   If(x>Ref(x,-99),1,0)
> 
>   {Connors RSI}
> 
>   PdsRSI:=Input("RSI Close Length",1,100,3);
>   PdsUD:=Input("RSI UpDown Length",1,100,2);
>   PdsRank:=100;
> 
>   UpDays:=BarsSince(C<{=}Ref(C,-1));
>   DownDays:=BarsSince(C>{=}Ref(C,-1));
>   UpDownDays:=If(upDays>0,upDays,If(downDays>0,-downDays,0));
> 
>   cRSI:=(
> 
>   (Fml("Connors RSI Working 1")+
>   Fml("Connors RSI Working 2")+
>   Fml("Connors RSI Working 3"))/100+
> 
>   ExtFml("Forum.RSI",UpDownDays,PdsUD)+
> 
>   ExtFml("Forum.RSI",C,PdsRSI))/3;
> 
>   cRSI;
> 
>   --- In [email protected], "distinque" <distinque@> wrote:
>   >
>   > Has anyone worked up ConnorsRSI in MS and be willing to share?
>   > 
>   > Thanks
>   >
> 
> 
> 
>   Reply via web post  Reply to sender  Reply to group  Start a New Topic  
> Messages in this topic (3)  
> 
>   Recent 
> 
> 
> __________ Information from ESET NOD32 Antivirus, version of virus signature 
> database 8118 (20130314) __________
> 
> The message was checked by ESET NOD32 Antivirus.
> 
> http://www.eset.com
>


Reply via email to