Well folks, here is the working code. Excuse my illiteracy with programming,
and thanks for all the help.
The way I use it is:
EOD data - becasue of the AddToComposite
Indicator - plot all tickers that meet crieria within a specific list
Explore - review the RSI and ROC of each ticker.
Try it out:
1) In AutoAnalysis, Run SCAN against specific list (Apply To) to build ~sumROC
and ~sumRSI composites stored in Group 253
2) In AutoAnalysis, Run Explore to review Buy, Sell, Scores, etc.(using the
same list of course)
3) Plot Indicator of list (use Parameters) and only those meeting the criteria
plot in Relative Performance
>From my original needs, I was wanting to see how TRA (Terra Industries) was
>doing in relation to all other in the Industry - Agricultural Chemicals.
Essentially wanting to choose the better half of any industry based on my
criteria of RSI and ROC.
_SECTION_BEGIN("Relative Performance ALL");
Category = "";
function ParamCategory() // This is the main category where we look for our list
{
global CategoryList;
CategoryList = "Market ,Group ,Sector ,Industry
,Watchlist,Favorite ,Index ";
Tickercategory = ParamList("Ticker category",
"Market|Group|Sector|Industry|Watchlist|Favorite|Index",3); // set to 3 for
Industry
Category = TickerCategory;
TickerCategory = (StrFind( CategoryList, Tickercategory)-1)/10;
return TickerCategory;
}
function ParamListNum(Category ) // This is where we find the List Number
{
global ListNum;
ListNum = Param("List Number", 4, 0, 255, 1); // set to
4 for Agricultural Chemicals
return ListNum;
}
TickerCategory = ParamCategory();
TickerListNum = ParamListNum(TickerCategory);
CategoryListOK = IIf(StrLen(CategoryGetSymbols(TickerCategory, TickerListNum))
> 0, 1, 0);
ManualRefresh = ParamTrigger( "Manual Refresh:", "REFRESH NOW");
ListName = CategoryGetName(Tickercategory,ListNum);
Title1 = ListName + " - " + ListNum + " - ";
Tickerlist = CategoryGetSymbols(Tickercategory, ListNum);
_SECTION_END();
_SECTION_BEGIN("Composite Calculation"); // for Explore
// Rxxt = of the Ticker
periods = Param("Periods",14,1,50,1);
ROCt = ROC (C, periods );
RSIt = RSI (periods);
AddToComposite(ROCt,"~sumROC","X",7); AddToComposite(1,"~sumROC","V",7);
AddToComposite(RSIt,"~sumRSI","X",7); AddToComposite(1,"~sumRSI","V",7);
// Rxxc = of the Composite
ROCc = ROC(Foreign("~sumROC","Close"),periods); //
not what I thought
RSIc = RSIa(Foreign("~sumRSI","Close"),periods);
_SECTION_END();
_SECTION_BEGIN("Buy Sell Deal"); // for Explore
// Buy Sell criteria
Buy = IIf(ROCt > 0 AND RSIt > RSIc, 1, 0);
Sell = IIf(ROCt < 0 AND RSIt < RSIc, -1, 0);
Deal = IIf(Buy == 1, 1, IIf (Sell == -1, -1, 0));
_SECTION_END();
_SECTION_BEGIN("Relative Performance Calculations"); // for Plotting
//NumBars = 20; // don't need this
fvb = Status("firstvisiblebar");
Plot( 100 * ( C - C[ fvb ] ) / C[ fvb ], Name(), colorRed, styleThick |
styleDots);
fc = "";
result = "";
RSIValue = "";
function MyPlot(fc,TopHalf) // used to control which plots are drawn
{
RSIValue = Param("RSI Valuelevel",50,0,100,1);
//TopHalf = IIf(RSIa(fc,14) > RSIValue, 1, -1);
Tophalf = IIf(ROC(fc,periods) > 0 AND RSIa(fc,periods)
> RSIc, 1,
IIf(ROC(fc,periods) < 0 AND
RSIa(fc,periods) < RSIc, -1,0));
return (TopHalf[BarCount -1] == 1 );
}
function ShouldPlot(price, fvb) // original - keep for quick retest
{
return (fc[fvb] >= 35);
}
TopHalf = 0;
fvb = Status("firstvisiblebar");
for( i = 0; ( sym = StrExtract( TickerList, i ) ) != ""; i++ )
{
fc = Foreign(sym, "Close");
// if (ShouldPlot(fc,fvb)) // original - keep for quick retest
if (MyPlot(fc,TopHalf))
{
Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], sym, colorLightOrange + (
(2*i) % 15 ), styleLine );
}
}
_SECTION_END();
_SECTION_BEGIN("Outputs");
Filter = 1;
SetChartOptions(2,chartShowDates | chartWrapTitle );
_N( Title = "{{NAME}} {{DATE}} - Relative Performance [%]: {{VALUES}}" );
// Columns
AddColumn (C,"Close");
AddColumn (Foreign("~sumROC","Close"),"sumROC");
AddColumn (Foreign("~sumRSI","Close"),"sumRSI");
AddColumn (ROCt,"ROC",1.2,colorDefault,colorDefault,40);
AddColumn (RSIt,"RSI",1.2,colorDefault,colorDefault,40);
AddColumn (ROCc,"CompROC",1.2,colorDefault,colorDefault,60);
AddColumn (RSIc,"CompRSI",1.2,colorDefault,colorDefault,60);
AddColumn(Deal,"Buy/Sell",colorDefault, IIf(Buy ==1, colorGreen, IIf(Sell ==
-1, colorRed, colorDefault)));
// Scoring
Score1 = (RSIt + ROCt) * Deal;
Score2 = (RSIt + ROCt);
AddColumn (Score1,"Score1",1.2,colorDefault,colorDefault,40);
AddColumn (Score2,"Score2",1.2,colorDefault,colorDefault,40);
// Write to commentary window
EnableTextOutput(True);
SetSortColumns(-10,1);
_SECTION_END();