Andrews' pitchfork

Stel hier uw vragen over TA-script, of help anderen met het oplossen van hun probleem
Plaats reactie
Hannes
Berichten: 20
Lid geworden op: vr feb 14, 2020 12:49 pm

Andrews' pitchfork

Bericht door Hannes »

hallo Eric,

is het mogelijk om in een toekomstige W$ update Andrews' pitchfork iets op te pimpen?

wat ik graag zou zien, dat net als bij speedline's ik ook bij de pitchfork niveaus kwijt kan.

zowel intern als extern de P-fork.

goed weekend,

Hannes
Hannes
Berichten: 20
Lid geworden op: vr feb 14, 2020 12:49 pm

Re: Andrews' pitchfork

Bericht door Hannes »

extra informatie met wat ik bedoel.
dimonds are for erver.PNG
nu handmatig knippen en plakken. met P-fork en dan + 100 en - 100 buiten de P-fork om en vervolgens 200, 300% etc...

scheelt mij veel tijd vooral bij intraday werk. Soms nog bezig met frequentie zoeken en tekenen en copy past dat de trade al vertrokken is. haha :D

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

Re: Andrews' pitchfork

Bericht door Eric »

In dit plaatje staan wel heel veel lijnen, daar haal ik niet uit wat je wilt. Ik zie ook niet de oorspronkelijke vork, die lijkt buiten beeld te zijn.

Ik had je een privebericht gestuurd maar dat heb je nog niet gelezen zie ik.

---
Eric
Hannes
Berichten: 20
Lid geworden op: vr feb 14, 2020 12:49 pm

Re: Andrews' pitchfork

Bericht door Hannes »

deze afbeelding denk ik iets duidelijker
nq d.PNG
eric.PNG
Janus
Berichten: 1470
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Andrews' pitchfork

Bericht door Janus »

Bedoel je extra lijnen evenwijdig aan die van de pitchfork, zoals in onderstaande afbeelding (rode lijnen)?
De lichtblauw gestippelde lijnen zijn reactie lijnen, hier weergegeven op 50%, maar je kan ze bijvoorbeeld ook om de 25% laten tekenen.
Afbeelding
Vriendelijke groet,
JanS ;)
Hannes
Berichten: 20
Lid geworden op: vr feb 14, 2020 12:49 pm

Re: Andrews' pitchfork

Bericht door Hannes »

klopt Janus,

spijker op de kop.

je hebt deze als script in de grafiek zie ik.

groet,

Hannes
Janus
Berichten: 1470
Lid geworden op: wo jan 30, 2008 2:07 am
Contacteer:

Re: Andrews' pitchfork

Bericht door Janus »

Inderdaad een script, geschreven ruim 11 jaar geleden.

Code: Selecteer alles

 {- Filename: Pitchfork -}

// Pitchfork proef
// www.JSTAS.com
// gewijzigd op 6-5-2017
// versie 1.07

//******************************************************************************
Type PitchFork = Record
       Dat1,Dat2,Dat3: TDateTime;
       Bp1,Bp2,Bp3,MpT,Xvpl,
       Xvpl2,Xvpl3,Xvpl4,XvpHd,XvpHu          : real; 
       Hdt1,Hdt2,Hdt3,Ldt1,Ldt2,Ldt3,KrsW1,
       KrsW2,KrsW3,WrdP1,WrdP2,WrdP3,MpW,
       Yvpl,Yvpl2,Yvpl3,Yvpl4,YvpHd,YvpHu     : Real;
       Hlp1,Hlp2,Hlp3,LnDk,XtrL,NxRe,Schf,
       AtWgv,HagXtL,HagXtU                    : Integer;
       ClrPf,ClrAt,ClrAtt,ClrRe,ClrHg         : TColor;
       LtPf,LtAt,LtRe,LtHg                    : TLineType;
       HagL1,HagL2                            : Boolean;
     End;
Var
 pf : PitchFork;
///*****************************************************************************

Procedure Initialisaties();
Begin
With Indicator Do
Begin
Newband := False;
HiddenParams := True;
RequiredBars := Trunc(Now-pf.Dat1);
End;

End;
///*****************************************************************************

function Lijnsoort(nummer:Integer):TTrendLineStyle;
Begin
  Case nummer Of
    0 :  Result := lsSolid  ;
    1 :  Result := lsDash   ;
    2 :  Result := lsDot    ;
    3 :  Result := lsDashDot;
    4 :  Result := lsDashDotDot;
  End;
