Genormaliseerde RSI met dynamische OBOS lijnen

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

Genormaliseerde RSI met dynamische OBOS lijnen

Bericht door Eric » vr apr 06, 2007 5:11 pm

Rene van Mourik beschrijft in de TKA apr05 een RSI met dynamische OBOS lijnen, waarbij de OBOS lijnen horizontaal worden gepresenteerd en de RSI wordt herschaald.

Code: Selecteer alles

{- Filename: RSI (normalized dynamic) -}

var 
  StdDevFactor, Delta, x: real;
  nRSI, nBolBand, i: integer;
  sRSI, sNormRSI, sUpperBand, sLowerBand: TSeries;
begin
  // Indicator parameter definities 
  nRSI := CreateParameterInteger('RSI periode', 1, 999, 14, true);
  nBolBand := CreateParameterInteger('Boll. MA periode', 1, 999, 20, true);
  StdDevFactor := CreateParameterReal('StdDev factor', 1, 9, 2, true);

  // Indicator definitie 
  with Indicator do 
  begin 
    Indicator.RequiredBars := 5*nRSI + nBolBand;
  end; 
  
  // Indicatorberekening 
  sRSI := RSI(Close, nRSI);
  sUpperBand := BollingerBand(sRSI, nBolBand, maSimple, 2);
  sLowerBand := BollingerBand(sRSI, nBolBand, maSimple, -2);
  sNormRSI := CreateSeries(BarCount);

{ normaliseer de Band waarden op +2 en -2, en vertaal de RSI daarnaar }
  for i:=0 to BarCount-1 do
  begin
    if IsValid(sRSI[i]) and IsValid(sUpperBand[i]) and IsValid(sLowerBand[i]) then
    begin
      Delta := sUpperBand[i] - sLowerBand[i];
      if Delta <> 0 then
        sNormRSI[i] := 4 * (sRSI[i] - sLowerBand[i]) / Delta - 2;
    end;
  end;

  with CreateLine(sNormRSI) do
  begin
    Color := clLime;
    LineContent := lcTAR;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), -1)) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), 1)) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), -2)) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), 2)) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
end.

Plaats reactie