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
Andrews' pitchfork
Re: Andrews' pitchfork
extra informatie met wat ik bedoel.
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
groet, Hannes
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

groet, Hannes
Re: Andrews' pitchfork
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
Ik had je een privebericht gestuurd maar dat heb je nog niet gelezen zie ik.
---
Eric
Re: Andrews' pitchfork
deze afbeelding denk ik iets duidelijker
Re: Andrews' pitchfork
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.

De lichtblauw gestippelde lijnen zijn reactie lijnen, hier weergegeven op 50%, maar je kan ze bijvoorbeeld ook om de 25% laten tekenen.

Vriendelijke groet,
JanS
JanS

Re: Andrews' pitchfork
klopt Janus,
spijker op de kop.
je hebt deze als script in de grafiek zie ik.
groet,
Hannes
spijker op de kop.
je hebt deze als script in de grafiek zie ik.
groet,
Hannes
Re: Andrews' pitchfork
Inderdaad een script, geschreven ruim 11 jaar geleden.
werkt niet zo mooi als een ingebouwde indicator, werkt niet met de muis, maar 'handmatige' ingave.
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.
Vriendelijke groet,
JanS
JanS

Re: Andrews' pitchfork
ik ben hier al heel blij mee,
ik kan altijd het script combineren met de teken tool P-fork.
bedankt.
ik kan altijd het script combineren met de teken tool P-fork.
bedankt.