Allmänt meddelande

Collapse
No announcement yet.

Köp- och blanksignaler

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

  • Köp- och blanksignaler

    Skulle vara fint med lite feedback på signalerna från dessa script. Har bara labbat lite och tittat på olika möjligheter.
    Kolla vad ni tycker om detta, så kan vi vidareutveckla det senare.

    sl) Köp

    mp1:=div(sub(h,l),2)
    close:=add(l,mp1)
    rgln1:=LinReg(close,10)
    rgln2:=Mov(LinReg(c,100),6,s)
    rgln3:=LinReg(c,300)
    rgln4:=LinReg(close,10)
    regupp1:=Lt(HhvBars(rgln1,2),1)
    regupp2:=Lt(HhvBars(rgln2,2),1)
    regupp3:=Lt(HhvBars(rgln3,2),1)
    kortMA1:=Mov(close,2,s)
    kortMA2:=Mov(close,5,s)
    kortMAupp1:=Lt(HhvBars(kortMA1,2),1)
    kortMAupp2:=Lt(HhvBars(kortMA2,2),1)
    slowrsi1:=Mov(Mov(Rsi(4),15,e),5,s)
    slowrsi2:=Mov(Mov(Rsi(40),15,e),3,s)
    stigRSI1:=Lt(HhvBars(slowrsi1,2),1)
    stigRSI2:=Lt(HhvBars(slowrsi2,2),1)
    exponerad:=Gt(Portfolio(v),0)
    oexponerad:=Ge(Portfolio(v),0)
    bband:=Add(BolBands(20,2.0,u),0.5)
    okband:=Not(Hhv(Gt(h,bband),1))
    mt1:=Mult(Sub(market(c),Frac(d)),1440)
    mt2:=Ge(mt1,22)
    tidnu:=Frac(DATE())
    klocka:=Frac(d)
    kl10:=0.425
    inpådagen:=gt(klocka,kl10)
    lowerband:=BolBands(20,2.0,l)
    spik:=Hhv(Lt(l,Sub(lowerband,0.5)),2)
    köpläge1:=Hhv(And(Gt(c,lowerband),spik),5)
    totalt:=Mult(tidnu,1440)
    rest:=Mod(totalt,10)
    tidsignal:=Gt(rest,0) {ändra 9 till noll för att se signaler}
    i10(
    köpläge2=And(And(köpläge1,stigRSI1),Lt(slowrsi1,-20))
    lågRSI=And(And(And(Hhv(Lt(slowrsi2,-45),30),stigRSI1),regupp1),Gt(rgln1,rgln2))
    okrsi=And(Or(stigRSI1,Lt(slowrsi1,20)),And(And(Lt(slowrsi1,90),stigRSI2),Lt(slowrsi2,50)))
    köp1=And(And(And(regupp1,kortMAupp1),kortMAupp2),1)
    köp2=Or(And(köp1,Or(regupp2,regupp3)),lågRSI)
    köp3=And(Or(exponerad,And(okrsi,And(köp2,oexponerad))),tidsignal)
    köp4=And(And(And(okband,Or(köpläge2,köp3)),inpådagen),mt2)
    )


    sl) Blanka

    mp1:=div(sub(h,l),2)
    close:=add(l,mp1)
    rgln1:=LinReg(close,10)
    rgln2:=Mov(LinReg(c,100),6,s)
    rgln3:=LinReg(c,300)
    rgln4:=LinReg(close,10)
    regner1:=Lt(LlvBars(rgln1,2),1)
    regner2:=Lt(LlvBars(rgln2,2),1)
    regner3:=Lt(LlvBars(rgln3,2),1)
    kortMA1:=Mov(close,2,s)
    kortMA2:=Mov(close,5,s)
    kortMAner1:=Lt(LlvBars(kortMA1,2),1)
    kortMAner2:=Lt(LlvBars(kortMA2,2),1)
    slowrsi1:=Mov(Mov(Rsi(4),15,e),5,s)
    slowrsi2:=Mov(Mov(Rsi(40),15,e),3,s)
    fallRSI1:=Lt(LlvBars(slowrsi1,2),1)
    fallRSI2:=Lt(LlvBars(slowrsi2,2),1)
    exponerad:=Lt(Portfolio(v),0)
    oexponerad:=Le(Portfolio(v),0)
    bband:=Sub(BolBands(20,2.0,l),0.5)
    okband:=Not(Hhv(Lt(l,bband),1))
    mt1:=Mult(Sub(market(c),Frac(d)),1440)
    mt2:=Ge(mt1,22)
    tidnu:=Frac(DATE())
    klocka:=Frac(d)
    kl10:=0.425
    inpådagen:=gt(klocka,kl10)
    upperband:=BolBands(20,2.0,u)
    spik:=Hhv(Gt(h,Add(upperband,0.5)),2)
    blankläge1:=Hhv(And(Lt(c,upperband),spik),5)
    totalt:=Mult(tidnu,1440)
    rest:=Mod(totalt,10)
    tidsignal:=Gt(rest,9) {ändra 9 till noll för att se signaler}
    i10(
    blankläge2=And(And(blankläge1,fallRSI1),Gt(slowrsi1,20))
    högRSI=And(And(And(Hhv(Gt(slowrsi2,45),30),fallRSI1),regner1),Lt(rgln1,rgln2))
    okrsi=And(Or(fallRSI1,Gt(slowrsi1,-20)),And(And(Gt(slowrsi1,-90),fallRSI2),Gt(slowrsi2,-50)))
    sälj1=And(And(And(regner1,kortMAner1),kortMAner2),1)
    sälj2=Or(And(sälj1,Or(regner2,regner3)),högRSI)
    sälj3=And(Or(exponerad,And(okrsi,And(sälj2,oexponerad))),tidsignal)
    sälj4=And(And(Or(blankläge2,And(okband,sälj3)),inpådagen),mt2)
    )

  • #2
    Hej Rikard.

    Jag har lagt in ditt script och jag har 3 sålda kont. på depån men får ingen signal på omx4f.
    Vad skall jag göra för att kunna backtesta?

    Comment


    • #3
      Tjena Ali!

      Ditt innehav gör att scripten inte släpper signalerna så att du kan se dem.

      I köpscriptet så får man tillfälligt byta ut raderna

      exponerad:=Lt(Portfolio(v),0)
      oexponerad:=Le(Portfolio(v),0)

      mot:

      exponerad:=Gt(Portfolio(v),0)
      oexponerad:=Ge(Portfolio(v),-3)

      så kan du se signalerna från det.

      I blankscriptet så blir det sä här:

      exponerad:=Lt(Portfolio(v),-3)
      oexponerad:=Le(Portfolio(v),0)

      Dessa funktionerna har med min "spinnteknik" att göra, alltså om ordermodellen av nån anledning hamnar i fel sekvens så kollar den sig själv och stegar fram till rätt sekvens. Kan ju tex hända vid missad orderläggning etc, eller om jag gör ett manuellt köp från en annan dator.

      OBS! Värdet -3 funkar alltså bara så länge du har 3 blankade kontrakt på din depå.
      Bara att ändra om du gör nåt på måndag tex.
      Om du ska köra skarpt på dessa script så måste du ändra tillbaks till "9" i raden "tidsignal", annars får du ev en del "falska" signaler tidigare i perioden. Tanken är att bara släppa igenom signaler i sista minuten, då alla riktningar på medelvärden stämmer.
      Dessutom så blir det kaos om man kör realtid och inte har tilldelat varje sekvens i ordermodellen en egen "tidslucka". Spinnfunktionerna hamnar just "i spinn" då. Vid varje insamling så läses kurserna först, och innehavet sist, så egentligen vet inte scriptet vad innehavet är förrän det ev redan har löst ut.

      Ska bli kul att höra vad det kommer för synpunkter på signalerna när du väl har sett det hela. Labbade sist med delen om "spik" genom Bollingerbanden. Vill man kan man ju stänga av den så länge och bara titta på de "vanliga" signalerna.

      Det görs enklast genom att modifiera raden

      spik:=Hhv(Lt(l,Sub(lowerband,0.5)),2)

      till tex:

      spik:=Hhv(Lt(l,Sub(lowerband,5)),2)

      (och motsvarande i blankscriptet)

      Då krävs det hela 5 punkters "overshoot" över Bollingerbandet istället för 0.5 för att det ska hända nåt och i praktiken sä är funktionen avstängd.

      Comment


      • #4
        Efter ändring såg det ut så här, Boll. ej ändrat bara innehav.

        Attached Files

        Comment


        • #5
          Såg att det står 9 i värde på raden "tidsignal:=xxx" i blankscriptet. Ändra till noll så kan du se signalerna, annars syns de bara i sista minuten varje period.

          Annars stämmer det ungefär med vad jag har. Tanken är ju att hålla i positionen så länge som möjligt, om det inte börjar gå åt fel håll såklart.
          De "dåliga" signalerna stoppas ut ganska snabbt med ett vanligt stoploss-script.

          Comment


          • #6
            Hej Rikard.

            Det var ju ett litet hjärnsläpp, jag tänkte stoploss men det är ju en hel köp och säljmodell, så här skall det se ut.

            Comment


            • #7
              Hej Rikard.

              Det var ju ett litet hjärnsläpp, jag tänkte stoploss men det är ju en hel köp och säljmodell, så här skall det se ut.

              Glömde bifoga!!!!
              Attached Files

              Comment


              • #8
                Det är egentligen bara köp-och blanksignaler. Script som stänger positionen får man välja vad man vill. Ett enkelt stopp-script skulle funka fint tror jag.

                Comment


                • #9
                  Här kommer vinstanalysen.

                  Jag skall prova med lite längre upplösning, är det något mer jag behöver ändra än
                  " i10 " ?
                  Attached Files

                  Comment


                  • #10
                    I princip kan du köra längre upplösning som det är nu, men det kan vara ide att ändra raden "tidsignal:=xxx" så att värdet är 1 minut mindre än den upplösning du tänker köra. Tex om du väljer 20 minuter, så ska det stå 19 på den raden.

                    Då släpps bara signaler igenom som syns på skärmen. Annars kan du få signal mitt i en period tex och då syns den inte i efterhand.

                    Har du gjort analysen med ett stoppscript som stänger positionen?

                    Comment


                    • #11
                      Nej analysen är enbart gjord på dina script.

                      Går det att göra analys på en komplett ordermodell?

                      Comment


                      • #12
                        Nja, inte på nåt enkelt sätt. Men tanken är inte att en blanksignal ska avsluta ett köp, utan att ett "eget" script typ stoploss ska ta hand om det.

                        Det går alltså inte att backtesta med enbart dessa script för resultatet beror ju på hur fort stoplossen löser.

                        Om du får en köpsignal (tex som den 040603 på förmiddagen) så får man försöka räkna ut när ett stoploss-script hade stängt den positionen, och glömma alla andra signaler fram tills dess.

                        Den blanksignal som kom samma dag har alltså ingen effekt, för man ligger fortfarande lång, ända tills stoppen löser.

                        Det blir svårt att backtesta en sån modell, man får helt enkelt göra det manuellt. Men det går ju om man vill.

                        Å andra sidan så tror jag det funkar bättre i verkliga livet.

                        Comment


                        • #13
                          Tjena!
                          Lite småändringar gjorda. Publicerar det så länge så får vi se vad som tycks.

                          sl) Köp

                          mp1:=div(sub(h,l),2)
                          close:=add(l,mp1)
                          rgln1:=LinReg(close,10)
                          rgln2:=Mov(LinReg(c,100),6,s)
                          rgln3:=LinReg(c,40)
                          rgln4:=LinReg(close,200)
                          regupp1:=Lt(HhvBars(rgln1,2),1)
                          regupp2:=Lt(HhvBars(rgln2,2),1)
                          regupp3:=Lt(HhvBars(rgln3,2),1)
                          kortMA1:=Mov(close,2,s)
                          kortMA2:=Mov(close,5,s)
                          kortMAupp1:=Lt(HhvBars(kortMA1,2),1)
                          kortMAupp2:=Lt(HhvBars(kortMA2,2),1)
                          slowrsi1:=Mov(Mov(Rsi(4),15,e),5,s)
                          slowrsi2:=Mov(Mov(Rsi(40),15,e),3,s)
                          stigRSI1:=Lt(HhvBars(slowrsi1,2),1)
                          stigRSI2:=Lt(HhvBars(slowrsi2,2),1)
                          exponerad:=Gt(Portfolio(v),0)
                          oexponerad:=Ge(Portfolio(v),0)
                          bband:=Add(BolBands(20,2.0,u),0.5)
                          okband:=Not(Hhv(Gt(h,bband),1))
                          mt1:=Mult(Sub(market(c),Frac(d)),1440)
                          mt2:=Ge(mt1,22)
                          tidnu:=Frac(DATE())
                          klocka:=Frac(d)
                          kl10:=0.425
                          inpådagen:=gt(klocka,kl10)
                          lowerband:=BolBands(20,2.0,l)
                          spik:=Hhv(Lt(l,Sub(lowerband,4)),2)
                          köpläge1:=Hhv(And(Gt(c,lowerband),spik),6)
                          totalt:=Mult(tidnu,1440)
                          rest:=Mod(totalt,10)
                          tidsignal:=Gt(rest,0) {ändra 9 till noll för att se signaler}
                          i10(
                          köpläge2=And(And(köpläge1,stigRSI1),Lt(slowrsi1,-20))
                          lågRSI=And(And(And(Hhv(Lt(slowrsi2,-50),30),stigRSI1),regupp1),Gt(rgln1,rgln2))
                          okrsi=And(Or(stigRSI1,Lt(slowrsi1,30)),And(And(Lt(slowrsi1,90),stigRSI2),Lt(slowrsi2,60)))
                          köp1=And(And(And(regupp1,kortMAupp1),kortMAupp2),1)
                          köp2=Or(And(regupp3,And(köp1,Gt(rgln1,rgln2))),lågRSI)
                          köp3=And(Or(exponerad,And(okrsi,And(köp2,oexponerad))),tidsignal)
                          köp4=And(And(And(okband,Or(köpläge2,köp3)),inpådagen),mt2)
                          )


                          sl) Blanka

                          mp1:=div(sub(h,l),2)
                          close:=add(l,mp1)
                          rgln1:=LinReg(close,10)
                          rgln2:=Mov(LinReg(c,100),6,s)
                          rgln3:=LinReg(c,40)
                          rgln4:=LinReg(close,200)
                          regner1:=Lt(LlvBars(rgln1,2),1)
                          regner2:=Lt(LlvBars(rgln2,2),1)
                          regner3:=Lt(LlvBars(rgln3,2),1)
                          kortMA1:=Mov(close,2,s)
                          kortMA2:=Mov(close,5,s)
                          kortMAner1:=Lt(LlvBars(kortMA1,2),1)
                          kortMAner2:=Lt(LlvBars(kortMA2,2),1)
                          slowrsi1:=Mov(Mov(Rsi(4),15,e),5,s)
                          slowrsi2:=Mov(Mov(Rsi(40),15,e),3,s)
                          fallRSI1:=Lt(LlvBars(slowrsi1,2),1)
                          fallRSI2:=Lt(LlvBars(slowrsi2,2),1)
                          exponerad:=Lt(Portfolio(v),0)
                          oexponerad:=Le(Portfolio(v),0)
                          bband:=Sub(BolBands(20,2.0,l),0.5)
                          okband:=Not(Hhv(Lt(l,bband),1))
                          mt1:=Mult(Sub(market(c),Frac(d)),1440)
                          mt2:=Ge(mt1,22)
                          tidnu:=Frac(DATE())
                          klocka:=Frac(d)
                          kl10:=0.425
                          inpådagen:=gt(klocka,kl10)
                          upperband:=BolBands(20,2.0,u)
                          spik:=Hhv(Gt(h,Add(upperband,10)),2)
                          blankläge1:=Hhv(And(Lt(c,upperband),spik),6)
                          totalt:=Mult(tidnu,1440)
                          rest:=Mod(totalt,10)
                          tidsignal:=Gt(rest,0) {ändra 9 till noll för att se signaler}
                          i10(
                          blankläge2=And(And(blankläge1,fallRSI1),Gt(slowrsi1,20))
                          högRSI=And(And(And(Hhv(Gt(slowrsi2,50),30),fallRSI1),regner1),Lt(rgln1,rgln2))
                          okrsi=And(Or(fallRSI1,Gt(slowrsi1,-30)),And(And(Gt(slowrsi1,-90),fallRSI2),Gt(slowrsi2,-60)))
                          sälj1=And(And(And(regner1,kortMAner1),kortMAner2),1)
                          sälj2=Or(And(regner3,And(sälj1,Lt(rgln1,rgln2))),högRSI)
                          sälj3=And(Or(exponerad,And(okrsi,And(sälj2,oexponerad))),tidsignal)
                          sälj4=And(And(Or(blankläge2,And(okband,sälj3)),inpådagen),mt2)
                          )

                          Comment


                          • #14
                            Otroligt roligt att du vill delge oss ett av dina superskript IMPONERANDE

                            Enligt vinst rapporten på OMX4F
                            köpt
                            Vinstaffärer: 5st=+3685
                            Försustaffärer: 2st=-475

                            När jag kastar om köp/ sälj för blankning

                            Vinstaffärer: 4st=+1370
                            Förlustaffärer: 2st=-1130

                            Nog blir väll avkastningen mycket bättre i värkligheten med dina stopp skript påkopplade som du hjälpte mej med i ”stoppa ut/ta maxvinst”
                            Köp och sälj signalerna kommer ju så fint och säkert både upp och ned. Nu måste jag ägna helgen åt att analysera skripten.
                            Och sen blir nog dessa 4 skript mitt första automatiska orderläggnings system

                            Ett par grundläggande frågor som jag har gått och funderat på när man kör automatiskt.

                            #1 Köp och Sälj skript kör jag växelvis sekvenstyp 1-10 med antal kontrakt
                            sekvens 1 köp / antal 1st / stopskript påkopplat
                            sekvens 2 sälj / antal 1st/ stopskript påkopplat
                            sekvens 3 köp/ antal 1st/ stopskript påkopplat
                            osv
                            osv
                            Hur påverkas sekvens 2 om inte stopskriptet löst ut innan än sälj signal kommer. Jag tycker (utan att provat) att om sekvens 2 kommer direkt efter sekvens 1 så borde sekvens 2 bara se till att innehavet nollas på depån men jag vill ju i det läget vända innehavet till att ha 1 blankat innehav. Antagligen har jag missat något grundläggande igen??
                            Får jag bara ordning på min oro över att jag ställer upp alla vilkor på rätt sätt så börjar det lukta allvar, och du är nog den som kopplat upp flest ordermodeller här.

                            Comment


                            • #15
                              Glöm inte...

                              Kom ihåg att sätta upp antalet scriptanrop som tillåts i Preferenser fliken Övrigt.

                              Minst 200 (istället för 100 som är standard vid installation).

                              Hade en kund som fick massa bök med krasch efter att klistrat in dessa långa script.

                              Comment

                              Working...
                              X