Allmänt meddelande

Collapse
No announcement yet.

Fisher Transform indicator

Collapse
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Fisher Transform indicator

    Intressant indikator som finns i en del plattformar, bl a CMC, men där går det ju inte att få larm/automatiska signaler. Nedan är en beskrivning av koden:
    ---------------
    Here is the formula of the Fisher signal line:
    Value:=0.66*((Price-MinL)/(MaxH-MinL)-0.5)+0.67*Value_prev;
    if Value>0.99 then Value:=0.999;
    if Value<-0.99 then Value:=-0.999;
    Fish:=0.5*ln((1+Value)/(1-Value))+0.5*Fish_prev;

    MaxH is the highest high for the last period candles
    MinL is the lowest low for the last period candles

    Price can be High, Low, Open, Close, Middle, Typical and Weighted. (Middle is set by default).
    Multiplier is smoothed second line.
    ----
    Skaparen J Ehlers sätter dessutom period till 10 som default.
    -----
    Nedan är mitt försök till script, övertydligt uppdelat i steg som kan komprimeras senare. Men jag anar att det inte blir rätt med parametrarna V7 och F6 om man ser till hur originalkoden är uppbyggd (se "Value" och "Fish" ovan där dessa är summan av värdet nu och värdet 1 period tillbaka). Jag får heller ingen kurva att ritas.

    period:=10
    price=div(add(l,h),2)
    MaxH=hhv(price,period)
    MinL=llv(price,period)
    V1=sub(price,MinL)
    V2=sub(MaxH,MinL)
    V3=div(V1,V2)
    V4=sub(V3,0.5)
    V5=mult(V4,0.66)
    V6=mult(0.67,aref(V5,1))
    V7=add(V5,V6)

    Vres= if(gt(V7,0.99),0.999,if(lt(V7,-0.99),-0.999,V7))

    F1=add(1,Vres)
    F2=sub(1,Vres)
    F3=div(F1,F3)
    F4=mult(0.5,log(F3))
    F5=mult(0.5,aref(F4))
    F6=add(F4,F5)

    F6
    ----
    Intressant om detta gick att få till i NAT.
    /Gustaf

  • #2
    Borde gå att lösa, har du någon screenshot på hur den ser ut? Skulle sitta fint med en formel också, det är lite otydligt exakt vad som menas med _Prev i koden ovan. Om det är förra perioden av värdet osv.

    Comment


    • #3
      Jag tolkar Prev som förra perioden av värdet. Det blir komplicerat när förra perioden ska ingå i beräkningen av nuvarande för man måste ju börja någonstans. Trixade du inte med sånt med Heikin-stapel-signal-scriptet?

      Bättre formel har jag inte lyckats hitta men här är en annan variant på koden från Ehlers originaldokument som finns på denna länk:

      http://www.tradingsystemlab.com/file...0Transform.pdf
      --
      Inputs: Price((H+L)/2),
      Len(10);
      Vars: MaxH(0),
      MinL(0),
      Fish(0);
      MaxH = Highest(Price, Len);
      MinL = Lowest(Price, Len);
      Value1 = .33*2*((Price - MinL)/(MaxH - MinL) - .5) + .67*Value1[1];
      If Value1 > .99 then Value1 = .999;
      If Value1 < -.99 then Value1 = -.999;
      Fish = .5*Log((1 + Value1)/(1 - Value1)) + .5*Fish[1];
      Plot1(Fish, "Fisher");
      Plot2(Fish[1], "Trigger");
      Figure 4. EasyLanguage Code to Normal Price to a Ten Day Channel
      and Compute Its Fisher Transform

      Hur man får fram den röda triggerkurvan är beskrivet i Ehlers dokument, det är en ROC tydligen.
      ----

      Bifogar en screenshot från CMC. Det finns också en bra bild med jämförelse med MACD i Ehler-dokumentet
      Attached Files

      Comment


      • #4
        Här är ett försök, har inte dubbelcheckat allt:

        period:=10
        price=div(add(h,l),2)
        MaxH=hhv(price,period)
        MinL=llv(price,period)
        value_nu=mult(0.33,mult(2,sub(div(sub(price,MinL),sub(MaxH,MinL)),0.5)))
        value_prev=mult(0.33,mult(2,sub(div(sub(aref(price,1),aref(MinL,1)),sub(aref(MaxH,1),aref(MinL,1))),0.5)))
        value_tot=add(value_nu,mult(0.67,value_prev))
        within1=min(mx(value_tot,-1),1)
        fish_nu=mult(0.5,log(div(add(1,within1),sub(1,within1))))
        fish_prev=aref(mult(0.5,log(div(add(1,within1),sub(1,within1)))),1)
        fish_tot=add(fish_nu,mult(0.5,fish_prev))
        draw(fish_tot,2,dgaafw)
        draw(if(lt(fish_tot,0),fish_tot,0),3,rpafw)
        add(fish_tot)
        Attached Files

        Comment


        • #5
          Ser man på! Det löste du ju galant.
          Jag ska jämföra lite kurvor i morgon men det ser ju väldigt lovande ut.
          Tackar så länge!
          /Gustaf

          Comment

          Working...
          X