Allmänt meddelande

Collapse
No announcement yet.

Adaptiv stochastic

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

  • #16
    Ast1:=mov(stoch(5),3,s)
    Periods:=10
    Direction:=Sub(Ast1,aRef(Ast1,periods))
    Volatility:=Sum(Abs(ROC(A,1,$)),periods)
    ExR:=Abs(Div(Direction,Volatility))
    FastSC:=Div(2,Add(2,1))
    SlowSC:=Div(2,Add(30,1))
    PREV:=getval(3)
    SSC=Add(Mult(ExR,Sub(FastSC,SlowSC)),SlowSC)
    Constant=Power(SSC,2)
    ifja=Add(aRef(ast1,1),mult(constant,sub(Ast1,aRef(Ast1,1))))
    ifnej=Add(PREV,Mult(constant,Sub(Ast1,PREV)))
    retval(If(Eqv(Cum(1),Add(periods,1)),ifja,ifnej),3)

    Jag förstår dock inte vad if()-satsen skall göra med cum(1) egentligen. Det är ett värde som ökar ett steg för varje period i grafen, dvs den ger sant en gång per graf bara.

    Det känns som något saknas.

    Men det torde göra vad jag kan läsa ut i alla fall.

    Comment


    • #17
      Kom ihåg...

      Alla indikatorer som använder PREV dvs förgående periods värde blir olika för var i en graf man börjar.

      Så det kan hur som helst inte användas för bevakning i detta utförande.

      Comment


      • #18
        Hela artickeln finns på denna länken jag förstår inte tyska så jag klippte det engelsk alt.

        http://www.terminmarktwelt.de/cgi-bi...CP=2&F=MIJ#new

        Comment


        • #19
          Chandes Adaptiv Stochastic

          lenmax:=28
          lenmin:=7
          v1:=stdev(c,20)
          v2:=hhv(v1,20)
          v3:=llv(v1,20)
          v4:=if(gt(v2,v3),Div(Sub(v1,v3),Sub(v2,v3)),0)
          i30(
          currlen=mn(Int(Add(lenmin,Mult(Sub(lenmax,lenmin),Sub(1,v4)))),lenmax)
          hh1=hhv(h,currlen:lenmax)
          ll1=llv(l,currlen:lenmax)
          stoch=if(Gt(Sub(hh1,ll1),0),Mult(Div(Sub(c,ll1),Sub(hh1,ll1)),100),100)
          draw(mov(stoch,3,e),3,rsv)
          add(stoch,0)
          )

          Stochastic varierar mellan 7-perioders till 28-perioders beroende på standardavvikelsen över 20 perioder(en slags stochastic över standardavikelsen också styr vanlig stochastic).

          Skala: 0-100
          Röd exponentiellt medel på stochastic
          Annars sätt blå på scriptet så stämmer det med bilden.
          Attached Files

          Comment


          • #20
            Rättelse...

            Första scriptet rätta raden

            Volatility:=Sum(Abs(ROC(A,1,$)),periods)

            till

            Volatility:=Sum(Abs(ROC(Ast1,1,$)),periods)

            så ser det lite vettigare ut.

            Comment


            • #21
              lfm,
              Den där bilden adstoch.gif ser inte riktigt klok ut. På högersidan är kurvorna inte en funktion av tiden längre eftersom de svänger av i en böj åt vänster. Rättades det till av ditt tillägg?

              Comment


              • #22
                Nej, rättelsen var till andra scriptet högre upp.

                Jag såg också en lustig knorr där. Vet inte hur det går till.

                Comment


                • #23
                  Har ett minne av att jag jobbade en helg och debuggade lite saker och jag tror jag har data i min databas på en dag som inte är börsdag.

                  Så hos er med normala data skall det inte blir något sådant.

                  Comment


                  • #24
                    Hittade denna tråd och tyckte den var väldigt intressant, men svårbegriplig...

                    Om vi börjar med detta:

                    "Std5:=STDEV(C,5)
                    AvgStd:=MOV(Std5,10,S)
                    StdDiff:=DIV(Std5,AvgStd)
                    Txd:=MX(MN(DIV(14,StdDiff),30),5)
                    {Säkrar också att mellan 5 och 30}
                    RSI(Txd:30)
                    Beroende på standardavvikelsen så väljer man periodtid mellan 5 och 30 på RSI()."

                    1a.
                    Td:=MX(MN(DIV(14,StdDiff),30),5)
                    Kan nån förklara vad denna rad betyder? Om jag vill att periodtiden istället ska variera mellan t.ex 15 och 25, byter jag bara ut siffrorna där det står 5 och 30 då?
                    1b.
                    RSI(Txd:30)
                    Vad gör Txd:30 uttrycket, har aldrig sett med kolon på så sätt? Om jag istället vill köra på Stochastic, är det då bara att byta ut Rsi på sista raden mot Stoch?
                    1c.
                    Gör detta script att periodtiden varieras i steg om 1, mellan 5 och 30? Om standardavvikelsen ökar, ökar eller minskar periodtiden då?
                    1d.
                    Om jag vill testa lite olika inställningar på hur detta script arbetar, vilket/vilka värden är då lämpligast att labba med?

                    Sen detta:

                    max:=Hhv(Mov(c,3,e),12)
                    min:=Llv(Mov(c,3,e),12)
                    diff:=Mov(Sub(max,min),5,s)
                    speed:=Mn(Add(3,Mult(diff,Mult(0.2,diff))),100)
                    adaptstoch:=Stoc(c,speed:100)
                    köp:=Gt(adaptstoch,60)
                    sälj:=Lt(adaptstoch,40)

                    2a.
                    speed:=Mn(Add(3,Mult(diff,Mult(0.2,diff))),100)
                    Kan nån förklara vad denna rad betyder? Kan jag på nåt sätt begränsa här, eller förstå, inom vilket intervall periodtiden rör sig?
                    2b.
                    Om jag vill testa lite olika inställningar på hur detta script arbetar, vilket/vilka värden är då lämpligast att labba med?

                    Mvh Emil

                    Comment


                    • #25
                      Hej Emil!

                      Den nedersta delen är ett "tidigt" experiment med adaptiv stochastic, det går att få till riktigt bra med lite labbande.

                      max:=Hhv(Mov(c,3,e),12)
                      min:=Llv(Mov(c,3,e),12)
                      diff:=Mov(Sub(max,min),5,s)
                      speed:=Mn(Add(3,Mult(diff,Mult(0.2,diff))),100)
                      adaptstoch:=Stoc(c,speed:100)
                      köp:=Gt(adaptstoch,60)
                      sälj:=Lt(adaptstoch,40)

                      Raden:

                      speed:=Mn(Add(3,Mult(diff,Mult(0.2,diff))),100)

                      gör själva beräkningen, och värdet begränsas till max 100. Minsta möjliga värde blir 3.

                      Koefficienten på 0.2 är ju högintressant att labba med, och givetvis periodlängden också. Väljer man att rita ut kurvan "adaptstoch" så ser man tydligare vad man håller på med.

                      Comment


                      • #26
                        Goddag Rikard!

                        Hmm, lägg gärna ut ett "sent" experiment...

                        Grejen är att jag har ett script som ger bäst resultat vid periodlängd 20 (vid bara en periodlängd). Sen har jag testat med 2 ytterligare periodlängder som väljs in beroende på volatiliteten, med lite bättre resultat. Så nånstans mellan 15 och 25 skulle nog vara intressant att prova den adaptiva stochasticen. Kan jag åstadkomma det genom att byta siffror:
                        speed:=Mn(Add(15,Mult(diff,Mult(0.2,diff))),25)

                        Såg att det stod "Stoc" på ett ställe, inte "Stoch" fast det kanske inte spelar nån roll?

                        Mvh Emil

                        (Vill gärna förstå vad scripten gör så mina frågor i inlägget ovan gäller fortfarande!)

                        Comment


                        • #27
                          Sura gubben skulle inte va med i inlägget...

                          Comment


                          • #28
                            1a:

                            Td:=MX(MN(DIV(14,StdDiff),30),5)

                            Det stämmer som du säger, byt ut 30 och 5 för att lägga annan limit på värdena som bildas.

                            Så du filtrerar fram värden via mx() som bestämmer det största av värdet och 5, och mn() som bestämmer det minsta av värdet och 30.

                            1b:
                            RSI(Txd:30)


                            När man i en funktion för periodparameter har ett variabelt värde som genereras dynamiskt när scriptet körs så behöver man tala om för kompilatorn det största värde som kan förekomma.

                            Det gör man med ett kolon och maxvärdet på periodparametern.

                            Så det går att göra var som helst i ett script med vilken periodparameter som helst till vilken funktion som helst. Så att göra med stoch() går bra.

                            Max 10 st kolon per script kan du använda som det är nu.

                            Andra parametrar som inte anger period behöver man aldrig göra sådant.

                            1c:
                            Du får gå bakvägen och se på olika delar i formeln om värdet ökar eller minskar. I detta fallet minskar periodvärdet med ökat standardavvikelse så vitt jag kan se.

                            Sedan hur värdet variera, om det sker i steg om 1 eller inte beror ju helt på formeln och kursutvecklingen också för den delen.


                            1d:

                            Formeln som styr dynamiken är ju kärnan i scriptets anpassbarhet så hur snabbt periodvärden skall ändras med anledning av kursutvecklingen är hela hemligheten egentligen.

                            Sättet att prova ut detta blir ju nästan att köra med ett antal fasta stochastic och se i vilken typ av börs som periodvärdet borde öka eller minska och försöka stämma av en formel som justerar detta.

                            Genom systematiskt arbete med detta kommer man framåt.

                            Det generella problemet man ofta vill justera för är ju att en indikator hamnar i otakt med börsen. En stochastic eller vilken indikator som helst funkar ju ett tag i en vissa börs, men inte en annan. För medelvärden är det ofta så också. Så att justera en indikator så den anpassar sig till börsen på rätt sätt är det stora jobbet. Men lyckas man är ju belöningen stor.

                            Att ha en dynamiskt föränderlig period(som scripten ovan) är bland det svåraste att testa fram. En enklare start är att ha 2-3 fasta värden man väljer mellan för olika börser. Att växla mellan två olika beroende på om det är stark trend eller mer sidledes börs är en bra start. Så om man bestämmer på vilken sikt man handlar, och sedan skapar en indikator för att bestämma om man har trend på den sikt man handlar, och därmed kunna växla strategi när inte trend längre råder är en bra grundprincip att starta med.

                            Att på måfå variera lite värden i de dynamiskt justerbara som ovan kan man förståss göra, men att lyckas utan ordentlig research är nog liten chans.

                            Grunden kan i alla fall vara som jag nämnde att kolla med några extremvärden, typ 5 och 30 som ovan, och göra fasta indikatorer på dessa värden och sedan titta i grafer var den ena eller andra indikatorn funkar bäst.

                            Comment

                            Working...
                            X