Allmänt meddelande

Collapse
No announcement yet.

Testa en strategi i analysbänken, 15 min breakout

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

  • Testa en strategi i analysbänken, 15 min breakout

    Hej!

    Jag försöker att få till en strategi som bygger på en breakout de första 15 minuterna av dagen och jag är ny i programmet sedan några dagar. För köp gäller följande:
    1) Om en 15min bar stänger över högsta kursen de första 15 minuterna så ska det köpas.
    2) SL är om en 15min bar stänger under lägsta kursen de första 15 minuterna av dagen.
    3) Profit target är halva baren (av den första 15 min baren) adderat från köp kursen.

    Hur får jag till detta mha av skript och eller ordermodeller så att man kan backtesta det på OMXS30?

    Skickar tre bilder på mitt försök hittills som inte ger några signaler eller så ger det alldeles för många signaler om jag lägger till ett motsvarande skript för säljsidan som finns för köp i analysbänken. Bild 3 visar signalen för köp som jag tycker inträffar då jag vill att den ska inträffa.

    i15(
    time1=mult(frac(d),1440)
    time2=le(time1,554)
    linje1=Retval(if(time2,h,Getval(5)),5)
    signal=and(and(aref(and(cross(c,linje1),gt(c,linje1)),1),1),Lt(Portfolio(v),1))
    draw(mult(signal,15),4,bsbF)
    mult(signal,15)
    )

    Hoppas på lite hjälp att komma vidare, håller på att läsa manual och andra forum inlägg också :-)

    Mvh
    Daniel
    Attached Files

  • #2
    Ska det tillåtas köp när som helst under dagen, max 1 gång eller liknande?

    Här är ett utkast på köpsidan som triggar köp direkt efter att en stapel stängt över högsta kursen 15 första minutrarna. Det görs bara om korsning skett stapeln innan, så att man inte får köp omedelbart igen efter take profit.

    i15(
    period1=eqv(int(ref(d,1)),int(d))
    gräns=And(hhv(Not(period1),2),period1)
    hi=Find(gräns,40,aref(h,1),1)
    lo=Find(gräns,40,aref(l,1),1)
    signal1=And(gt(c,hi),lt(aref(c,1),hi))
    signal2=And(aref(signal1,1),period1)
    Draw(hi,2,gqb)
    Draw(lo,3,rqb)
    Mult(signal2,20)
    )


    Nästa steg är att bygga stoploss-scriptet och takeprofit, men det är ganska enkelt i jämförelse. Förslagsvis bygger man dessa båda i samma script och lägger som sekvens 2 i en ordermodell.
    Attached Files

    Comment


    • #3
      Tack!

      Ja köp tillåts när som helst ... tidigaste signalen kan dock komma 09,30. Det görs max ett köp per dag.

      Hur skulle sälj scriptet kunna se ut?

      Jag har fortfarande problem att använda trigger scriptet i en order modell för det verkar inte ge några signaler. Jag felsöker under tiden.

      Mvh
      Daniel

      Comment


      • #4
        Ok då är det tillagt ett villkor som blockerar fler order samma dag.




        i15(
        period1=eqv(int(ref(d,1)),int(d))
        gräns=And(hhv(Not(period1),2),period1)
        hi=Find(gräns,40,aref(h,1),1)
        lo=Find(gräns,40,aref(l,1),1)
        ej_innehav=le(portfolio(v),0)
        ej_samma_dag=gt(int(d),lasttrade(b,d))
        signal1=And(gt(c,hi),lt(aref(c,1),hi))
        signal2=And(aref(signal1,1),period1)
        signal3=and(signal2,and(ej_innehav,ej_samma_dag))
        Draw(hi,2,gqb)
        Draw(lo,3,rqb)
        Mult(signal3,20)
        )


        När du bygger ordermodellen, välj triggerscriptet och välj antal 1 i fältet för antal. Prisscriptet måste vara Senast betalt om du simulerar på index eftersom inga köp- och säljkurser finns där.

        Comment


        • #5
          Tack! Nu fick jag till det med order modellen! :-)

          Jag tycker trigger för köp borde indikera signal idag vid 09,30 ... har inte lyckats hitta en lösning på att det inte kommer en signal där idag ... borde kunna hitta en fix på det.

          Finns det en sida som sammanfattar alla dessa variabler/konstanter som går att använda, tex ej_innehav mm?

          Mvh
          Daniel

          Comment


          • #6
            Hmm konstig fråga jag ställde ... ej_innehav är ju en enkel variabel i skriptet ser jag nu :-)

            Comment


            • #7
              Coolt!
              Bara resten kvar då....

              Du har en sammanställning för alla scriptkommandon via knappen "Välj formel" i scriptredigeringsläget, eller via webben:

              http://www.autostock.se/NATscriptref...st_llning.html

              Comment


              • #8
                Om jag vill få en rak linje utritad på kursen som man köper på ... från första köpsignalen och sedan horisontell resten av dagen, hur får man till det? Inte helt lätt så här i början innan man fått in vanan ... hoppas det kommer att gå fortare framöver att testa saker :-)

                Mvh
                Daniel

                Comment


                • #9
                  Scriptet ovan ritar både köp- och blanklinjen med Draw(). Kolla bifogad bild lite längre upp, är det inte så du menar?

                  Comment


                  • #10
                    Nej det är trigger-nivåerna och är helt ok att de ritas ... men sedan skulle jag också vilja ha en linje från close kursen då första 15 min baren stänger ovanför.

                    Mvh
                    Daniel

                    Comment


                    • #11
                      Ok, det drar med sig lite kodning om man vill kolla att det verkligen är första gången osv för dagen, men det kanske "duger" att rita ut köpkursen från den verkliga affären med LastTrade(b,p) ?

                      Comment


                      • #12
                        Problemet är väl att det inte ritas ut när man har scriptet kopplat till ett instrument utan bara i analysbänken?

                        Ja frågan är hur man bäst kollar att det är första gången ... kanske kan använda Find på något sätt att den inte ska hitta mer än en träff ... håller på att försöka lösa men det är lite nytt tanke sätt i det här script språket ... om någon vill hjälpa till att knacka koden får den gärna göra det.

                        Mvh
                        Daniel

                        Comment


                        • #13
                          Det ritas ut för instrumentet om du har gjort en köpaffär. Du kan alltid göra fiktiva affärer på testkonton, så ser du hur det fungerar.

                          Comment


                          • #14
                            Ursprungligen postat av Rikard Nilsson Visa inlägg
                            Det ritas ut för instrumentet om du har gjort en köpaffär. Du kan alltid göra fiktiva affärer på testkonton, så ser du hur det fungerar.

                            Om du bara vill rita finns det ett quick and dirty trix. För diagramritning utan skarp handel går det att simulera innehav med en global cell.

                            i15(
                            period1=eqv(int(ref(d,1)),int(d))
                            gräns=And(hhv(Not(period1),2),period1)
                            hi=Find(gräns,40,aref(h,1),1)
                            lo=Find(gräns,40,aref(l,1),1)
                            ej_innehav=le(GetGvar(100),0) {le(portfolio(v),0)}
                            ej_samma_dag=gt(int(d),lasttrade(b,d))
                            signal1=And(gt(c,hi),lt(aref(c,1),hi))
                            signal2=And(aref(signal1,1),period1)
                            signal3=and(signal2,and(ej_innehav,ej_samma_dag))
                            SetGvarIf(1,100,signal3)
                            SetGvarIf(0,100,not(period1))
                            rita=if(gt(Getgvar(100),0),hi,0)
                            Draw(rita,2,gqb)
                            {Draw(lo,3,rqb)}
                            Mult(signal3,20)
                            )

                            Comment


                            • #15
                              Tackar :-)

                              Så här ser koden ut nu för köp som jag börjar se bra ut i diagrammet iaf (koden kan säkert optimeras) ... nu är det "bara" att försöka sig på script köpexit ... dvs då antingen profit 1 uppnås eller SL med close under lägsta från första 15 min baren.

                              i15(
                              time1=mult(frac(d),1440) { tidpunkt }
                              time2=le(time1,554) { true mellan 09,00 - 09,15 }
                              period1=eqv(int(ref(d,1)),int(d)) { true första baren 09,00 - 09,15 }
                              linje1=Retval(if(time2,h,Getval(5)),5) { sparar det högsta värdet från första 15 min baren }
                              linje2=Retval(if(time2,l,Getval(6)),6) { sparar det lägsta värdet från första 15 min baren }
                              ej_innehav=le(GetGvar(100),0) { för att få köpsignal i script ... annars le(portfolio(v),0)}
                              ej_samma_dag=gt(int(d),lasttrade(b,d)) { endast en signal om dagen }

                              { trigger då close över högsta från första 15min baren, ingen position, bara ett trade om dagen}

                              signal=and(and(aref(and(cross(c,linje1),gt(c,linje1)),1),1),And(ej_innehav,ej_samma_dag))
                              linje3=Retval(if(And(And(signal,1),And(ej_innehav,ej_samma_dag)),o,Getval(7)),7)
                              SetGvarIf(1,100,signal)
                              SetGvarIf(0,100,not(period1))
                              rita=if(gt(Getgvar(100),0),linje3,0) { sparar köp signal från senaste signalen}

                              draw(Getval(5),3,mqb) { Ritar högsta kursen från 15min baren }
                              draw(rita,8,BQBW) { Ritar ut köpkursen }
                              draw(Add(rita,Mult(Sub(Linje1,Linje2),0.5)),9,BQB) { Ritar ut profit target 1 }
                              draw(Add(rita,Sub(Linje1,Linje2)),10,BQB) { Ritar ut profit target 2 }
                              draw(mult(signal,15),4,bsbF) { Ritar när köpsignalen inträffar }
                              )
                              Attached Files

                              Comment

                              Working...
                              X