Martin Pring's KST indicator

Kant-en-klare, geteste indicatoren en handelssystemen
Plaats reactie
Eric
Berichten: 3332
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Martin Pring's KST indicator

Bericht door Eric »

De KST-indicator (Know Sure Thing) van Martin Pring is opgebouwd uit series bestaande uit Voortschrijdende Gemiddelden (VG's) van verschillende ROC's. Deze ROC's hebben niet alleen verschillende tijdvensters, maar elk ook een andere weging. Hierbij geldt: hoe langer het tijdvenster van de ROC, hoe zwaarder het gewicht. In tabel 1 is het gewichtenschema van de dagelijkse KST afgebeeld. De parameters voor de ROC's en de VG's zijn optimaal afgestemd op dagkoersgegevens.De KST kan ook worden gebruikt met week- en maandkoersen, teneinde de drie verschillende trends te analyseren: de kortetermijntrend (dagkoersen), de middellangetermijntrend (weekkoersen) en de langetermijntrend (maandkoersen). Het belangrijkste tijdvenster voor de KST-constructie is de laatste ROC, die tevens de grootste weging krijgt. Bij de KST op maandbasis is dat bijvoorbeeld de 24-maands periode.

TABEL 1: INPUTSCHEMA VAN DE VERSCHILLENDE
ROC'S EN VOORTSCHRIJDENDE GEMIDDELDEN IN
DE KST OP DAGBASIS
Tijdsframe Smoothing Gewicht
10- daags 10 MA x 1
15-daags 10 MA x 2
20- daags 10 MA x 3
30- daags 15 MA x 4

Deze is specifiek gekozen, daar ze de helft is van een 4-jaars conjunctuurcyclus. Om niet alleen de primaire trend, maar ook intermediate en secundaire trends waar te nemen, bestaat de KST, zoals eerder aangegeven, ook uit ROC's met kortere tijdhorizonnen.

Interpretatie KST
Net als bij alle momentumindicatoren zijn er verschillende manieren van interpretatie mogelijk. Volgens Pring kan de KST op drie manieren worden geïnterpreteerd en wel op:

1. koop- en verkoopsignalen
2. overbought- en oversoldposities
3. divergenties en trendlijnen.

Koop- en verkoopsignalen
Een koop- of verkoopsignaal wordt gegeven wanneer de KST-lijn zijn VG kruist of wanneer het VG de KST-lijn kruist. Pring geeft aan dat signalen van de KST betrouwbaarder zijn in combinatie met een duidelijk koerspatroon of significante doorbraak van een trendlijn.

Overbought/oversold
De tweede manier om de KST te interpreteren is om de KST als overbought-/oversoldoscillator te gebruiken. De KST is geen momentumindicator met vaste overbought- en oversoldgebieden. Daarom moet aan de hand van het aandeel of de index zelf worden bepaald wat de extreme historische waarden zijn.

Divergenties
De derde manier om de KST-indicator te interpreteren is het gebruikmaken van divergenties in de indicator. Pring geeft ook aan dat aan- en verkoopsignalen van de KST beter renderen wanneer een langere periode wordt gebruikt, zoals week- of maandkoersen. Kenmerkend voor de indicator is dat door het gebruik van meerdere tijdvensters de hoofdtrend goed wordt weergegeven met daarbij tijdige keerpunten binnen deze trend.

Code: Selecteer alles

{- Filename: Pring's KST -}

var 
  nROC1, nROC2, nROC3, nROC4,
  nMA1, nMA2, nMA3, nMA4, nMA,
  nWeging1, nWeging2, nWeging3, nWeging4: integer;
  sROC1, sROC2, sROC3, sROC4,
  sMA1, sMA2, sMA3, sMA4,
  sKST, sMA, sZero: TSeries;
  bExponential: boolean;
  MAType: TMAType;
begin
  nROC1 := CreateParameterInteger('ROC periode 1', 1, 999, 10, true);
  nMA1 := CreateParameterInteger('MA periode 1', 1, 999, 10, true);
  nWeging1 := CreateParameterInteger('Weging 1', 0, 99, 1, true);
  nROC2 := CreateParameterInteger('ROC periode 2', 1, 999, 15, true);
  nMA2 := CreateParameterInteger('MA periode 2', 1, 999, 10, true);
  nWeging2 := CreateParameterInteger('Weging 2', 0, 99, 2, true);
  nROC3 := CreateParameterInteger('ROC periode 3', 1, 999, 20, true);
  nMA3 := CreateParameterInteger('MA periode 3', 1, 999, 10, true);
  nWeging3 := CreateParameterInteger('Weging 3', 0, 99, 3, true);
  nROC4 := CreateParameterInteger('ROC periode 4', 1, 999, 30, true);
  nMA4 := CreateParameterInteger('MA periode 4', 1, 999, 15, true);
  nWeging4 := CreateParameterInteger('Weging 4', 0, 99, 4, true);
  nMA := CreateParameterInteger('MA periode KST', 1, 999, 10, true);
  bExponential := CreateParameterBoolean('Exponentiele MA''s', false, true);

  with Indicator do
  begin 
    RequiredBars := 5 * (nROC4 + nMA4 + nMA);
  end; 

  if bExponential then
    MAType := maExponential
  else
    MAType := maSimple;
  sROC1 := ROC(Close, nROC1);
  sMA1 := MultiplySeriesBy(MA(sROC1, MAType, nMA1), nWeging1);
  sROC2 := ROC(Close, nROC2);
  sMA2 := MultiplySeriesBy(MA(sROC2, MAType, nMA2), nWeging2);
  sROC3 := ROC(Close, nROC3);
  sMA3 := MultiplySeriesBy(MA(sROC3, MAType, nMA3), nWeging3);
  sROC4 := ROC(Close, nROC4);
  sMA4 := MultiplySeriesBy(MA(sROC4, MAType, nMA4), nWeging4);
  sZero := FillSeries(CreateSeries(BarCount), 0);
  sKST := AddSeries(AddSeries(AddSeries(sMA1, sMA2), sMA3), sMA4);
  sMA := MA(sKST, MAType, nMA);

  Signals := CrossingsToEntrySignals(Crossings(sKST, sMA));

  with CreateLine(sKST) do
  begin
    Name := 'KST';
    Color := clLime;
  end;
  with CreateLine(sMA) do
  begin
    Name := 'MA';
    Color := clRed;
  end;
  with CreateLine(sZero) do
  begin
    Name := '0';
    Color := clWhite;
  end;
end.
---
Eric
Plaats reactie