Allmänt meddelande

Collapse
No announcement yet.

Simulera take profit

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

  • Simulera take profit

    Jag använder den vackra flytande stoplossen för backtestning, som du gjort Rikard, lite då och då. Tänkte jag skulle förvandla den till en enkel exit som liknar "take profit" men lyckas inte riktigt.

    Jag vill alltså kunna fylla i att jag vill ha exit efter +5 punkter och detta ska vara möjligt att backtesta. Kan någon hjälpa mig på traven?
    "Nothing noble is done without risk." - André Gide

  • #2
    Du kan i princip använda stoppscriptet rakt av och antingen ändra villkoret för stoploss så att det blir en takeprofit, alternativt lägga till en Or-sats och lägga takeprofit-villkoret där.

    Det funkar utmärkt att simulera takeprofit!



    Ska se om jag hinner knåpa ihop ett exempel.

    /Rikard

    Comment


    • #3
      Tack så mycket, ska titta på det när jag har lite tid över. Det var så jag försökte göra men jag fick inte till det... Ska försöka igen med nytt mod och se om jag får till det.
      "Nothing noble is done without risk." - André Gide

      Comment


      • #4
        Sådär, nu ska vi se:

        Jag gjorde ett enklast tänkbara entryscript med Macd(b) i 15-minuters upplösning som entry. Stoplossen måste jobba i samma upplösning för att entrysignalerna ska stämma hyggligt. Det kan ändå bli fel eftersom slutkursen från signalstapeln används, och om det blev signal tidigt i stapeln kanske priset har stuckit iväg innan den är slut. Men det ger ändå än hyfsat bra uppfattning om hur bra strategin fungerar.

        "sellprofit" är alltså signalen för takeprofit, och du kan se att den är OR-kopplad till "stoppsälj" som är den flytande stoppen. Båda finns alltså med, men om du bara vill använda takeprofit går det ju att förenkla scriptet mer.



        Här är scripten:

        sl) 15 min Macd köp

        i15(
        Mult(Macd(b),15)
        )



        Och stoppen:


        sl) Flytstopp inkl 15 min Macd köp och tp

        köpentry:=Macd(b)

        { STOPLOSS }
        flytnivå:=0.99
        takeprofit:=5
        bakåt1:=480
        i15(
        lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
        efterinköp=if(ge(d,getval(3)),h,0)
        highlevelb=hhv(efterinköp,bakåt1)
        stoppok=gt(getval(3),getval(4))
        köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
        stoppkurva=mult(highlevelb,flytnivå)
        stoppsälj=and(stoppok,le(l,stoppkurva))
        sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
        lasttrades=Retval(if(And(Or(sellprofit,stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
        draw(if(stoppok,stoppkurva,0),2,rqb)
        mult(stoppsälj,25)
        )
        Attached Files

        Comment


        • #5
          Tack för snabbt svar och för att du gav ett exempel!

          Jag har testat detta och i princip bara klistrat in de olika delarna från mitt script. Jag har dock ändrat ordningen lite för att klara kompileringen. Får dock inte take profit delen att lösa ut som den ska. Vad kan vara fel?

          Här kommer en översikt på hur jag gjort:

          {Köpparametrar}
          Sper:=7
          ...

          {Exitparametrar}
          flytnivå:=0.99
          takeprofit:=1
          bakåt1:=480

          {Köp}
          i5(
          faststigande=Gt(s2,Aref(s2,1))
          ...
          köpentry=And(And(lagra,newhigh),slowstigande)

          {STOPLOSS}
          lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
          efterinköp=if(ge(d,getval(3)),h,0)
          highlevelb=hhv(efterinköp,bakåt1)
          stoppok=gt(getval(3),getval(4))
          köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
          stoppkurva=mult(highlevelb,flytnivå)
          stoppsälj=and(stoppok,le(l,stoppkurva))
          sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
          lasttrades=Retval(if(And(Or(sellprofit,stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
          draw(if(stoppok,stoppkurva,0),2,rqb)
          mult(stoppsälj,25)
          )
          "Nothing noble is done without risk." - André Gide

          Comment


          • #6
            Kör du entryscriptet och stoppen i samma upplösning? Det kan också bli ganska grova fel med 1 enda punkt takeprofit. Funkar det inte alls?

            Comment


            • #7
              Ja, de har samma upplösning.

              Det råkade bara vara 1 punkt när jag klistrade in ovanstående. Om jag exempelvis kör med 5 punkters take profit får jag ändå avslut på ex. 10 punkter plus. Så min uppfattning är att take profit delen inte funkar som det är tänkt.

              Det konstiga är att signalerna verkar bara vara vid flytande stopp men den röda linjen "går ner" även vid andra tillfällen och då verkar det vara take profit som löst ut. Men ingen signal tyvärr!
              Last edited by SalK; 2009-12-02, 08:00.
              "Nothing noble is done without risk." - André Gide

              Comment


              • #8
                Även när jag använder "ditt köpscript" och mitt min omgjorda take profit verkar den inte bry sig om vad jag sätter för take profit nivå. Den röda linjen går både upp och ner när det inte är signal. Precis som innan verkar det som om det bara blir exit när kursen träffar flytande stopp inte vid take profit. Dock tror jag att linjen "går ner" vid dessa tillfällen. Något är tyvärr galet?
                "Nothing noble is done without risk." - André Gide

                Comment


                • #9
                  Aha!

                  Hittade ett fel, jag hade missat att koppla villkoret "sellprofit", sista raden på stoppscriptet ska vara:

                  mult(Or(stoppsälj,sellprofit),25)

                  Antingen får man signal från stoppsälj eller från sellprofit. Nu stämmer det med den röda kurvan också.

                  Notera att det mycket väl kan bli mer än 5 punkter (om man satt take profit till 5 punkter), tex om scriptet slår till först dagen efter och kursen öppnar några punkter uppåt.

                  Comment


                  • #10
                    Tusen tack! Enkelt fel men jag såg det inte vid en första koll... Nu funkar det kanon!

                    Nu behöver jag bara lägga in exit vid dagens slut och mitt exit script oxå... Hoppas jag får till allt!

                    Om det inte är jätte mycket jobb för dig skulle jag bli jätte glad för att få takeprofit delen renodlad i ett script så det inte blir så mycket att hålla reda på. Jag vågar inte röra om för mycket i ditt script eftersom jag inte har förståelse för alla delar.
                    "Nothing noble is done without risk." - André Gide

                    Comment


                    • #11
                      Här är en avskalad version som bara slår till vid take profit eller vid stängning.

                      köpentry:=Macd(b)
                      stängning:=le(mult(1440,sub(market(c),frac(date()))),13)
                      { TAKEPROFIT }
                      takeprofit:=3 {opt(3,10,1)}
                      bakåt1:=480
                      i15(
                      lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
                      stoppok=gt(getval(3),getval(4))
                      köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
                      sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
                      lasttrades=Retval(if(And(Or(stängning,sellprofit),gt(getval(3),getval(4))),D,Getval(4)),4)
                      mult(Or(stängning,sellprofit),5)
                      )

                      Comment


                      • #12
                        Åhh, tack så hemskt mycket! Vad snällt av dig... Ska testa det så fort jag får tillfälle!
                        "Nothing noble is done without risk." - André Gide

                        Comment


                        • #13
                          Hur skulle takeprofit se ut för blankning?

                          Förstår ganska bra vad som behöver ändras men är rädd att missa något eftersom jag inte fullt ut förstår alla delar.

                          Tack på förhand!
                          "Nothing noble is done without risk." - André Gide

                          Comment


                          • #14
                            blankentry:=ditt blankscript
                            stängning:=le(mult(1440,sub(market(c),frac(date()))),13)
                            { TAKEPROFIT }
                            takeprofit:=1
                            bakåt1:=480
                            i15(
                            lasttrades=Retval(if(And(blankentry,or(ge(getval(3),getval(4)),eqv(getval(3),0))),D,Getval(4)),4)
                            stoppok=gt(getval(4),getval(3))
                            blankpris=find(And(ge(d,getval(4)),lt(ref(d,1),getval(4))),bakåt1,c,1)
                            coverprofit=and(stoppok,Le(c,Sub(blankpris,takeprofit)))
                            lasttradek=Retval(if(And(Or(stängning,coverprofit),gt(getval(4),getval(3))),D,Getval(3)),3)
                            mult(Or(stängning,coverprofit),25)
                            )


                            Comment

                            Working...
                            X