End;
///*****************************************************************************

Procedure Userchoises();
Var
lijnkeuze,Schiff,Atw,Opgave : String;
//B : Integer;

Begin
//B := Trunc(Power(10,2));

Lijnkeuze := 'Doorgetrokken lijn     '#9
             'Gestreepte lijn        '#9
             'Gestippelde lijn       '#9
             'Gestr./gestippelde lijn'#9
             'Streep/stip/stip       ' ;
             
Schiff    := 'Niet toepassen          ' #9
             '50% Koers Datum-1 - Datum-2' #9
             '50% Koers Datum-1 - Datum-3' #9
             'Koerswaarde zelf opgeven   ';
             
Opgave := 'Automatisch'#9
          'Eigen ingave';
             
Atw       := 'Niet weergeven   '#9
             'Weergave elke 50%'#9
             'Weergave elke 25%';
                  
pf.Dat1  := CreateParameterDate('StartDatum 1',EncodeDate(2011,11,25))+
            CreateParameterTime('Starttijd datum 1',EncodeTime(09,30,0,0));
pf.Hlp1  := CreateParameterSelect('Datum 1 koers op:','High'#9'Low',1,False);
pf.Schf  := CreateParameterSelect('Startpunt verschuiven naar:',Schiff,0,False);
pf.KrsW1 := CreateParameterReal('Koerswaarde punt 1',0,
                                              Trunc(Power(10,10)),311.15,False);
                                               
pf.Dat2  := CreateParameterDate('StartDatum 2',EncodeDate(2012,03,16))+
            CreateParameterTime('Starttijd datum 2',EncodeTime(09,30,0,0));
pf.Hlp2  := CreateParameterSelect('Datum 2 koers op:',Opgave,0,False);
pf.KrsW2 := CreateparameterReal('Koerswaarde punt 2',0,
                                              Trunc(Power(10,10)),341.85,False);
            
pf.Dat3  := CreateParameterDate('StartDatum 3',EncodeDate(2012,06,04))+
            CreateParameterTime('Starttijd datum 3',EncodeTime(09,30,0,0));
pf.Hlp3  := CreateParameterSelect('Datum 3 koers op:',Opgave,0,False);
pf.KrsW3 := CreateParameterReal('Koerswaarde punt 3',0,
                                              Trunc(Power(10,10)),285.45,False);
            
pf.ClrPf := CreateParameterColor('Kleur Pitchfork:',ClRed);
pf.LtPf  := Lijnsoort(CreateParameterSelect('Lijntype Pitchforklijn',
                                                            lijnkeuze,0,False));
pf.AtWgv := CreateParameterSelect('Attentielijnen:',Atw,1,False);
pf.ClrAt := CreateParameterColor('Kleur 50% Attentielijnen:',clYellow);
pf.ClrAtt:= CreateParameterColor('Kleur 25%-75% Attentielijnen:',ClGray  );
pf.LtAt  := Lijnsoort(CreateParameterSelect('Lijntype Attentielijn',
                                                            lijnkeuze,2,False));
pf.NxRe  := CreateParameterInteger('Aantal reactielijnen:',0,99,2,False);
pf.ClrRe := CreateParameterColor('Kleur reactielijnen:',ClAqua);
pf.LtRe  := Lijnsoort(CreateParameterSelect('Lijntype Reactielijn',
                                                            lijnkeuze,2,False));
pf.HagL1:=CreateParameterBoolean('Hapogian-lines omhoog weergave?',False,False);
pf.HagXtU:= CreateParameterInteger('Extra Hapogian-Lines omhoog',0,999,3,False);
pf.HagL2:=CreateParameterBoolean('Hapogian-lines omlaag weergave?',False,False);
pf.HagXtL:= CreateParameterInteger('Extra Hapogian-Lines omlaag',0,999,3,False);
pf.ClrHg := CreateParameterColor('Kleur Hapoginaline', ClGray);
pf.LtHg  := Lijnsoort(CreateParameterSelect('Lijntype Hapogianline',
                                                            lijnkeuze,2,False));
pf.LnDk  := CreateParameterInteger('Lijnbreedte Solid-line:' ,1,5,1,False);
pf.XtrL  := CreateParameterInteger(' Extra lijnen:',0,99,0,False);

If (BarInterval >=1) Then
 Begin
    pf.Dat1 := Trunc(pf.Dat1);
    pf.Dat2 := Trunc(pf.Dat2);
    pf.Dat3 := Trunc(pf.Dat3);
 End;
 
End;
///*****************************************************************************

Procedure GetData;
Var
i,D1,D2,D3 : Integer;
Begin
D1:=-1;
D2:=-1;
D3:=-1;


For i := 1 To BarCount-1 Do
Begin
 If (D1=-1)Then
 Begin
  If DateTime[i] >= pf.Dat1 Then
   Begin
     pf.Hdt1 := H[i];
     pf.Ldt1 := L[i];
     pf.Bp1 := DateTImeToX(BarPosition[i]);
     D1 := 1;
   End;
 End;
If (D2=-1)Then
 Begin
  If DateTime[i] >= pf.Dat2 Then
   Begin
     pf.Hdt2 := H[i];
     pf.Ldt2 := L[i];
     pf.Bp2 := DateTImeToX(BarPosition[i]);
     D2 := 1;
   End;
 End;
 
 If (D3=-1)Then
 Begin
  If DateTime[i] >= pf.Dat3 Then
   Begin
     pf.Hdt3 := H[i];
     pf.Ldt3 := L[i];
     pf.Bp3 := DateTImeToX(BarPosition[i]);
     D3 := 1;
   End;
 End;
If (D1=1) And (D2=1) And (D3=1) Then Exit;
End;

End;
///*****************************************************************************

Procedure Setpoints();
Begin

 If (pf.Hlp2=1) Then
  Begin
   pf.Hdt2 := pf.KrsW2;
   pf.Ldt2 := pf.Krsw2;
  End;

 If (pf.Hlp3=1) Then
  Begin
   pf.Hdt3 := pf.KrsW3;
   pf.Ldt3 := pf.KrsW3;
  End;

If pf.Hdt2 > pf.Hdt3 Then
 Begin
 pf.WrdP2 := pf.Hdt2;
 pf.WrdP3 := pf.Ldt3
 pf.MpW   := pf.WrdP3+((pf.WrdP2-pf.WrdP3)/2);
 End;

If pf.Hdt2 < pf.Hdt3 Then
 Begin
 pf.WrdP2 := pf.Ldt2;
 pf.WrdP3 := pf.Hdt3;
 pf.MpW   := pf.WrdP2+((pf.WrdP3-pf.WrdP2)/2);
 End;

Case pf.Hlp1 Of
 0 :  pf.WrdP1 := pf.Hdt1;
 1 :  pf.WrdP1 := pf.Ldt1;
End;


Case pf.Schf Of
1 : Begin
     If pf.WrdP1<pf.WrdP2 Then pf.WrdP1 := pf.WrdP1+(pf.WrdP2-pf.WrdP1)/2;
     If pf.WrdP1>pf.WrdP2 Then pf.WrdP1 := pf.WrdP1-(pf.WrdP1-pf.WrdP2)/2;
    End;
2 : Begin
     If pf.WrdP1<pf.WrdP3 Then pf.WrdP1 := pf.WrdP1+(pf.WrdP3-pf.WrdP1)/2;
     If pf.WrdP1>pf.WrdP3 Then pf.WrdP1 := pf.WrdP1-(pf.WrdP1-pf.WrdP3)/2;
    End;
3 : pf.WrdP1 := pf.KrsW1;
End;

pf.MpT   := pf.Bp2+(pf.Bp3-pf.Bp2)/2;
pf.Xvpl  := pf.MpT-pf.Bp1;
pf.Yvpl  := pf.MpW-pf.WrdP1;
pf.Xvpl2 := (pf.Bp3-pf.Bp2)/2;
pf.Yvpl2 := (pf.WrdP2-pf.Mpw);
pf.Yvpl3 := pf.Yvpl2/2;
pf.Xvpl3 := pf.Xvpl2/2;
pf.Yvpl4 := pf.Yvpl2/4;
pf.Xvpl4 := pf.Xvpl2/4;
pf.YvpHd := pf.WrdP3-pf.WrdP1;
pf.XvpHd := pf.Bp3-pf.Bp1;
pf.YvpHu := pf.WrdP2-pf.WrdP1;
pf.XvpHu := pf.Bp2-pf.Bp1;

End;
///*****************************************************************************

Procedure Tekenlijn(dt1,Dt2:TDateTime;Wrd1,Wrd2:Real;Klr:TColor;Lijn:TLinetype;
                                                       Dkt:Integer;Ext:Boolean);
Begin
  With CreateTrendLine(Dt1,Wrd1,Dt2,Wrd2) Do
   Begin
     Color       := Klr;
     Width       := Dkt;
     Style       := Lijn;
     ExtendRight := Ext
   End;
End;
///*****************************************************************************

Procedure Hapogian();
Var
j : Integer;
Begin
If pf.HagL1 Then
Begin
Tekenlijn(XToDateTime(pf.Bp1), XToDateTime(pf.Bp2), pf.WrdP1, pf.WrdP2, pf.ClrHg, pf.LtHg, pf.LnDk, True);

For j:=1 To pf.HagXtU Do
  Begin
    Tekenlijn(XToDateTime(pf.Bp2), XToDateTime(pf.Bp2+pf.XvpHu), pf.wrdP2-j*pf.YvpHu,
              pf.WrdP2+pf.YvpHu-j*pf.YvpHu, pf.ClrHg, pf.LtHg, pf.LnDk, True);
    Tekenlijn(XToDateTime(pf.Bp2), XToDateTime(pf.Bp2+pf.XvpHu), pf.wrdP2+(j)*pf.YvpHu,
              pf.WrdP2+pf.YvpHu+(j)*pf.YvpHu, pf.ClrHg, pf.LtHg, pf.LnDk, True);
  End;
End;

If pf.HagL2 Then
Begin
  Tekenlijn(XToDateTime(pf.Bp1), XToDateTime(pf.Bp3), pf.WrdP1, pf.WrdP3, pf.ClrHg, pf.LtHg, pf.LnDk, True);

For j:=1 To pf.HagXtL Do
Begin
  Tekenlijn(XToDateTime(pf.Bp3), XToDateTime(pf.Bp3+pf.XvpHd), pf.wrdP3-j*pf.YvpHd,
                    pf.WrdP3+pf.YvpHd-j*pf.YvpHd,pf.ClrHg,pf.LtHg,pf.LnDk,True);
  Tekenlijn(XToDateTime(pf.Bp3), XToDateTime(pf.Bp3+pf.XvpHd), pf.wrdP3+j*pf.YvpHd,
                    pf.WrdP3+pf.YvpHd+j*pf.YvpHd,pf.ClrHg,pf.LtHg,pf.LnDk,True);
End;
End;
End;
///*****************************************************************************

Procedure VorkEnExtralijnen();
Var
  j, k: Integer;
  X1, X2: real;
  DT1, DT2: TDateTime;
Begin
  Tekenlijn(XToDateTime(pf.Bp2), XToDateTime(pf.Bp3),
            pf.WrdP2, pf.WrdP3,
            pf.ClrPf, pf.LtPf, pf.LnDk, False); // lijn P2-P3
            
  For j:= 0 To pf.XtrL Do
  Begin
    Tekenlijn(XToDateTime(pf.Bp2-j*pf.Xvpl2), XToDateTime(pf.Bp2+pf.Xvpl-j*pf.Xvpl2),
              pf.WrdP2+(j*pf.Yvpl2), pf.WrdP2+pf.Yvpl+(j*pf.Yvpl2),
              pf.ClrPf,pf.LtPf, pf.LnDk, True);

    Tekenlijn(XToDateTime(pf.Bp3+j*pf.Xvpl2), XToDateTime(pf.Bp3+pf.Xvpl+j*pf.Xvpl2),
              pf.WrdP3-(j*pf.Yvpl2), pf.WrdP3+pf.Yvpl-(j*pf.Yvpl2),
              pf.ClrPf,pf.Ltpf, pf.LnDk, True);

    If pf.AtWgv>=1 Then
    Begin
      Tekenlijn(XToDateTime(pf.MpT-pf.Xvpl3-j*pf.Xvpl2),
                XToDateTime(pf.MpT-pf.Xvpl3+pf.Xvpl-j*pf.Xvpl2),
                pf.MpW+pf.Yvpl3+(j*pf.Yvpl2),pf.MpW+pf.Yvpl3+pf.Yvpl+(j*pf.Yvpl2),
                pf.ClrAt,pf.LtAt,pf.LnDk,True);
      Tekenlijn(XToDateTime(pf.MpT+pf.Xvpl3+j*pf.Xvpl2),
                XToDateTime(pf.MpT+pf.Xvpl3+pf.Xvpl+j*pf.Xvpl2),
                pf.MpW-pf.Yvpl3-(j*pf.Yvpl2),pf.MpW-pf.Yvpl3+pf.Yvpl-(j*pf.Yvpl2),
                pf.ClrAt,pf.LtAt,pf.LnDk,True);
      If pf.AtWgv=2 Then
      Begin
        Tekenlijn(XToDateTime(pf.MpT-pf.Xvpl4-j*pf.Xvpl2),
                  XToDateTime(pf.Mpt-pf.Xvpl4+pf.Xvpl-j*pf.Xvpl2),
                  pf.MpW+pf.Yvpl4+(j*pf.Yvpl2),pf.MpW+pf.Yvpl4+pf.Yvpl+(j*pf.Yvpl2),
                  pf.ClrAtt,pf.LtAt,pf.LnDk,True);
        Tekenlijn(XToDateTime(pf.MpT-pf.Xvpl4*3-j*pf.Xvpl2),
                  XToDateTime(pf.Mpt-pf.Xvpl4*3+pf.Xvpl-j*pf.Xvpl2),
                  pf.MpW+pf.Yvpl4*3+(j*pf.Yvpl2),pf.MpW+pf.Yvpl4*3+pf.Yvpl+(j*pf.Yvpl2),
                  pf.ClrAtt,pf.LtAt,pf.LnDk,True);
        Tekenlijn(XToDateTime(pf.MpT+pf.Xvpl4+j*pf.Xvpl2),
                  XToDateTime(pf.MpT+pf.Xvpl4+pf.Xvpl+j*pf.Xvpl2),
                  pf.MpW-pf.Yvpl4-(j*pf.Yvpl2),pf.MpW-pf.Yvpl4+pf.Yvpl-(j*pf.Yvpl2),
                  pf.ClrAtt,pf.LtAt,pf.LnDk,True);
        Tekenlijn(XToDateTime(pf.MpT+pf.Xvpl4*3+j*pf.Xvpl2),
                  XToDateTime(pf.MpT+pf.Xvpl4*3+pf.Xvpl+j*pf.Xvpl2),
                  pf.MpW-pf.Yvpl4*3-(j*pf.Yvpl2),pf.MpW-pf.Yvpl4*3+pf.Yvpl-(j*pf.Yvpl2),
                  pf.ClrAtt,pf.LtAt,pf.LnDk,True);
      End; // end AtWgv=2
    End; // end Atwgv 1 or 2

    For K:= 1 To pf.NxRe Do
    Begin
      Tekenlijn(XToDateTime(pf.Bp2+pf.Xvpl-j*pf.Xvpl2+(k-1)*pf.Xvpl),
                XToDateTime(pf.Bp3+pf.Xvpl+j*pf.Xvpl2+(k-1)*pf.Xvpl),
                pf.WrdP2+pf.Yvpl+(j*pf.Yvpl2)+((k-1)*pf.Yvpl),
                pf.WrdP3+pf.Yvpl-(j*pf.Yvpl2)+((k-1)*pf.Yvpl),
                pf.ClrRe,pf.LtRe,pf.LnDk,False);
    End; //k
  End; //j
End;
///*****************************************************************************

Procedure Tekenlijnen();
Begin
If ((pf.MpT-pf.Bp1)<>0) Then
Begin
Tekenlijn(XToDateTime(pf.Bp1), XToDateTime(pf.Mpt), pf.WrdP1,pf.MpW,pf.ClrPf,pf.LtPf,pf.LnDk,True);
VorkEnExtraLijnen();
If (pf.HagL1) Or (pf.HagL2) Then Hapogian();
End;
End;
///*****************************************************************************

Begin
Userchoises();
Initialisaties();
GetData();
Setpoints();
Tekenlijnen();
End.
werkt niet zo mooi als een ingebouwde indicator, werkt niet met de muis, maar 'handmatige' ingave.
Vriendelijke groet,
JanS ;)
Hannes
Berichten: 20
Lid geworden op: vr feb 14, 2020 12:49 pm

Re: Andrews' pitchfork

Bericht door Hannes »

ik ben hier al heel blij mee,

ik kan altijd het script combineren met de teken tool P-fork.

bedankt.
Plaats reactie