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.