Pivot Points (Intraday)

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
Optiontrader
Berichten: 368
Lid geworden op: ma jan 01, 2007 9:41 pm

Pivot Points (Intraday)

Bericht door Optiontrader »

Hallo Eric,

In het onderstaande script wordt de R3 berekend > R2 + YestHigh - YestLow

De S3 > S2 - YestHigh + YestLow

Ik wil graag een kleine verandering >

De R3 wordt dan > YestHigh + 2 * (Pivot Point - YestLow)

De S3 wordt dan > YestLow - 2 * (YestHigh - Pivot Point

Groet OT

Code: Selecteer alles

{- Filename: Pivot Points (Daily for Intraday) -}

const
  clLightGreen = $A0FFA0;
  clLightRed = $A0A0FF;

procedure PivotTrendline(X0: TDateTime; Y0: real; X1: TDateTime; Y1: real; AWidth: integer; AColor: TColor);
begin
  with CreateTrendline(X0, Y0, X1, Y0) do
  begin
    ExtendLeft                                                := false;
    ExtendRight                                               := true;
    Width                                                     := AWidth;
    Color                                                     := AColor;
  end;
end;

procedure PivotLine(X0: TSeries; AWidth: integer; AColor: TColor; ALineType: TLineType);
begin
  with Createline(X0) do
  begin
    Width                                                     := AWidth;
    Color                                                     := AColor;
    LineType                                                  := ALineType;
  end;
end;

var
    PlotS1,PlotS2,PlotS3,PlotR1,PlotR2,PlotR3,PlotPP,TradeDay : TSeries;
    PlotPRMidLine,PlotR12MidLine,PlotR23MidLine               : TSeries;
    PlotPSMidLine,PlotS12MidLine,PlotS23MidLine               : TSeries;
    TodaysHigh,YestHigh,TodaysLow,YestLow,YestClose           : real;
    i,Method,Day, Mon, Yr                                     : integer;
    ShowMidLine,OneDay,Automatic                              : Boolean;
    StartDate,S1,S2,S3,R1,R2,R3,PP                            : real;
    HighYesterday,LowYesterday,CloseYesterday                 : real;
    PRMidLine,R12MidLine,R23MidLine                           : real;
    PSMidLine,S12MidLine,S23MidLine                           : real;
    LastDay: integer;

begin
  ShowMidLine                                              := CreateParameterBoolean ('Show MidLines', false, false);
  OneDay                                                   := CreateParameterBoolean ('Show One Day', true, false);
  Automatic                                                := CreateParameterBoolean ('Pivot points automatic', true, false);
  Method                                                   := CreateParameterInteger ('Method', 1, 3, 1, true);
  HighYesterday                                            := CreateParameterReal    ('Fill in High', 0, 10000, 0, true);
  LowYesterday                                             := CreateParameterReal    ('Fill in Low', 0, 10000, 0, true);
  CloseYesterday                                           := CreateParameterReal    ('Fill in Close', 0, 10000, 0, true);

  with Indicator do
  begin
    ShortName                                                 :='Auto-Multi Pivot System';
    RequiredBars                                              := 100;
    NewBand                                                   := false;
    ScaleRange                                                := srCommon;
  end;

  PlotS1                                                    := CreateSeries(BarCount);
  PlotS2                                                    := CreateSeries(BarCount);
  PlotS3                                                    := CreateSeries(BarCount);
  PlotR1                                                    := CreateSeries(BarCount);
  PlotR2                                                    := CreateSeries(BarCount);
  PlotR3                                                    := CreateSeries(BarCount);
  PlotPP                                                    := CreateSeries(BarCount);
  PlotPRMidLine                                             := CreateSeries(BarCount);
  PlotR12MidLine                                            := CreateSeries(BarCount);
  PlotR23MidLine                                            := CreateSeries(BarCount);
  PlotPSMidLine                                             := CreateSeries(BarCount);
  PlotS12MidLine                                            := CreateSeries(BarCount);
  PlotS23MidLine                                            := CreateSeries(BarCount);
  TradeDay                                                  := CreateSeries(BarCount);

  if BarCount > 0 then LastDay := trunc(DateTime[BarCount-1]);

  for i:=FirstValidIndex(close)+1 to barcount-1 do
  begin
    DecodeDate(DateTime[i], Yr, Mon, Day);
    TradeDay[i] := Day;

    if (IsValid(TradeDay[i-1])) and (TradeDay[i] <> TradeDay[i-1]) then
    begin
      StartDate                                                 := DateTime[i];
      YestHigh                                                  := TodaysHigh;
      YestLow                                                   := TodaysLow;
      YestClose                                                 := Close[i-1];
      TodaysHigh                                                := High[i];
      TodaysLow                                                 := Low[i];

      if Automatic then
      begin
        if Method=1 then PP := ( YestHigh + YestLow + YestClose )/3;
        if Method=2 then PP := ( YestHigh + YestLow + YestClose+Open[i] )/4;
        if Method=3 then PP := ( YestHigh + YestLow + Open[i] )/3;
      end else
      begin
        OneDay := true;
        PP :=(HighYesterday + LowYesterday + CloseYesterday)/3;
      end;

      R1 := PP * 2 - YestLow;
      R2 := PP + YestHigh - YestLow;
      R3 := R2 + YestHigh - YestLow;
      S1 := PP * 2 - YestHigh;
      S2 := PP - YestHigh + YestLow;
      S3 := S2 - YestHigh + YestLow;

      if ShowMidLine then
      begin
        PRMidLine := (PP+R1)/2;
        R12MidLine := (R1+R2)/2;
        R23MidLine := (R2+R3)/2;
        PSMidLine := (PP+S1)/2;
        S12MidLine := (S1+S2)/2;
        S23MidLine := (S2+S3)/2;
      end;
    end else
    begin
      if High[i] > TodaysHigh then
        TodaysHigh := High[i];
      if Low[i] < TodaysLow then
        TodaysLow := Low[i];
    end;

    if not OneDay or (trunc(DateTime[i]) = LastDay) then
    begin
      PlotPP[i] := PP;
      PlotR1[i] := R1;
      PlotR2[i] := R2;
      PlotR3[i] := R3;
      PlotS1[i] := S1;
      PlotS2[i] := S2;
      PlotS3[i] := S3;

      if ShowMidLine then
      begin
        PlotPRMidLine[i] := PRMidLine;
        PlotR12MidLine[i] := R12MidLine;
        PlotR23MidLine[i] := R23MidLine;
        PlotPSMidLine[i] := PSMidLine;
        PlotS12MidLine[i] := S12MidLine;
        PlotS23MidLine[i] := S23MidLine;
      end;
    end;

    if i = barcount-1 then
    begin
      StartDate := BarPosition[i];
      PivotTrendline(StartDate ,PP, StartDate+1 ,PP ,1 ,clAqua);
      PivotTrendline(StartDate ,R1, StartDate+1 ,R1 ,1 ,clLightRed);
      PivotTrendline(StartDate ,R2, StartDate+1 ,R2 ,1 ,clLightRed);
      PivotTrendline(StartDate ,R3, StartDate+1 ,R3 ,1 ,clLightRed);
      PivotTrendline(StartDate ,S1, StartDate+1 ,S1 ,1 ,clLightGreen);
      PivotTrendline(StartDate ,S2, StartDate+1 ,S2 ,1 ,clLightGreen);
      PivotTrendline(StartDate ,S3, StartDate+1 ,S3 ,1 ,clLightGreen);

      if ShowMidLine then
      begin
        PivotTrendline(StartDate ,PRMidLine , StartDate+1 ,PRMidLine  ,1 ,clSilver);
        PivotTrendline(StartDate ,R12MidLine, StartDate+1 ,R12MidLine ,1 ,clSilver);
        PivotTrendline(StartDate ,R23MidLine, StartDate+1 ,R23MidLine ,1 ,clSilver);
        PivotTrendline(StartDate ,PSMidLine , StartDate+1 ,PSMidLine  ,1 ,clSilver);
        PivotTrendline(StartDate ,S12MidLine, StartDate+1 ,S12MidLine ,1 ,clSilver);
        PivotTrendline(StartDate ,S23MidLine, StartDate+1 ,S23MidLine ,1 ,clSilver);
      end;
    end;
  end;

  PivotLine(PlotR3, 1, clRed, ltBrick);
  PivotLine(PlotR2, 1, clRed, ltBrick);
  PivotLine(PlotR1, 1, clRed, ltBrick);
  PivotLine(PlotPP, 1, clAqua, ltBrick);
  PivotLine(PlotS1, 1, clLime, ltBrick);
  PivotLine(PlotS2, 1, clLime, ltBrick);
  PivotLine(PlotS3, 1, clLime, ltBrick);

  PivotLine(PlotPRMidLine  ,1 ,clWhite ,ltBrick);
  PivotLine(PlotR12MidLine ,1 ,clWhite ,ltBrick);
  PivotLine(PlotR23MidLine ,1 ,clWhite ,ltBrick);
  PivotLine(PlotPSMidLine  ,1 ,clWhite ,ltBrick);
  PivotLine(PlotS12MidLine ,1 ,clWhite ,ltBrick);
  PivotLine(PlotS23MidLine ,1 ,clWhite ,ltBrick);
END.
Eric
Berichten: 3604
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: Pivot Points (Intraday)

Bericht door Eric »

Dat wordt dan:

Code: Selecteer alles

{- Filename: Pivot Points (Daily for Intraday) -}

const
  clLightGreen = $A0FFA0;
  clLightRed = $A0A0FF;

procedure PivotTrendline(X0: TDateTime; Y0: real; X1: TDateTime; Y1: real; AWidth: integer; AColor: TColor);
begin
  with CreateTrendline(X0, Y0, X1, Y0) do
  begin
    ExtendLeft                                                := false;
    ExtendRight                                               := true;
    Width                                                     := AWidth;
    Color                                                     := AColor;
  end;
end;

procedure PivotLine(X0: TSeries; AWidth: integer; AColor: TColor; ALineType: TLineType);
begin
  with Createline(X0) do
  begin
    Width                                                     := AWidth;
    Color                                                     := AColor;
    LineType                                                  := ALineType;
  end;
end;

var
    PlotS1,PlotS2,PlotS3,PlotR1,PlotR2,PlotR3,PlotPP,TradeDay : TSeries;
    PlotPRMidLine,PlotR12MidLine,PlotR23MidLine               : TSeries;
    PlotPSMidLine,PlotS12MidLine,PlotS23MidLine               : TSeries;
    TodaysHigh,YestHigh,TodaysLow,YestLow,YestClose           : real;
    i,Method,Day, Mon, Yr                                     : integer;
    ShowMidLine,OneDay,Automatic                              : Boolean;
    StartDate,S1,S2,S3,R1,R2,R3,PP                            : real;
    HighYesterday,LowYesterday,CloseYesterday                 : real;
    PRMidLine,R12MidLine,R23MidLine                           : real;
    PSMidLine,S12MidLine,S23MidLine                           : real;
    LastDay: integer;

begin
  ShowMidLine                                              := CreateParameterBoolean ('Show MidLines', false, false);
  OneDay                                                   := CreateParameterBoolean ('Show One Day', true, false);
  Automatic                                                := CreateParameterBoolean ('Pivot points automatic', true, false);
  Method                                                   := CreateParameterInteger ('Method', 1, 3, 1, true);
  HighYesterday                                            := CreateParameterReal    ('Fill in High', 0, 10000, 0, true);
  LowYesterday                                             := CreateParameterReal    ('Fill in Low', 0, 10000, 0, true);
  CloseYesterday                                           := CreateParameterReal    ('Fill in Close', 0, 10000, 0, true);

  with Indicator do
  begin
    ShortName                                                 :='Auto-Multi Pivot System';
    RequiredBars                                              := 100;
    NewBand                                                   := false;
    ScaleRange                                                := srCommon;
  end;

  PlotS1                                                    := CreateSeries(BarCount);
  PlotS2                                                    := CreateSeries(BarCount);
  PlotS3                                                    := CreateSeries(BarCount);
  PlotR1                                                    := CreateSeries(BarCount);
  PlotR2                                                    := CreateSeries(BarCount);
  PlotR3                                                    := CreateSeries(BarCount);
  PlotPP                                                    := CreateSeries(BarCount);
  PlotPRMidLine                                             := CreateSeries(BarCount);
  PlotR12MidLine                                            := CreateSeries(BarCount);
  PlotR23MidLine                                            := CreateSeries(BarCount);
  PlotPSMidLine                                             := CreateSeries(BarCount);
  PlotS12MidLine                                            := CreateSeries(BarCount);
  PlotS23MidLine                                            := CreateSeries(BarCount);
  TradeDay                                                  := CreateSeries(BarCount);

  if BarCount > 0 then LastDay := trunc(DateTime[BarCount-1]);

  for i:=FirstValidIndex(close)+1 to barcount-1 do
  begin
    DecodeDate(DateTime[i], Yr, Mon, Day);
    TradeDay[i] := Day;

    if (IsValid(TradeDay[i-1])) and (TradeDay[i] <> TradeDay[i-1]) then
    begin
      StartDate                                                 := DateTime[i];
      YestHigh                                                  := TodaysHigh;
      YestLow                                                   := TodaysLow;
      YestClose                                                 := Close[i-1];
      TodaysHigh                                                := High[i];
      TodaysLow                                                 := Low[i];

      if Automatic then
      begin
        if Method=1 then PP := ( YestHigh + YestLow + YestClose )/3;
        if Method=2 then PP := ( YestHigh + YestLow + YestClose+Open[i] )/4;
        if Method=3 then PP := ( YestHigh + YestLow + Open[i] )/3;
      end else
      begin
        OneDay := true;
        PP :=(HighYesterday + LowYesterday + CloseYesterday)/3;
      end;

      R1 := PP * 2 - YestLow;
      R2 := PP + YestHigh - YestLow;
      R3 := YestHigh + 2 * (PP - YestLow); // R2 + YestHigh - YestLow;
      S1 := PP * 2 - YestHigh;
      S2 := PP - YestHigh + YestLow;
      S3 := YestLow - 2 * (YestHigh - PP); // S2 - YestHigh + YestLow;

      if ShowMidLine then
      begin
        PRMidLine := (PP+R1)/2;
        R12MidLine := (R1+R2)/2;
        R23MidLine := (R2+R3)/2;
        PSMidLine := (PP+S1)/2;
        S12MidLine := (S1+S2)/2;
        S23MidLine := (S2+S3)/2;
      end;
    end else
    begin
      if High[i] > TodaysHigh then
        TodaysHigh := High[i];
      if Low[i] < TodaysLow then
        TodaysLow := Low[i];
    end;

    if not OneDay or (trunc(DateTime[i]) = LastDay) then
    begin
      PlotPP[i] := PP;
      PlotR1[i] := R1;
      PlotR2[i] := R2;
      PlotR3[i] := R3;
      PlotS1[i] := S1;
      PlotS2[i] := S2;
      PlotS3[i] := S3;

      if ShowMidLine then
      begin
        PlotPRMidLine[i] := PRMidLine;
        PlotR12MidLine[i] := R12MidLine;
        PlotR23MidLine[i] := R23MidLine;
        PlotPSMidLine[i] := PSMidLine;
        PlotS12MidLine[i] := S12MidLine;
        PlotS23MidLine[i] := S23MidLine;
      end;
    end;

    if i = barcount-1 then
    begin
      StartDate := BarPosition[i];
      PivotTrendline(StartDate ,PP, StartDate+1 ,PP ,1 ,clAqua);
      PivotTrendline(StartDate ,R1, StartDate+1 ,R1 ,1 ,clLightRed);
      PivotTrendline(StartDate ,R2, StartDate+1 ,R2 ,1 ,clLightRed);
      PivotTrendline(StartDate ,R3, StartDate+1 ,R3 ,1 ,clLightRed);
      PivotTrendline(StartDate ,S1, StartDate+1 ,S1 ,1 ,clLightGreen);
      PivotTrendline(StartDate ,S2, StartDate+1 ,S2 ,1 ,clLightGreen);
      PivotTrendline(StartDate ,S3, StartDate+1 ,S3 ,1 ,clLightGreen);

      if ShowMidLine then
      begin
        PivotTrendline(StartDate ,PRMidLine , StartDate+1 ,PRMidLine  ,1 ,clSilver);
        PivotTrendline(StartDate ,R12MidLine, StartDate+1 ,R12MidLine ,1 ,clSilver);
        PivotTrendline(StartDate ,R23MidLine, StartDate+1 ,R23MidLine ,1 ,clSilver);
        PivotTrendline(StartDate ,PSMidLine , StartDate+1 ,PSMidLine  ,1 ,clSilver);
        PivotTrendline(StartDate ,S12MidLine, StartDate+1 ,S12MidLine ,1 ,clSilver);
        PivotTrendline(StartDate ,S23MidLine, StartDate+1 ,S23MidLine ,1 ,clSilver);
      end;
    end;
  end;

  PivotLine(PlotR3, 1, clRed, ltBrick);
  PivotLine(PlotR2, 1, clRed, ltBrick);
  PivotLine(PlotR1, 1, clRed, ltBrick);
  PivotLine(PlotPP, 1, clAqua, ltBrick);
  PivotLine(PlotS1, 1, clLime, ltBrick);
  PivotLine(PlotS2, 1, clLime, ltBrick);
  PivotLine(PlotS3, 1, clLime, ltBrick);

  PivotLine(PlotPRMidLine  ,1 ,clWhite ,ltBrick);
  PivotLine(PlotR12MidLine ,1 ,clWhite ,ltBrick);
  PivotLine(PlotR23MidLine ,1 ,clWhite ,ltBrick);
  PivotLine(PlotPSMidLine  ,1 ,clWhite ,ltBrick);
  PivotLine(PlotS12MidLine ,1 ,clWhite ,ltBrick);
  PivotLine(PlotS23MidLine ,1 ,clWhite ,ltBrick);
END.
---
Eric
Plaats reactie