Dan,
The full code is listed below.
This is a "dashboard" so to speak of what the different sectors are doing,
a top down look. I'm more of a top down investor vs bottom up so
this fits my style better. What I typically do is run it against an
ETF watchlist of about 150 different ETFs and then I'll also run it
against a WL that has 450 of my favorite mutual funds.
This is more of a rotational trading
tool. I don't use this exploration with individual stocks,
I think it is more useful for ETFs and funds. What I'll try to do
with this code is to invest in 3-5 ETFs/Funds that are in the top 25% in
terms of strength. However, if you want more octane and less
diversification, you can also see which sector funds/ETFs are the
strongest and buy the individual stocks that these funds
hold.
The code is still a work in progress
but I'll explain what some of the outputs are. The first column
"TotalB" is derived from differing ROC periods and where the ETF is
trading relative to different MAs. If it is trading above MAs it
gets more points and vice versa. I was comparing it to other
indicators and it is very similar to Martin Pring's "KST"
indicator.
RSC is similar to TotalB but it
incorporates some other momentum components into the ranking.
I'm still working on this one
"B -10" is what the TotalB was
10 days ago and the "difference" column is the difference between the two
columns. What I look for in the difference column is maybe some
bottom feeding opportunities where there is a big swing in the score of an
ETF that has been struggling. I haven't looked into how
effective this is in great detail. A current example is
the BHH ETF but I'm not to keen on the sector.
Then the RS columns list
current RS, RS 10 days ago and RS 20 days ago. If the RS is greater
than the previous n periods it is green and if the RS is lower then
it is RED.
"ST SD" is a shorter term
measure of standard deviation and then the "hist SD" is the short term
less the historical StDev. Thus, if you get a negative value in the
"hist SD" column then the security is trading at a lower volatility
level relative to its historical average. I like these two columns
b/c they can help determine your asset weightings. Say you
have two investment candidates: security one with a SD over 30 and
the second at a SD of 15.....then you can weight your decisions based on
how much octane you want. If you want less octane you could do
a 75% / 25% security2 / security 1 weighting. Or if you want more
octane have a greater weighting in security 1 with the 30
SD.
The ROC columns are for visual
purposes and can help you quickly determine how strong a stock is.
If all three ROC columns are green then the security is strong. What
I do here is look at the shorter term ROC. Say the longer term ROCs
are green but the shorter term ROC is yellow or Red then that could be an
indication that the current trend is weakening or there is a change in
trend altogether on the horizon.....then the opposite is true. If LT
ROCs are red but the ST ROC is yellow or green then it is showing ST
strength and it could be reversing.
YTD, 30D%, 10d%, etc are the %
change for those periods
SPX and Nasdaq columns are the
securities correlation to the S&P 500 and Nasdaq
composite
Finally EMA 170 & 50:
shows if the security is rising relative to its 170 and 50 day MAs.
If it is 1 then it is rising, if it is 0 then the stock is falling
relative to these MAs.
I think I got it all covered.
Like I said this is still a work in progress and would appreciate any
feedback. The first few columns of the exploration are all
relatively the same. What I would like to do is incorporate
some sort of ranking in this scan the uses a combination of the three
outputs. I haven't figured out the ranking part yet. I saw the
"osaka plug in / ranking" posts from last week but I haven't had time to
work with them yet.
Jason
_______________________________
//Filter=Cross(PDI(14),MDI(14)) AND
StochD(14) < 50;
Filter = C > 0;
a=
MA(ROC( C,5),5);
a1 =
MA(ROC( C,10),5);
a2=
MA(ROC( C,20),5);
a3=MA(ROC(
C,50),5);
a4=MA(ROC(
C,100),5);
a5 =
MA(ROC( C,200),5);
aa =
Ref(MA(
ROC(C,5),5 ),-5);
aa1
= Ref(MA(
ROC(C,10),5 ),-5);
aa2
= Ref(MA(
ROC(C,20),5 ),-5);
aa3
= Ref(MA(
ROC(C,50),5 ),-5);
aa4
= Ref(MA(
ROC(C,100),5 ),-5);
aa5
= Ref(MA(
ROC(C,200),5 ),-5);
ab =
Ref(MA(
ROC(C,5),5 ),-10);
ab1
= Ref(MA(
ROC(C,10),5 ),-10);
ab2
= Ref(MA(
ROC(C,20),5 ),-10);
ab3
= Ref(MA(
ROC(C,50),5 ),-10);
ab4
= Ref(MA(
ROC(C,100),5 ),-10);
ab5=
Ref(MA(
ROC(C,200),5 ),-10);
x0 =
(a+aa+ab)*.35;
x1 =
(a1+aa1+ab1)*.65;
x2 =
(a2+aa2+ab2)*(1.65);
x3 =
(a3+aa3+ab3)*(1.75);
x4 =
(a4+aa4+ab4)*(1.5);
x5 =
(a5+aa5+ab5)*(.65);
b =
(C - MA(
C,20))/C;
b1 =
(C-MA(
C,50))/C;
b2 =
(C-MA(
C,100))/C;
b3 =
(C-MA(
C,200))/C;
bb =
(b*1.7)*100 ;
bb1
= (b1*2.0)*100 ;
bb2
= (b2*1.2)*100 ;
bb3
= (b3*(1.2))*100;
z =
x0+x1+x2+x3+x4+x5+bb+bb1+bb2+bb3;
b =
1041231;
a=DateNum()==b;
i=ValueWhen(a,C);
ii =
((C-i)/i)*100;
week
= ((C - Ref( C,-5))/ Ref(C,- 5))*100;
Mth
= ((C- Ref( C,-30))/Ref(C,- 30))*100;
tenday = ((C - Ref(C,-10 ))/Ref(C,-10))* 100;
Oneday = ((C - Ref(C,-1 ))/Ref(C,-1))* 100;
j =
Foreign("!spx" , "c");
j1 =
RelStrength("!spx"
);
j2 =
RelStrength("!spx" )/Ref(j1,-20);
j3 =
RelStrength("!spx" )/Ref(j1,-30);
j4 =
RelStrength("!spx" )/Ref(j1,-50);
j5 =
RelStrength("!spx" )/Ref(j1,-100);
j6 =
RelStrength("!spx" )/Ref(j1,-120);
j7 =
RelStrength("!spx" )/Ref(j1,-150);
j8 =
RelStrength("!spx" )/Ref(j1,-200);
mamPeriod = 13;
mam
= 100*(Close/ MA(Close, (2*mamPeriod) +1) -1);
mom=
MA(MAm,5)* 100;
vol1
= StDev(log( C/Ref(C,-1)), 720) * sqrt(260)*100 ;
vol2
= StDev(log( C/Ref(C,-1)), 20) * sqrt(260)*100 ;
vol3
= StDev(log( C/Ref(C,-1)), 50) * sqrt(260)*100 ;
vol4
= StDev(log( C/Ref(C,-1)), 90) * sqrt(260)*100 ;
Vol5
= (Vol2 + Vol3+ Vol4)/3;
Vol6
= Vol5-Vol1;
Final = (j2*1) + (j3*1.2) + (j4*1.3 )+(j5*1.4) + (j6*1.5) + (j7*1.7 ) + (j8*1.7);
Combined = (.50*final)+(.5*z);
CombinedI=
(.35*final)+(.35*z)+(.3*mom);
CombinedII=MA(CombinedI,25 );
//Filter = CombinedI >
CombinedII AND Cross(PDI(14),MDI(14)) AND z-Ref(z,-5) >
20;
//Filter = final > 10 AND
Cross(PDI(14),MDI(14));
PositionSize = - 25;
Buy = final > 10 AND Cross(PDI( 14),MDI(14)) AND z-Ref(z,-10) > 15 AND ADX(14) > Ref( ADX(14),-5);
Sell = Cross (MDI(14),PDI( 14)) OR Cross(Signal(),MACD());
ApplyStop( stopTypeNBar, stopModeBars, 70, True );
AddTextColumn( FullName(),"Name",5);
ro11
= MA(ROC( C,20),10);
ro1
= MA(ROC( C,50),10);
ro2
= MA(ROC( C,120),10);
AddColumn(z, "TotalB");
AddColumn(CombinedII,
"RSC");
AddColumn(Ref (z,-10), "B -10 dys");
AddColumn(z-Ref (z,-10), "difference");
AddColumn(final, "RS",1.2,colorDefault,IIf (final==0,colorBlue,IIf(final>= Ref(final,-10),colorGreen,colorRed )));
AddColumn(Ref (final,-10),"10 days", 1.2,colorDefault,IIf(final==0,
colorBlue,IIf(Ref(final,-10 )>=Ref(final,-20),colorGreen, colorRed)));
AddColumn(Ref (final,-20),"20 days", 1.2,colorDefault,IIf(final==0,
colorBlue,IIf(Ref(final,-20 )>=Ref(final,-30),colorGreen, colorRed)));
AddColumn(Vol5, "ST SD");
AddColumn(vol6, "Hist SD");
AddColumn(ro11, "ROC20",1.2,colorDefault, IIf(ro11>0 AND ro11<5,colorYellow,IIf(ro11 > 5 ,colorGreen,colorRed)));
AddColumn(ro1, "ROC50",1.2,colorDefault, IIf(ro1>0 AND ro1<5,colorYellow,IIf(ro1 > 5 ,colorGreen,colorRed)));
AddColumn(ro2, "ROC120",1.2,colorDefault, IIf(ro2>0 AND ro2<5 ,colorYellow,IIf(ro2 > 5 ,colorGreen,colorRed)));
AddColumn(ii, "YTD%",1.2,colorDefault, IIf(ii> 0 ,colorGreen,colorRed ));
AddColumn(Mth, "30d %",1.2,colorDefault, IIf(Mth> 0 ,colorGreen,colorRed ));
AddColumn(tenday, "10d %",1.2,colorDefault, IIf(tenday > 0.005 AND tenday < 0.009 ,colorYellow,IIf(tenday > 0 , colorGreen,colorRed)));
AddColumn(week, "5d %",1.2,colorDefault, IIf(week > 0.005 AND week < 0.009 ,colorYellow,IIf(week > 0 ,colorGreen,colorRed)));
AddColumn(oneDay, "1d %",1.2,colorDefault, IIf(oneDay > 0.005 AND oneDay < 0.009 ,colorYellow,IIf(oneDay > 0 , colorGreen,colorRed)));
RS1=Foreign("!spx" ,"C");
RS2
= Foreign("!comp" ,"C");
Corr1 = ROC(RS1,1);
Corr2 = ROC(C, 1);
Corr3 = ROC(RS2,1);
Corr4 = ROC(C, 1);
test=Correlation(corr1,Corr2,20
);
test1=Correlation(Corr3,Corr4,30
);
test=Correlation(Corr1,Corr2,125
);
test1=Correlation(Corr3,Corr4,125
);
AddColumn(test, "SPX");
AddColumn(test1, "Nasdaq");
rising = EMA(C, 170) > Ref(EMA(C, 170),-47);
rising1 = EMA(C, 50) > Ref(EMA(C, 50),-25);
rising ==1;
rising1==1;
AddColumn(rising, "ema 170");
AddColumn(rising1, "ema
50");