Allmänt meddelande

Collapse
No announcement yet.

Dynamisk Take Profit

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

  • Dynamisk Take Profit

    Jag funderar på att bygga ett skript som är en kombination av Take Profit och Stoploss mini.

    Min tanke är att man ställer in en nivå där man aktiverar den dynamiska stoplossen. Stoplossen kan man då sätta snävt på t.ex. -2 punkter. På detta sätt så låser man in en vinst men man får samtidigt vara med på eventuell fortsatt uppgång. Går kursen upp till +12 punkter och sedan ner så säljer den (eller köper vid korta positioner) på +10 punkter.

    Min fråga till er i forumet är om ni tror detta skulle vara något bra? Vi ser ju flera strategier som har bra ingång men som inte säljer i tid...

    Min andra fråga är om det är någon annan som redan har gjort något liknande? Om inte kanske vi kan bygga en tillsammans? Jag ska se om jag kan skripta ihop något i helgen...



    Anders

  • #2
    Söker också take profit

    Hej,

    jag söker också en take profit som du beskriver och mycket intresserad.
    Har dock inte hunnit lära mig skriptspråket...

    Comment


    • #3
      I princip skulle man kunna lägga till ett villkor i en kopia av Stoploss Mini som säger att om maxvinst sedan köp har nått x antal punkter/kronor så tillåts stoppen agera enligt de vanliga inställningarna, tex 2 punkter. Annars förblir den inaktiv. Vill man ändå ha en flytande stoploss på annan nivå kan man ju koppla den vanliga Stoploss Mini. Nedan ett exempel där "triggnivå" jämförs med "högstav" vilket är högsta uppmätta vinst sedan senaste köp. Om den överstiger triggvinst blir "tillåt" sant och stoppen kan jobba. Annars händer inget.




      { Stoploss Mini Long }
      { 111022 }
      elastisk:=1 { 1=JA 0=NEJ }
      triggvinst:=8 {triggnivå för flytstopp }
      stoppgräns1:=Abs(ScrPar(1))
      målantal:=ScrPar(2)
      lastbuy:=LastTrade(B,P)
      innehav:=Portfolio(v)
      mv1:=Mov(b,2,s)
      mv2:=Mov(s,2,s)
      fastmfi:=Mov(LinReg(Mfi(3),4),4,e)
      mfiner:=Lt(LlvBars(fastmfi,2),1)
      trans_ok:=gt(lasttrade(b,d),lasttrade(s,d))
      i3(
      triggnivå=Sub(lastbuy,stoppgräns1)
      start=if(ge(d,LastTrade(b,d)),mv1,0)
      maxhittills=hhv(start,5000)
      högstav=Sub(maxhittills,lastbuy)
      tillåt=gt(högstav,triggvinst)

      level1=Sub(maxhittills,stoppgräns1)
      flytstopp1=And(And(Lt(b,level1),Lt(mv1,level1)),And(Lt(s,level1),Lt(mv2,level1)))
      flytstopp2=And(Lt(b,level1),Lt(s,level1))
      flytstopp3=If(elastisk,flytstopp1,flytstopp2)
      Draw(If(Gt(innehav,0),level1,0),9,rqb)
      signal1=And(And(or(mfiner,Not(elastisk)),flytstopp3),Gt(innehav,målantal))
      signal2=And(And(signal1,Gt(stoppgräns1,0)),trans_ok)
      signal3=and(signal2,tillåt)
      Mult(signal3,10)

      )

      Comment


      • #4
        Sådär nu har jag byggt en kopia av Terminatorns ordermodell och lagt in ovanstående skript som sekvens2 som hoppar vidare till sekvens tre som enbart består av "innehav:=Gt(Portfolio(v),0)".

        Om inte jag har gjort något fel nu så borde den "vanliga" Terminatorn ta en lång position och stega vidare till sekvens2 som när den når triggvinst som jag tänkte börja att ställa in på 7 aktiveras och säljer innehavet om den går ner mer än 2 punkter. Vid en försäljning hoppar den vidare till sekvens två som då väntar på ett negativt innehav.

        Vad är lämplig nivå på triggvinst och stoploss nivån? Jag tänkte mig 7 respektive 2?

        Naturligtvis har jag även ändrat Terminatorns ordermodell för korta innehav också...

        En liten varning är att det kommer behövas förändringar av ovanstående skript om man vill kunna använda "vanliga" stoploss modellen med andra värden under indataskript fliken.


        Låt oss hoppas att detta fungerar nu och ger oss en fin kassako...


        Anders

        Comment


        • #5
          Ursprungligen postat av Tradern Visa inlägg
          Låt oss hoppas att detta fungerar nu och ger oss en fin kassako...
          Anders
          Hej,

          hur gick det med dynamisk take profit, andvänder du den och vad blev dina erfarenheter?

          Jag funderar själv igen på något liknande, hade funderat på att aktivera TP t.ex. när stochastic %K korsar överifrån %D eller likande. Men vet inte om det går att backtesta på något sätt så man kan jämföra resultat och vet om det förbättrar eller försämrar..

          Ser att Stopploss mini nu är i version 120209 med nya villkor jämfört med exempel i denne tråd.

          Comment


          • #6
            Hej

            Jag ser att jag har missat svara på denna...

            Jag testade den ett tag och tycker att det fungerade rätt bra. Men tyvärr så kan den inte göra under på en mindre bra fungerande modell...

            Comment


            • #7
              Jag skulle egentligen vilja ha en dynamisk take profit på 3 punkter med krav att först måste man uppnå 4 punkters vinst. Om man sedan faller ned till 3 punkter så tar man hem vinsten men om man går upp säg till 5 punkter så måste man ner till 3,5 punkter för att ta hem vinsten. Om man uppnår 6 punkters vinst så måste man ner till 4 punkter för att ta hem vinsten, uppnår man 8 punkter så måste man ner till 5 punkter osv. Dvs man blir generösare att tillåta antal punkter under maxhittills ju högre vinst man ligger på innan take profit slår till. Denna take profit skall inte vara elastisk utan snabb. Elastisiteten får man genom att den ökade toleransen enligt ovan. Skulle vilja ha denna dynamiska Take profit att kombineras med Darth Vader, men tyvärr så ligger köp/säljsignalen konstant så Darth Vader kan inte kombineras med andra script i dagsläget.

              Jörgen säger på Rankors Forum:
              "När vi körde som Autostock Approved hade Autostock en egen algoritm med 5 minuters duration på signalerna och sedan kunde kunder trada fritt, släpper Autostock det scriptet fritt kan vi använda det för Omx Darth Vader."

              För att Darth Vader skall fungera måste även en bättre Stop Loss till. Men detta kan man inte själv komplettera med pga ovanstående.
              mvh
              Bertil

              Comment


              • #8
                Hej Rikard,
                tack för ditt svar på email, där jag frågade om nedanstående script verkade se ok ut. Jag har försökt labba och "lura" skriptet som du föreslog, genom att sätta innehavskontrollen (innehav:=1)
                Men det ger inga signaler. Har även provat SL mini med innehavskontrol=1, inte heller några signaler.
                Jag får dock SL skriptet från 111022 att fungera med flaggor, tidigare i denna tråd.

                Kan du se om något mer behöver "luras" eller om det är generellt fel?

                Kod:
                { Dynamisk TP based on Stoploss Mini Long }
                { SL Mini 120209 & Modified}
                
                elastisk:=1 { 1=JA 0=NEJ }
                [B]triggvinst:=4 {triggnivå för flytstopp, dyn TP }[/B]
                [B]stoppgräns1:=3 {Dyn TP, hardcode}[/B]
                
                tid_innan_stäng:=6 {minuter innan stängning}
                
                stängning1:=ge(mult(1440,sub(market(c),frac(date()))),tid_innan_stäng)
                
                [B]{stoppgräns1:=Abs(ScrPar(1))} {comment out, avoid conflict with SL mini}
                [/B]
                målantal:=ScrPar(2)
                
                lastbuy:=LastTrade(B,P)
                
                innehav:=Portfolio(v)
                
                mv1:=Mov(b,2,s)
                
                mv2:=Mov(s,2,s)
                
                fastmfi:=Mov(LinReg(Mfi(3),4),4,e)
                
                mfiner:=Lt(LlvBars(fastmfi,2),1)
                
                tidspärr1:=1
                
                lt1:=LastTrade(B,D)
                
                lt2:=Portfolio(D)
                
                minSedanKöp:=Mult(Sub(Date(),lt1),1440)
                
                minSedanTrans:=Mult(Sub(Date(),lt2),1440)
                
                delay_ok:=gt(minSedanKöp,tidspärr1)
                
                trans_ok:=gt(minSedanTrans,tidspärr1)
                
                account_ok:=not(eqv(cash(d),0))
                
                inpådagen:=gt(frac(date()),0.377)
                
                i3(
                
                triggnivå=Sub(lastbuy,stoppgräns1)
                
                start=if(ge(d,LastTrade(b,d)),mv1,0)
                
                maxhittills=hhv(start,5000)
                
                högstav=Sub(maxhittills,lastbuy)
                
                {Dyn TP new line}
                [B]tillåt=gt(högstav,triggvinst) [/B]
                
                level1=Sub(maxhittills,stoppgräns1)
                
                flytstopp1=And(And(Lt(b,level1),Lt(mv1,level1)),And(Lt(s,level1),Lt(mv2,level1)))
                
                flytstopp2=And(Lt(b,level1),Lt(s,level1))
                
                flytstopp3=If(elastisk,flytstopp1,flytstopp2)
                
                Draw(If(and(and(trans_ok,and(delay_ok,account_ok)),Gt(innehav,målantal)),level1,0),9,rqb)
                
                signal1=And(And(or(mfiner,Not(elastisk)),flytstopp3),Gt(innehav,målantal))
                
                signal2=And(And(And(signal1,Gt(stoppgräns1,0)),delay_ok),account_ok)
                
                signal3=and(and(signal2,inpådagen),stängning1)
                
                {Dyn TP added}
                [B]signal4=and(signal3,tillåt)[/B]
                
                {Dyn tp updated}
                [B]Mult(signal4,10)[/B] 
                
                )
                Last edited by jimmy; 2012-04-12, 22:14.

                Comment


                • #9
                  Hm, hittar inga direkta fel. Möjligen kanske du labbat efter börsstängning och då behöver även villkoret "stängning1" kopplas förbi eftersom det blir falskt 6 min innan stängning.

                  För övrigt ser Darth Vader ut att vara en rip-off av de dynamiska trendlinje-scripten som redan ligger i NAT, åtminstone om man tittar på chartet. Något villkor är ju ändrat, men det känns som en halvfärdig strategi faktiskt.

                  Comment


                  • #10
                    Ursprungligen postat av Bertil Visa inlägg
                    Jag skulle egentligen vilja ha en dynamisk take profit på 3 punkter med krav att först måste man uppnå 4 punkters vinst.
                    Bertil
                    Hej Bertil, det du beskriver låter som den dynamisk tp som diskuteras i tråden, men jag kanske missförstod?

                    Comment


                    • #11
                      Ursprungligen postat av jimmy Visa inlägg
                      Hej Bertil, det du beskriver låter som den dynamisk tp som diskuteras i tråden, men jag kanske missförstod?
                      Hej jimmy !
                      Ja det är en sådan dynamisk take profit som diskuteras i tråden fast med ytterligare en finess att då vinsten ökar så tillåter man större svängningar innan stop lossen löser ut.
                      mvh
                      Bertil

                      Comment


                      • #12
                        Det här med dynamisk take profit låter intressant. Någon som fått detta att fungera?

                        Comment


                        • #13
                          Det borde inte vara så svårt att få till, bara vi vet hur du vill att den ska fungera.

                          Man kan ju tänka sig att man använder någon teknisk indikator för att bestämma hur stor TP ska vara, tex ATR:

                          period:=5
                          level:=add(l,mult(atr(period),2.5))
                          tp:=llv(level,10)

                          Därefter går det att tex beräkna den i procent etc.

                          Comment


                          • #14
                            Hej!
                            Här är utdrag ur lite take profit kod som jag använder. OBS kan inte användas rakt av men ta med idéerna till din egen kod.
                            Koden är anpassad för tight handel med terminer. Då triggvinsten 1.5 punkter uppnås blir det intressant och om kursen faller härifrån säljer scriptet vid 1.5-0.5 = 1 punkt. Om däremot kursen ökar till 4 punkters vinst så blir den dynamiska stoppgränsen (4-1.5)/2 + 0.5 =1.25+0.5=1.75 Då slår take profit till vid 4-1.75=2.25 punkters vinst (i koden har jag även med 0.25 punkter som säkerhetsmarginal)
                            Max stoppgräns som jag tillåter är dock 5.

                            Då jag tittar på högsta kurs under intervallet sedan köp så använder jag mig av medelvärdet av köp och säljkurs, alltså inte avslut. Detta blir snabbare och mer rättvist då man annars inte vet om close sker mot köp eller sälj.
                            På slutet finns lite skräpkod som tittar på elastisk (ett arv från stoplossmini) som jag inte orkat att ta bort (funkar alltså inte med elastisk)

                            ---------------------------------------

                            bla bla

                            triggvinst:=1.5
                            stoppgräns:=0.5
                            stoppgränsmax:=5

                            i1(
                            mvnu=Div(Add(b,s),2)

                            start=if(ge(d,LastTrade(b,d)),mvnu,0)
                            maxhittills=hhv(start,2000)
                            högstav=Sub(maxhittills,lastbuy)
                            stoppgräns3=ADD(Sub(Div(Sub(högstav,triggvinst),2),0.25),stoppgräns)
                            stoppgräns2=IF(GE(stoppgräns3,stoppgränsmax),stoppgränsmax,stoppgräns3)
                            stoppgräns1=IF(GE(stoppgräns2,stoppgräns),stoppgräns2,stoppgräns)
                            triggnivå=Sub(lastbuy,stoppgräns1)

                            tillåt=gt(högstav,triggvinst)
                            level1=Sub(maxhittills,stoppgräns1)
                            level2=Add(lastbuy,Sub(triggvinst,stoppgräns))
                            flytstopp1=And(And(Lt(b,level1),Lt(mv1,level1)),And(Lt(s,level1),Lt(mv2,level1)))
                            flytstopp2=And(Lt(b,level1),Lt(level2,b))
                            flytstopp3=If(elastisk,flytstopp1,flytstopp2)

                            signal1=And(And(or(mfiner,Not(elastisk)),flytstopp3),Gt(innehav,målantal))
                            signal2=And(And(And(signal1,Gt(stoppgräns1,0)),delay_ok),account_ok)
                            signal3=and(and(signal2,inpådagen),stängning1)
                            signal4=and(signal3,tillåt)
                            Mult(signal4,10)
                            )

                            mvh
                            Bertil

                            Comment


                            • #15
                              Tack för era svar!

                              Det här med script och koder funkar inte inte riktigt i mitt huvud, men jag ska göra ett försök att lära mig genom att bygga upp just detta script


                              Finns det förresten någon bra nybörjarguide eller liknande som kan hjälpa mig att komma in i rätt tänk?

                              Comment

                              Working...
                              X