Ik stel maar steeds vragen en vragen, en sommigen zullen denken: waar is die @#$#@ nu eigenlijk mee bezig
Wel, ik kan me iets redden in Clipper en iets in EasyLanguage, maar omdat ik heb gekozen voor WallStreet, en Wallstreet heeft gekozen voor TA-script, ben ik bezig met "vingeroefeningen" voor TA-script, en zoals zo vaak, alle begin is moelilijk.
Mijn opleiding heeft als grondslag electronica, en vanuit dat gezichtspunt benader ik veelal de grafieken.
Vandaar dat ik ook zeer gecharmeerd ben van het werk van J.F. ehlers, die veel electronica heeft toegepast bij zijn benadering van TA op de grafieken, en omdat ik altijd meen dat ik niet opnieuw het wiel hoef uit te vinden, maak ik ook in het hierna volgende geval gebruik van zijn werk.
*
De "beste" instelling voor een WMA is de halve-cycluslengte +1 leert de theorie.
Prima kruisingen voor gebruik met een een dual-wMA levert de combinatie met een 2-e WMA die de dubbele lengte heeft van de instelling van de eerste WMA.
*
Dat is het uitgangspunt wat ik heb gebruikt voor de hierna volgende benadering.
*
Voor de bepaling van de cycluslengte heb ik gebruik gemaakt van de Homodyne discriminator, omdat deze de beste gemiddelde benadering geeft, en voor de gemiddelde bepaling ben ik uit gegaan van het gewogen gemiddelde, omdat deze minimale lag combineert met een simpele berekening, en daar hou ik van als simpele boer
Code: Selecteer alles
Var
Calc1,Calc2,Calc3,Calc5,Calc6,Calc7,Calc8,Calc9,Ber :Real ;
Calc10,Calc11,Calc12,C1,C2,C3,Opt,Opt2,Dlf,Peri,Peri2 :Real ;
Dt,i,Ofset1,Multpl :Integer;
Scalc1,Scalc2,Scalc3,Scalc5,Scalc6,Scalc7 :Tseries;
Scalc8,Scalc9,Scalc10,Scalc11,Scalc12,Swma,Swma2 :TSeries;
Highk,Highk2 :Boolean;
begin
With Indicator do Begin
Newband :=false;
ScaleRange :=SrCommon;
End;
Scalc1 := FillSeries(CreateSeries(Barcount),1);
Scalc2 := FillSeries(CreateSeries(Barcount),1);
Scalc3 := FillSeries(CreateSeries(Barcount),1);
Scalc5 := FillSeries(CreateSeries(Barcount),1);
Scalc6 := FillSeries(CreateSeries(Barcount),1);
Scalc7 := FillSeries(CreateSeries(Barcount),1);
Scalc8 := FillSeries(CreateSeries(Barcount),1);
Scalc9 := FillSeries(CreateSeries(Barcount),1);
Scalc10:= FillSeries(CreateSeries(Barcount),1);
Scalc11:= FillSeries(CreateSeries(Barcount),1);
Scalc12:= FillSeries(CreateSeries(barcount),1);
Swma := FillSeries(CreateSeries(barcount),1);
Swma2 := FillSeries(CreateSeries(barcount),1);
C1 :=0.0962;
C2 :=0.5769;
Ofset1 :=CreateParameterInteger
('Afw.gem-1_halve cyclus+1 % ',-50,50,0,True) ;
Multpl :=CreateParameterInteger
('Factor Gem2X(Cyclus+1) X % ',60,400,100,True) ;
Highk :=CreateParameterBoolean
('Gemiddelde-koers-1 ipv. hoogste-koers-1 (rood)',False,False);
Highk2 :=CreateParameterBoolean
('Hoogste-koers-2 ipv. gemiddelde-koers-2 (geel) ',True,False);
for i:=50 to (barcount-1) do
Begin
C3 :=(Scalc3[i-1]*0.075+0.54);
Calc1 :=((H[i]+L[i])*2+(H[i-1]+L[i-1])*1.5+(H[i-2]+L[i-2])+
(H[i-3]+L[i-3])/2)/10 ;
Calc2 :=(Calc1*C1+Scalc1[i-2]*C2-Scalc1[i-4]*C2-Scalc1[i-6]*C1)*C3 ;
Calc7 :=(Calc2*C1+Scalc2[i-2]*C2-Scalc2[i-4]*C2-Scalc2[i-6]*C1)*C3 ;
Calc5 :=(Scalc2[i-3]*C1+Scalc2[i-5]*C2-Scalc2[i-7]*C2-Scalc2[i-9]*C1)*C3;
Calc6 :=(Calc7*C1+Scalc7[i-2]*C2-Scalc7[i-4]*C2-Scalc7[i-6]*C1)*C3 ;
Calc8 :=(Scalc2[i-3]-Calc6)*0.2+Scalc8[i-1]*0.8 ;
Calc9 :=(Calc7+Calc5)*0.2+Scalc9[i-1]*0.8 ;
Calc10:=(Calc8*Scalc8[i-1]+Calc9*Scalc9[i-1])*0.2+Scalc10[i-1]*0.8 ;
Calc11:=(Calc8*Scalc9[i-1]-Calc9*Scalc8[i-1])*0.2+Scalc11[i-1]*0.8 ;
If Calc10 = 0 Then Calc10 := 0.0001 ;
If Calc11 = 0 Then Calc11 := 0.0001 ;
Calc3 :=(360/((arctan(Calc11/Calc10))*180/Pi)) ;
If Calc3 > (Scalc3[i-1]*1.5) then Calc3 := Scalc3[i-1]*1.5 ;
If Calc3 < (Scalc3[i-1]*0.67) then Calc3 := Scalc3[i-1]*0.67 ;
If Calc3 < 6 then Calc3 :=6 ;
If Calc3 > 50 then Calc3 :=50 ;
Calc3 := 0.2*Calc3+(Scalc3[i-1]*0.8) ;
Calc12 := 0.33*Calc3+(Scalc12[i-1]*0.67) ;
Scalc1[i] :=Calc1 ; Scalc2[i] :=Calc2 ;
Scalc3[i] :=Calc3 ; Scalc7[i] :=Calc7 ;
Scalc5[i] :=Calc5 ; Scalc6[i] :=Calc6 ;
Scalc8[i] :=Calc8 ; Scalc9[i] :=Calc9 ;
Scalc10[i]:=Calc10 ; Scalc11[i]:=Calc11;
Scalc12[i]:=Calc12 ;
Ber := (Calc12/2)+1;
Peri := round(ber+ofset1*Ber/100) ;
Peri2:= round((2*Ber)*(Multpl/100));
Opt:=0; Opt2:=0; Dt:=0 ;
While peri >0 Do
Begin
If NOT Highk then Opt := High[i-Dt]*Peri
Else Opt:= Scalc1[i-Dt]*Peri
Dt := Dt +1
Opt2 :=Opt +Opt2
Peri := Peri -1
End;
Dlf := ((SQR(Dt)+Dt)/2);
Swma[i] := Opt2/Dlf ;
Opt:=0; Opt2:=0; Dt:=0 ;
While peri2>0 Do
Begin
If Not Highk2 Then Opt := Scalc1[i-Dt]*Peri2
Else Opt := High[i-Dt]*Peri2
Dt :=Dt+1
Opt2 :=Opt+Opt2
Peri2 :=Peri2-1
End;
Dlf :=((SQR(Dt)+Dt)/2);
Swma2[i] := Opt2/Dlf ;
End;
With indicator do Begin
Shortname := 'JSTAS.com - Auto_MA';
End;
With CreateLine(Swma) Do Begin
Color :=ClRed;
End;
With CreateLine(Swma2)Do Begin
Color :=ClYellow;
End;
end.
*
Als eerste: elk commentaar is welkom --> daar hoop ik als simpele boer veel van te leren.
Echt, eerlijk, lever het commentaar wat je te binnen schiet, daar leert iedereen van , bedenk, domme vragen/opmerkingen bestaan niet.
.
Verder, bovenstaande inidicator is natuurlijk niet het ei van Columbus, maar, denk ik, best wel een leuke opzet naar iets wat heel mooi kan worden
Dus denk a.u.b. allemaal even lekker mee !
Wat wil je bijv. graag gewijzigd of toegevoegd zien???
Dit is je kans... stel je vraag ...
Nog één opmerking voordat jullie me lek schieten, en dat is de reactietijd van de indicator bij tragere computers ....
Alles ging vlot, tot dat ik de berekening van de WMA toepaste ....
Sinds die tijd kost elke wijizging "seconden" voordat deze zichtbaar wordt, vanwege de vele berekeningen.
Heeft iemand daarvoor een "slimme" oplossing ??
*
Bovenstaande cyclus berekening heeft een "lag" van pakweg 17 koersbars.
Dat lijkt veel, en is inderdaad niet weinig ;--)
bedenk echter: om de gemiddelde snelheid te berekenen die geldt voor jouw rit vanaf Eindhoven naar Amsterdam, zul je die toch eerst afgelegd moeten hebben voordat je die kan berekenen.
Het vooraf berekenen van je gemiddelde snelheid, daar ken ik helaas de formule niet voor.
Dus: lag is onvermijdelijk in dit geval.
Verder, bovenstaande is slechts één van de vele mogelijkheden van TA-script, en voor mij één van de eerste vinger oefeningen, dus (ver)oordeel me niet te hard a.u.b.
.
Gaarne reactie, is 't wat --- en kan ik daarmee verder voor jullie, of is't niks, en waarom is 't dan niks ?
.
Vriendelijke groet,
Jan
.
www.jstas.com
.