TAR & Gann Trend Indicator

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

TAR & Gann Trend Indicator

Bericht door Optiontrader » wo dec 04, 2019 1:44 am

Hallo Eric,

Ik gebruik de volgende indicator, zie onder, en ik stel in bij de scanner van de TA Reporter op dinsdag 3 december 2019:

markt -
nieuw -
datum van maandag, 2 dec 2019 - (let op de andere datum aub)
ok

Scherm toevoegen:

de hier onder vermelde indicator -
Indicatorscherm weekkoersen -
parameter van 2 naar 1 -
filtervoorwaarde indicator geeft aan/verkoopsignaal -
signaal alle signalen -
signaleren = alle signalen
ok

Example: Abitibi Royalties en anderen, maar het voorbeeld is hier Abitibi.

Ik scan op de derde december (23:00 hrs) voor signalen van de tweede december (zie boven).
Op de tweede december is de hoogste koers van Abitibi 14,42.
De peak van een paar weken terug is 15,10, waardoor er op de tweede december geen signaal kan zijn in de scanlijst.
Het signaal is er pas op de derde december. De passage van de peak van 15,10.
Toch krijg ik bij het instellen van de tweede december op de derde december een signaal in de scanlijst, terwijl dat helemaal niet mogelijk is.
De peak werd namelijk op de derde december gepasseerd.

Oplossing?

Doe ik/stel ik iets verkeerd in?

Moet er nog een tarcode geplaatst worden in de indicator (zie onder), zoals je bijv. bij de Force Index 2 hebt gedaan onder?

Of is er een andere oplossing?

Groet OT




{- Filename: Gann Trend Indicator -}

{- Filename: Gann Trend Indicator XX -}

type
TDirection = (dirNONE, dirUP, dirDN);

var
colUp, colDn: TColor;

function GannSwing(aHigh, aLow: TSeries; Strength: integer): TSeries;
var
i, UpCnt, DnCnt: integer;
hH, lL, lH, hL,
SwingUp, SwingDn: boolean;
Direction: TDirection;
iDn_Swing, iUp_Swing, Count: integer;
LastSwingLow, LastSwingHigh: real;
Color: TColor;
begin
Count := GetArrayLength(aHigh);
Result := CreateSeries(Count);
UpCnt := 0;
DnCnt := 0;
Color := 0;
LastSwingHigh := 0;
LastSwingLow := 0;
for i:=1 to Count-1 do
begin
hH := aHigh > aHigh[i-1];
lL := aLow < aLow[i-1];
lH := aHigh < aHigh[i-1];
hL := aLow > aLow[i-1];

if lH and lL then
begin
UpCnt := 0;
DnCnt := DnCnt + 1;
end else
if hH and hL then
begin
DnCnt := 0;
UpCnt := UpCnt + 1;
end else
begin
UpCnt := 0;
DnCnt := 0;
end;
SwingDn := DnCnt = Strength;
SwingUp := UpCnt = Strength;

if (Direction <> dirUP) and SwingUp then
begin
{ up swing, set last bottom }
Direction := dirUP;
Result[iDn_Swing] := aLow[iDn_Swing];
LastSwingLow := aLow[iDn_Swing];
iUp_Swing := i;
SetBarColor(0, iDn_Swing, colDn);
end else

if (Direction = dirUp) and hH then
begin
{ up trend continuation, check for new high }
if aHigh > aHigh[iUp_Swing] then iUp_Swing := i;
end else

if (Direction <> dirDN) and SwingDn then
begin
{ down swing, set last top }
Direction := dirDN;
Result[iUp_Swing] := aHigh[iUp_Swing];
LastSwingHigh := aHigh[iUp_Swing];
iDn_Swing := i;
SetBarColor(0, iUp_Swing, colUp);
end else

if (Direction = dirDn) and lL then
begin
{ down trend continuation, check for new low }
if aLow < aLow[iDn_Swing] then iDn_Swing := i;
end;

{ signalen controleren }
if (LastSwingHigh > 0) and (aHigh > LastSwingHigh) then
begin
Signals := sgEnterLong;
LastSwingHigh := 0;
Color := colUp;
end else
if (LastSwingLow > 0) and (aLow < LastSwingLow) then
begin
Signals := sgEnterShort;
LastSwingLow := 0;
Color := colDn;
end;
if Color <> 0 then SetParentBarColor(i, Color);

if i = BarCount-1 then
begin
if Direction = dirUP then
Result[iUp_Swing] := aHigh[iUp_Swing]
else
if Direction = dirDN then
Result[iDn_Swing] := aLow[iDn_Swing];
end;
end;
end;

var
Strength: integer;
sSwing: TSeries;
begin
{ Parameters }
Strength := CreateParameterInteger('Strength', 1, 3, 2, true);
colUp := CreateParameterColor('Color up', clLime);
colDn := CreateParameterColor('Color down', clRed);

{ Indicator eigenschappen }
with Indicator do
begin
RequiredBars := 1000; // Aantal benodigde koersen om eerste indicatorwaarde te berekenen
NewBand := false; // indicator standaard in nieuwe sectie plaatsen
ScaleRange := srCommon; // indicatorschaal automatisch
SignalView := svShowInMain;
end;

sSwing := GannSwing(High, Low, Strength);

{ Weergave }
with CreateLine(sSwing) do
begin
Name := 'GannTrend';
Color := clSilver;
ValueVisible := true;
end;
end.

Eric
Berichten: 3089
Lid geworden op: za sep 10, 2005 2:41 am
Locatie: Den Haag

Re: TAR & Gann Trend Indicator

Bericht door Eric » wo dec 04, 2019 9:57 am

Het probleem met veel swing indicatoren en ook deze is dat ze koersen in de toekomst gebruiken om de indicator in het verleden te construeren. Dat heeft als consequentie dat je vandaag ineens een omslag in het verleden (plus een signaal) kunt zien die er gisteren nog niet was.

Wanneer je in Wall Street een trading simulatie uitvoert of een technisch filter worden echter in principe alle koersen gebruikt om de indicator te berekenen, en alleen de signalen die in de door jou gekozen periode vallen worden gebruikt. Dat kan het effect hebben dat jij beschrijft.

In het algemeen raad ik daarom af om indicatoren die het verleden reconstrueren te voorzien van signalen, omdat dit leidt tot niet realistische trading simulaties en dus ook zoals nu bij jou signalen in het verleden die er eerder nog niet waren.

---
Eric

Plaats reactie