MACD hoeken

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

MACD hoeken

Bericht door Eric » do jun 07, 2007 2:49 pm

In de TKA van juni 2007 onderzoekt Jeroen Bijleveld de MACD, waarbij hij een indicator laat zien die de toppen en dalen (hoeken) van de MACD signaleert.

Code: Selecteer alles

{- Filename: MACD hoeken -}

var
  nMA1, nMA2, nMA3, i: integer;
  nMinStijging, nMinDaling, nMinAfstand: real;
  sPercK, sPercD, sHoekOmhoog, sHoekOmlaag: TSeries;
begin
  nMA1 := CreateParameterInteger('MACD FastMA', 1, 999, 12, true);
  nMA2 := CreateParameterInteger('MACD SlowMA', 1, 999, 26, true);
  nMA3 := CreateParameterInteger('MACD MA', 1, 999, 9, true);
  nMinStijging := CreateParameterReal('Min. stijging', 0, 99, 0, true);
  nMinDaling := CreateParameterReal('Min. daling', 0, 99, 0, true);
  nMinAfstand := CreateParameterReal('Min. afstand', 0, 99, 0, true);

  with Indicator do
  begin
    RequiredBars := 5*nMA2+nMA3;
  end;

  sPercK := MACD(Close, nMA1, nMA2);
  sPercD := MA(sPercK, maExponential, nMA3);
  sHoekOmhoog := CreateSeries(BarCount);
  sHoekOmlaag := CreateSeries(BarCount);

  for i:=2 to BarCount-1 do
  begin
    if IsValid(sPercD[i-1]) then
    begin
      if (sPercK[i-2] <= sPercK[i-1] - nMinStijging) and
         (sPercK[i] <= sPercK[i-1] - nMinDaling) and
         (sPercK[i-1] >= sPercD[i-1] + nMinAfstand) then
        sHoekOmlaag[i] := -1
      else
        sHoekOmlaag[i] := 0;

      if (sPercK[i-2] >= sPercK[i-1] + nMinDaling) and
         (sPercK[i] >= sPercK[i-1] + nMinStijging) and
         (sPercK[i-1] <= sPercD[i-1] - nMinAfstand) then
        sHoekOmhoog[i] := 1
      else
        sHoekOmhoog[i] := 0;
    end;
  end;

  with CreateLine(sHoekOmhoog) do
  begin
    Name := 'Hoek omhoog';
    Color := clLime;
    LineType := ltBar;
  end;
  with CreateLine(sHoekOmlaag) do
  begin
    Name := 'Hoek omlaag';
    Color := clRed;
    LineType := ltBar;
  end;
  with CreateLine(FillSeries(CreateSeries(BarCount), 0)) do
  begin
    Color := clSilver;
    LineContent := lcConstant;
  end;
end.

Plaats reactie