Allmänt meddelande

Collapse
No announcement yet.

Adaptive Ma

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

  • Adaptive Ma

    Är det ngn som har tagit fram formel för Adaptive Moving Average

    Adaptive Moving Average enl följande


    Direction = Price - price(n) ; where n = AMA Period
    Volatility = Sum(abs(price - price[1], n)
    Effeciency Ratio (ER) = Direction / Volatility
    Fast Smoothing Constant (FastC) = 2/(p + 1) ; where p = FSC Period =( p=2 ger 0,6667)
    Slow Smoothing Constant (SlowC) = 2/(q + 1) ; where q = FSC Period=(q=20 ger 0,0645)
    Scaled Smoothing Constant (SSC) = ER(FastC - SlowC) + SlowC
    c = SSC*SSC
    AMA = AMA[1] + c(price - AMA[1])

    Kunde vara intressant att pröva i dessa svängiga tider.

  • #2
    Ser klart intressant ut! Vi är tillbaka på fredag efter några semesterdagar och tar itu med frågorna då.

    Comment


    • #3
      Artikel ang AMA

      Här finns det lite mer att läsa om AMA

      http://www.forexfactory.com/attachme...5&d=1154858708

      Comment


      • #4
        ...länken funkar inte?

        Comment


        • #5
          Rätt länk AMA

          Sorry

          www.forexfactory.com/showthread.php?t=6868[/url]

          och hämta pdf som finns i inlägg 13 nvwine

          Comment


          • #6
            Ser intressant ut!
            "Nothing noble is done without risk." - André Gide

            Comment


            • #7
              { AMA The adaptive moving average }

              {Medelvärdets längd}
              period:=22

              direction:=abs(sub(C,ref(C,period)))
              diff:=abs(sub(C,ref(C,1)))
              volatility:=sum(diff,period)
              ratio:=div(direction,volatility)

              fast:=div(2,add(2,1))
              slow:=div(2,add(30,1))

              smoothing= power(add(mult(ratio,sub(fast,slow)),slow),2)

              AMA=retval(add(mult(smoothing,sub(C,getval(2))),getval(2)),2)

              AMA
              {kursstaplar}
              {enligt kurser}
              Smålänning av födsel och ohejdad vana.

              Comment


              • #8
                Snyggt jobbat!

                Comment


                • #9
                  Jag försöker mig på något i stil med stiger=gt(ama,aref(ama,1)) men det känns inte som om det fungerar, alls. Har jag missat något?

                  Comment


                  • #10
                    Du använder dig av ett väldigt snabbt villkor. Kurvan som man ser i diagrammet innehåller små mikroförändringar som kommer att upptäckas av ditt villkor.
                    Använd dig av ett villkor som du kan styra själv t.ex Roc()

                    Här har jag lagt till några villkor i scriptet som du kan laborera med:


                    { AMA The adaptive moving average }

                    {Medelvärdets längd}
                    period:=22

                    direction:=abs(sub(C,ref(C,period)))
                    diff:=abs(sub(C,ref(C,1)))
                    volatility:=sum(diff,period)
                    ratio:=div(direction,volatility)

                    fast:=div(2,add(2,1))
                    slow:=div(2,add(30,1))

                    i15(
                    smoothing= power(add(mult(ratio,sub(fast,slow)),slow),2)
                    AMA=retval(add(mult(smoothing,sub(C,getval(2))),getval(2)),2)

                    upp=gt(roc(ama,2,%),0.04)
                    ned=lt(roc(ama,2,%),-0.06)

                    draw(ama,2,rqb)
                    draw(mult(upp,10),3,bsbF)
                    draw(mult(ned,5),4,rsbF)

                    mult(0,1)
                    )

                    Comment


                    • #11
                      Problemet är att "flyktiga" celler används för att lagra värdet, och då finns ingen dataserie att kontrollera bakåt mot. Det är endast ett momentant värde som räknas fram för varje stapel, helt och hållet avsett för diagramritning, ej larmade signaler. Det går ju säkert att göra om scriptet för att kunna larma.

                      Comment


                      • #12
                        Ursprungligen postat av Rikard Nilsson Visa inlägg
                        ...och då finns ingen dataserie att kontrollera bakåt mot.
                        Rikard, menar du att det LillWicke skriver i inlägg 10 inte kommer fungera?

                        Comment


                        • #13
                          Ursprungligen postat av Christer Visa inlägg
                          Rikard, menar du att det LillWicke skriver i inlägg 10 inte kommer fungera?
                          Det är riktigt som Rikard skriver. Tänkte inte på att retval() var inblandat när jag skrev koden.

                          Scriptet fungerar i diagram och man kan där testa ut hur känsligt signalläge man vill ha. Men för skarpt läge i live måste man skriva om koden så att retval() inte är inblandat.

                          Comment


                          • #14
                            OK. Ponera att jag tycker nedanstående script ser lovande ut. Går det att omvandla detta till ett skarpt script?

                            { AMA The adaptive moving average }

                            {Medelvärdets längd}
                            period:=22

                            direction:=abs(sub(C,ref(C,period)))
                            diff:=abs(sub(C,ref(C,1)))
                            volatility:=sum(diff,period)
                            ratio:=div(direction,volatility)

                            fast:=div(2,add(2,1))
                            slow:=div(2,add(30,1))

                            i30(
                            smoothing= power(add(mult(ratio,sub(fast,slow)),slow),2)
                            AMA=retval(add(mult(smoothing,sub(C,getval(2))),getval(2)),2)

                            upp=gt(roc(ama,2,%),0.07)
                            ned=lt(roc(ama,2,%),-0.07)

                            draw(ama,2,rqb)
                            draw(mult(upp,10),3,bsbF)
                            draw(mult(ned,5),4,rsbF)

                            add(0,0)
                            )

                            Comment


                            • #15
                              Har tittat lite närmare på det här nu och jag tror faktiskt inte att det finns någon lösning på problemet i NAT-kod för närvarande, hoppas jag har fel. Det första man kommer att tänka på är globala, men dessa producerar ingen dataserie så då faller de ju bort.

                              Problemet är den här raden:
                              AMA = AMA[1] + c(price - AMA[1])

                              Vilket är ett exempel på en klassisk serieutveckling, där man räknar ut AMA genom att addera ett värde till AMA självt en period bakåt. I NAT skulle det behövas en while/wend, eller for/next funktion för detta, alternativt en egen serie-funktion. Det får vi hoppas kommer så småningom för detta skulle verkligen lyfta scriptningen till nya höjder.

                              Eftersom AMA är ett så fruktansvärt bra verktyg för att dedikera en platt marknad skulle man också kunna tänka sig att denna funktion läggs in som standard i NAT. Den är väldigt lätt att programmera med C++ och skulle inte ta så lång tid att lägga till.

                              Vi får se vad Rikard säger om detta.

                              Comment

                              Working...
                              X