Страницы

2016-12-27

SCTR

Довольно интересный индикатор придумал Джон Мерфи, автор нескольких популярных книг по теханализу. Этот индикатор анализирует силу акции в группе других акций, относительную ее силу. То есть, можно, например, в каком нибудь индексе, например SP-500, выбрать десять самых сильных акций и десять самых слабых на данный момент. Индикатор учитывает движение цены на длинном периоде, на среднем и на коротком, причем, больший вес придается поведению цены на длинном периоде, потом на среднем и менее всего учитывается короткий период.


Полное описание индикатора SCTR можно почитать тут:
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:sctr

По мотивам этой инструкции сделал себе скринер для сортировки по SCTR для 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"));
}
}
}
}
}
И если прогнать этот скрипт на индексе SP из 500 акций, и рассортировать их по величине индикатора, то можно определить группу самых сильных акций на текущий момент и группу самых слабых. Для примера, самая сильная акция выглядит так:


А самая слабая, так:



2 комментария:

  1. Анонимный13/1/17 12:33

    в блумберге есть примерно аналогичный "индикатор" Relative rotation graph (RRG)
    Позволяет сравнить с индексом бумаги и определить, какие на данный момент сильнее-слабее индекса, а также круговорот бумаги в цикле слабеет-слабая-растёт-сильная

    ОтветитьУдалить
    Ответы
    1. А также есть в IBD (http://www.investors.com) индекс относительной силы RS. Наверняка есть и другие варианты.

      Удалить