AB = CreateObject("Broker.Application");
AA = AB.Analysis;
 
WL = AA.Filter(0, "WatchList");
 
WLSyms = CategoryGetSymbols(categoryWatchlist, WL);
rsSymNo = rsScore = rsiSymNo =
rsiScore = rocSymNo = rocScore = Cum(0);
rsSymNo = rsiSymNo = rocSymNo =
rsScore = rsiScore = rocScore = 
TOTSymNo = TOTScore
=    ////These symbols added for Ranking of Sum of
Ordinal Ranks
Cum(0) - 99999999;
rsScore[0] = rsiScore[0] = rocScore[0] = TOTScore[0] = 1e100;
 
procedure Rank_Sym (rsSymNoX, rsScoreX)
   {
     
rsSymNo = IIf(rsScoreX > rsScore, IIf(rsScoreX <= Ref(rsScore, -1), rsSymNoX, Ref(rsSymNo, -1)), rsSymNo);
     
rsScore = IIf(rsScoreX > rsScore, IIf(rsScoreX <= Ref(rsScore, -1), rsScoreX, Ref(rsScore, -1)), rsScore);
   }
 
   if (Name() == StrExtract(WLSyms, 0))
      {
        
WLQty = 0;
        
for
(i = 0;
(Symbol = StrExtract(WLSyms, i)) != ""; i++)
        
{
           
WLQty = WLQty + 1;
           
SetForeign(Symbol);
           
RSIx = SelectedValue(RSI(14));
           
ROCx = SelectedValue(ROC(C, 14));
           
RestorePriceArrays();
 
           
rsSymNo = rsiSymNo;
           
rsScore = rsiScore;
           
Rank_Sym (i, RSIx);
           
rsiSymNo = rsSymNo;
           
rsiScore = rsScore;
 
           
rsSymNo = rocSymNo;
           
rsScore = rocScore;
           
Rank_Sym (i, ROCx);
           
rocSymNo = rsSymNo;
           
rocScore = rsScore;
        
}
 
        
for
(i = 1;
i <= WLQty; i++)
           
{
              
StaticVarSet("RSI_Rank_" + NumToStr(RSISymNo[i], 1.0), i);
              
StaticVarSet("ROC_Rank_" + NumToStr(ROCSymNo[i], 1.0), i);
           
}
        
}
 
      for (i = 0; i <= 1000; i++)
        
{
           
if
(Name() == StrExtract(WLSyms, i))
           
break;
        
}
 
RSI_Rank = StaticVarGet("RSI_Rank_" + NumToStr(i, 1.0));
ROC_Rank = StaticVarGet("ROC_Rank_" + NumToStr(i, 1.0));
Tot_Rank = SelectedValue(RSI_Rank + ROC_Rank);
 
//////////////////////////////////////////////////////////
//   Add code to rank
Tot_Rank
//////////////////////////////////////////////////////////
if (Name() == StrExtract(WLSyms, 0))
      {
        
WLQty = 0;
        
for
(i = 0;
(Symbol = StrExtract(WLSyms, i)) != ""; i++)
        
{
           
WLQty = WLQty + 1;
 
           
rsSymNo = TOTSymNo;
           
rsScore = TOTScore;
           
Rank_Sym (i, Tot_Rank);//Seems like Tot_Rank is not getting sorted
           
ToTSymNo = rsSymNo;
           
TOTScore = rsScore;
        
}
      for (i = 1; i <= WLQty; i++)
           
{
              
StaticVarSet("TOt_Rank_" + NumToStr(TOTSymNo[i], 1.0), i);
           
}
      }
 
Tot_Rank_RANK  =  StaticVarGet("TOT_Rank_" + NumToStr(i, 1.0));
 
/////////////  End of
Ranking Total Rank ///////////////////
 
ROCn = SelectedValue(ROC(C, 14));
RSIn = SelectedValue(RSI());
 
Filter = BarIndex() == SelectedValue(BarIndex());
AddColumn(RSI_Rank, "RSI", 1.0);
AddColumn(ROC_Rank, "ROC", 1.0);
AddColumn(Tot_Rank, "Tot", 1.0);
AddColumn(Tot_Rank_RANK,"ComboRank", 1.0);
AddColumn(ROCn, "ROC", 1.3);
AddColumn(RSIn,"RSI()",1.3);