{- Filename: FisherTransform -} (******************************* Auteur: J.F. Ehlers Vertaling: www.JSTAS.com ********************************) Var MinL,MaxH,Val1,Rek,PrmNa1 :Real; i,PrmKan,PrmNa :Integer; SFish,SLow,SHigh,SPrice :TSeries; SVal1,SH10,SL10,STrig :TSeries; Begin SLow :=CreateSeries(Barcount); SL10 :=CreateSeries(Barcount); SHigh :=CreateSeries(Barcount); SH10 :=CreateSeries(Barcount); SVal1 :=FillSeries(CreateSeries(Barcount),1); SFish :=FillSeries(CreateSeries(Barcount),1); STrig :=FillSeries(CreateSeries(Barcount),1); SPrice := DivideSeriesBy(AddSeries(High,Low),2); PrmKan :=CreateParameterInteger('Kanaal-dagen',4,14,10,True); PrmNa :=CreateParameterInteger('Na-ijl Trigger %',80,100,90,True); PrmNa1 :=PrmNa/100; PrmKan :=PrmKan-1; i :=0; With Indicator Do Begin RequiredBars :=14; ShortName :='Fisher Transform'; End; For i :=0 to Barcount-1 Do Begin SLow[i] :=Low[i]; SHigh[i] :=High[i]; SPrice[i] := (High[i]+Low[i])/2; End For i :=14 to barcount -1 do Begin MinL :=Lowest (SLow,i-PrmKan,i) ; MaxH :=Highest(SHigh,i-PrmKan,i); SH10[i] :=MaxH; SL10[i] :=MinL; Val1 := ((SPrice[i]-SL10[i])/(SH10[i]-SL10[i]) - 0.5)+ 0.5*SVal1[i-1]; If Val1 >= 0.9999 Then Val1 :=0.9999; If Val1 <= -0.9999 Then Val1 := -0.9999; SVal1[i] :=Val1; Rek := 0.25*Ln( (1+SVal1[i]) / ( 1 - SVal1[i]) ) + 0.5*SFish[i-1]; SFish[i] := Rek; STrig[i] := PrmNa1*SFish[i-1]; End; With CreateLine(SFish) Do Begin Color :=ClRed; Name :='Fisher'; End; With CreateLine(STrig) Do Begin Color :=ClBlue; Name :='Trigger'; End; End.