SCTR

Quite an interesting indicator was invented by John Murphy, author of several popular books on technical analysis. This indicator analyzes the strength of a stock in a group of other stocks, its relative strength. I.e, can, for example, in some index, for example SP-500, choose ten strongest stocks and ten weakest at the moment. The indicator takes into account the price movement over a long period, on medium and short, and, more weight is given to price behavior over a long period, then on average and least of all the short period is taken into account.

A full description of the SCTR indicator can be found here:
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:sctr

Based on this instruction, I made myself a screener for sorting by SCTR for WealthLab:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Indicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
protected override void Execute()
{
DataSeries ma1 = EMA.Series(Close, 200, WealthLab.Indicators.EMACalculation.Modern);
DataSeries LT_EMA = 0.3 * 100 * (Close – ma1) / ma1;
DataSeries roc1 = ROC.Series(Close, 125);
DataSeries LT_ROC = roc1 * 0.3;
DataSeries ma2 = EMA.Series(Close, 50, WealthLab.Indicators.EMACalculation.Modern);
DataSeries MT_EMA = 0.15 * 100 * (Close – ma2) / ma2;
DataSeries roc2 = ROC.Series(Close, 20);
DataSeries MT_ROC = roc2 * 0.15;
DataSeries ppo1 = PPO.Series(Close, 12, 26);
DataSeries ppo_hist = ppo1 – EMA.Series(ppo1, 9, WealthLab.Indicators.EMACalculation.Modern);
double Slope = 0;
double ST_PPO = 0;
DataSeries rsi1 = RSI.Series(Close, 14);
DataSeries ST_RSI = rsi1 * 0.05;
// double TR = 0;
DataSeries stoch = StochK.Series(Bars, 5);
DataSeries ma250 = EMA.Series(Close, 250, WealthLab.Indicators.EMACalculation.Modern);
DataSeries TR = new DataSeries(Bars, "TR");
// ChartPane Pane1 = CreatePane( 60, true, true );
// PlotSeries(Pane1,LT_EMA,Color.Green,LineStyle.Solid,1);
// ChartPane Pane2 = CreatePane( 60, true, true );
// PlotSeries(Pane2,LT_ROC,Color.Green,LineStyle.Solid,1);
// ChartPane Pane3 = CreatePane( 60, true, true );
// PlotSeries(Pane3,MT_EMA,Color.Green,LineStyle.Solid,1);
// ChartPane Pane4 = CreatePane( 60, true, true );
// PlotSeries(Pane4,MT_ROC,Color.Green,LineStyle.Solid,1);
// ChartPane Pane5 = CreatePane( 60, true, true );
// PlotSeries(Pane5, ppo_hist,Color.Green,LineStyle.Histogram,1);
// ChartPane Pane6 = CreatePane( 60, true, true );
// PlotSeries(Pane6,ST_RSI,Color.Green,LineStyle.Solid,1);
ChartPane Pane7 = CreatePane( 60, true, true );
PlotSeries(Pane7, TR,Color.Green,LineStyle.Solid,1);
for(int bar = 250; bar < Bars.Count; bar++)
{
Slope = (ppo_hist[bar] – ppo_hist[bar-2]) / 3;
ST_PPO = 0.5 * 10000 * Slope;
// PrintDebug(ST_PPO );
TR[bar] = LT_EMA[bar] + LT_ROC[bar] + MT_EMA[bar] + MT_ROC[bar] + ST_PPO + ST_RSI[bar] + 1000;
{
if (bar == Bars.Count-1)
BuyAtMarket(bar+1, TR[bar].ToString("0000.00&quot;));
}
}
}
}
}

And if you run this script on the SP index from 500 Shares, and sort them by indicator value, then you can determine the group of the strongest stocks at the moment and the group of the weakest. For example, The strongest stock looks like that:

  Defenders.

And the weakest, so:

Scroll to Top