Beste Eric,
Ik heb het een en ander opgeschoond bij mijn indicatoren. Ik ga nu alléén nog uit van het volgende script, zie onder de tekst. Het betreft de weergave van de Maand Pivot Point. Ik wil het graag wijzigen.
Op bijlage nummer 1 van Agnico-Eagle Mines zie je de 7 lijnen van de Pivot Points staan. Vanaf 02-02-2026 tot en met 20-03-2026 staan conform het huidige script groene en rode pijlen bij diverse koersdagen. Ik vermoed dat het script uit gaat van de close van een koersdag.
De bedoeling is echter dat er een signaal staat bij de koersdagen, waarin de koers één van de 7 lijnen heeft geraakt. Het betekent dat het script niet uit moet gaan van de open, hoog, laag of de close, maar uitsluitend een signaal laat zien, wanneer de koers gedurende de koersdag één van de lijnen heeft geraakt. Een dergelijke wil ik scannen nadat de beurs is gesloten. Dat is voor mij het allerbelangrijkste om de Pivot Bounce Strategy te kunnen analyseren en uit te kunnen voeren.
Wanneer het script zodanig wordt afgesteld, zie bijlage 2, zie je dat er een heleboel extra signalen zijn geweest. Ik kan dan bij het gewijzigde script bijvoorbeeld scannen op de S1. Wanneer de koers gedurende de handelsdag de S1 heeft geraakt, wil ik nadat de beurs gesloten is, een scan uitvoeren om alle S1-kandidaten uit een lijst van 700 aandelen naar voren te halen. Dat geldt natuurlijk ook voor alle andere lijnen, waardoor ik slechts 7 keren scan. Het voordeel is ook dat het eventueel long en short gaan tegelijkertijd wordt weergegeven. Ik stel daarom ook voor om rondjes te gebruiken en geen pijltjes, want we hoeven niet uit te gaan van de open, hoog, laag en close. Wat denk je er van? Mogelijk?
Aanvullend 1: De cirkeltjes geven aan dat de koers één van de lijnen niet heeft geraakt, waardoor er geen pijltje bij hoort te staan.
Aanvullend 2: Graag in het script de benoeming van de lijnen weergeven als R3, R2, R1, Pivot Point, S1, S2 en S3.
Ik hoop dat ik het duidelijk heb weergegeven, alsmede ook op de bijlage 1 en 2.
Fijne zondag en tot maandag, groet OT.
Code: Selecteer alles
{- Filename: Pivot Points Month - Day Signals -}
function DTtoWeek(DT: TDateTime): integer;
begin
while DayOfWeek(DT) <> 2 do DT := DT-1; // bepaal laatste maandag
Result := trunc(DT);
end;
function DTtoMonth(DT: TDateTime): integer;
var
Y, M, D: integer;
begin
DecodeDate(DT, Y, M, D);
Result := Y*12+M;
end;
var
i, LastPeriod, NewPeriod, StartPeriod, PeriodType: integer;
PivotPP, PivotR1, PivotR2, PivotR3, PivotS1, PivotS2, PivotS3: TSeries;
LastHigh, LastLow, LastClose, Avg: real;
XPP, XR1, XR2, XR3, XS1, XS2, XS3: TLineCrossings;
begin
PeriodType := CreateParameterSelect('Type', 'Week'#9'Maand', 1, false);
{ Indicator eigenschappen }
with Indicator do
begin
ShortName := 'Pivot points';
RequiredBars := 100;
NewBand := false;
ScaleRange := srCommon;
SignalView := svShowInMain;
end;
LastPeriod := -1;
PivotPP := CreateSeries(BarCount);
PivotR1 := CreateSeries(BarCount);
PivotR2 := CreateSeries(BarCount);
PivotR3 := CreateSeries(BarCount);
PivotS1 := CreateSeries(BarCount);
PivotS2 := CreateSeries(BarCount);
PivotS3 := CreateSeries(BarCount);
if BarCount > 0 then
begin
case PeriodType of
0: NewPeriod := DTtoWeek(DateTime[BarCount-1]);
else NewPeriod := DTtoMonth(DateTime[BarCount-1]);
end;
StartPeriod := NewPeriod - 14;
for i:=0 to BarCount-1 do
begin
if i > 0 then
begin
PivotPP[i] := PivotPP[i-1];
PivotR1[i] := PivotR1[i-1];
PivotR2[i] := PivotR2[i-1];
PivotR3[i] := PivotR3[i-1];
PivotS1[i] := PivotS1[i-1];
PivotS2[i] := PivotS2[i-1];
PivotS3[i] := PivotS3[i-1];
end;
case PeriodType of
0: NewPeriod := DTtoWeek(DateTime[i]);
else NewPeriod := DTtoMonth(DateTime[i]);
end;
if NewPeriod <> LastPeriod then
begin
if LastPeriod > 0 then
begin
Avg := (LastHigh + LastLow + LastClose) / 3;
PivotPP[i] := Avg;
PivotR1[i] := 2*Avg - LastLow;
PivotR2[i] := Avg + LastHigh - LastLow;
PivotR3[i] := LastHigh + 2*(Avg - LastLow);
PivotS1[i] := 2*Avg - LastHigh;
PivotS2[i] := Avg - LastHigh + LastLow;
PivotS3[i] := LastLow - 2*(LastHigh - Avg);
end;
LastPeriod := NewPeriod;
LastHigh := High[i];
LastLow := Low[i];
LastClose := Close[i];
end else
begin
LastHigh := Max(LastHigh, High[i]);
LastLow := Min(LastLow, Low[i]);
LastClose := Close[i];
end;
end;
end;
XPP := Crossings(Close, PivotPP);
XR1 := Crossings(Close, PivotR1);
XR2 := Crossings(Close, PivotR2);
XR3 := Crossings(Close, PivotR3);
XS1 := Crossings(Close, PivotS1);
XS2 := Crossings(Close, PivotS2);
XS3 := Crossings(Close, PivotS3);
for i:=0 to BarCount-1 do
begin
if (XPP[i] = lc1Over2) or (XR1[i] = lc1Over2) or (XR2[i] = lc1Over2) or (XR3[i] = lc1Over2) or
(XS1[i] = lc1Over2) or (XS2[i] = lc1Over2) or (XS3[i] = lc1Over2) then
Signals[i] := sgEnterLong;
if (XPP[i] = lc2Over1) or (XR1[i] = lc2Over1) or (XR2[i] = lc2Over1) or (XR3[i] = lc2Over1) or
(XS1[i] = lc2Over1) or (XS2[i] = lc2Over1) or (XS3[i] = lc2Over1) then
Signals[i] := sgEnterShort;
end;
with CreateLine(PivotPP) do
begin
Name := 'PP';
Color := clAqua;
Width := 2;
end;
with CreateLine(PivotR1) do
begin
Name := 'R1';
Color := clRed;
end;
with CreateLine(PivotS1) do
begin
Name := 'S1';
Color := clLime;
end;
with CreateLine(PivotR2) do
begin
Name := 'R2';
Color := clRed;
end;
with CreateLine(PivotS2) do
begin
Name := 'S2';
Color := clLime;
end;
with CreateLine(PivotR3) do
begin
Name := 'R3';
Color := clRed;
end;
with CreateLine(PivotS3) do
begin
Name := 'S3';
Color := clLime;
end;
end.