Allmänt meddelande

Collapse
No announcement yet.

Gneta

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

  • Gneta

    Halloj!
    Länge sedan jag presenterade någon strategi. Istället för att filosofera idag så slängde jag ihop en strategi nu på eftermiddagen som jag kallar Gneta. Man måste alltså gneta för att få ihop en vinst.

    Så här blir resultatet då jag simulerar på OMXS30 index från 2012-01-02 till 2019-11-15 resultat i punkter utan återinvestering.

    Avkastning 1163.34 kr 0.69% på 117 affärer under 16081:16:02 tim
    Av dessa blankat 58 st med avkastning 235.32 kr 0.28%
    Innehav 37 st med vinst 1732.14 kr 3.34%
    Innehav 22 st med förlust -804.12 kr -2.47%
    Blankning 39 st med vinst 1079.69 kr 1.90%
    Blankning 19 st med förlust -844.37 kr -3.15%

    Strategin ligger hela tiden i marknaden. Strategin tittar bara 65 handelsminuter bakåt i tiden.

    mvh
    Bertil
    Last edited by Bertil; 2019-11-17, 12:02.

  • #2
    { Gneta köp }
    { 191115 }
    innehav:=Portfolio(v)
    ok_att_handla:=Eqv(innehav,0)

    steg01:=5
    steg02:=60
    steg03:=1.50
    Justering:=div(c,c)
    steg04:=mult(steg03,justering)

    tidspärr1:=10
    lt1:=LastTrade(B,D)
    minSedanKöp:=Mult(Sub(Date(),lt1),1440)
    delay_ok:=gt(minSedanKöp,tidspärr1)

    i1(
    tid1=gt(int(mult(frac(d),1440)),570)
    tid2=lt(int(mult(frac(d),1440)),1020)

    slang01=add(mov(sub(c,aref(c,steg01)),steg02),c)
    slang02=mov(c,5)
    villkor01=Gt(sub(c,slang01),steg04)
    villkor02=Gt(c,aref(c,1))
    villkor03=Gt(slang01,aref(slang01,1))
    villkor04=Gt(slang02,aref(slang02,1))
    köpa=And(And(And(villkor01,villkor02),villkor02),villkor04)

    ditt_köpscript=And(And(And(köpa,tid1),tid2),delay_ok)
    köpsignal=And(ditt_köpscript,ok_att_handla)
    Mult(köpsignal,25)
    )

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

    { Gneta köp vänd }
    { 191115 }
    innehav:=Portfolio(v)
    ok_att_handla:=Lt(innehav,0)

    steg01:=5
    steg02:=60
    steg03:=1.50
    vinst:=Sub(lasttrade(s,p),c)
    Justering:=if(lt(vinst,-30),0.25,0)
    steg04:=sub(steg03,justering)

    tidspärr1:=10
    lt1:=LastTrade(B,D)
    minSedanKöp:=Mult(Sub(Date(),lt1),1440)
    delay_ok:=gt(minSedanKöp,tidspärr1)

    i1(
    tid1=gt(int(mult(frac(d),1440)),570)
    tid2=lt(int(mult(frac(d),1440)),1020)

    slang01=add(mov(sub(c,aref(c,steg01)),steg02),c)
    slang02=mov(c,5)
    villkor01=Gt(sub(c,slang01),steg04)
    villkor02=Gt(c,aref(c,1))
    villkor03=Gt(slang01,aref(slang01,1))
    villkor04=Gt(slang02,aref(slang02,1))
    köpa=And(And(And(villkor01,villkor02),villkor02),villkor04)

    ditt_köpscript=And(And(And(köpa,tid1),tid2),delay_ok)
    köpsignal=And(ditt_köpscript,ok_att_handla)
    Mult(köpsignal,25)
    )

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

    { Gneta sälj }
    { 191115 }
    innehav:=Portfolio(v)
    ok_att_handla:=Eqv(innehav,0)

    steg01:=5
    steg02:=60
    steg03:=1.50
    Justering:=div(c,c)
    steg04:=mult(steg03,justering)

    tidspärr1:=10
    lt1:=LastTrade(B,D)
    minSedanKöp:=Mult(Sub(Date(),lt1),1440)
    delay_ok:=gt(minSedanKöp,tidspärr1)

    i1(
    tid1=gt(int(mult(frac(d),1440)),570)
    tid2=lt(int(mult(frac(d),1440)),1020)

    slang01=add(mov(sub(c,aref(c,steg01)),steg02),c)
    slang02=mov(c,5)
    villkor01=Gt(sub(slang01,c),steg04)
    villkor02=Lt(c,aref(c,1))
    villkor03=Lt(slang01,aref(slang01,1))
    villkor04=Lt(slang02,aref(slang02,1))
    sälja=And(And(And(villkor01,villkor02),villkor02),villkor04)

    ditt_säljscript=And(And(And(sälja,tid1),tid2),delay_ok)
    säljsignal=And(ditt_säljscript,ok_att_handla)
    Mult(säljsignal,25)
    )


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

    { Gneta sälj vänd }
    { 191115 }
    innehav:=Portfolio(v)
    ok_att_handla:=Gt(innehav,0)

    steg01:=5
    steg02:=60
    steg03:=1.50
    vinst:=Sub(c,lasttrade(b,p))
    Justering:=if(lt(vinst,-10),0.05,0)
    steg04:=sub(steg03,justering)

    tidspärr1:=10
    lt1:=LastTrade(B,D)
    minSedanKöp:=Mult(Sub(Date(),lt1),1440)
    delay_ok:=gt(minSedanKöp,tidspärr1)

    i1(
    tid1=gt(int(mult(frac(d),1440)),570)
    tid2=lt(int(mult(frac(d),1440)),1020)

    slang01=add(mov(sub(c,aref(c,steg01)),steg02),c)
    slang02=mov(c,5)
    villkor01=Gt(sub(slang01,c),steg04)
    villkor02=Lt(c,aref(c,1))
    villkor03=Lt(slang01,aref(slang01,1))
    villkor04=Lt(slang02,aref(slang02,1))
    sälja=And(And(And(villkor01,villkor02),villkor02),villkor04)

    ditt_säljscript=And(And(And(sälja,tid1),tid2),delay_ok)
    säljsignal=And(ditt_säljscript,ok_att_handla)
    Mult(säljsignal,25)
    )

    ...................................................

    mvh
    Bertil

    Comment


    • #3
      För att gå ur marknaden vid slutdatum scriptar man så här:

      { Cover på datum }

      minuter:=7
      { ange antal minuter innan stängning du vill att scriptet ska slå till }
      stängning:=le(mult(1440,sub(market(c),frac(date()))),minuter)

      i1(
      år=eqv(yearnumber(),2019)
      månad=eqv(monthnumber(),11)
      dag=eqv(dayofmonth(),15)
      signal=And(And(And(And(lt(Portfolio(v),0),stängning),år),månad),dag)
      Mult(signal,10)
      )

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

      { Sälj på datum }

      minuter:=7
      { ange antal minuter innan stängning du vill att scriptet ska slå till }
      stängning:=le(mult(1440,sub(market(c),frac(date()))),minuter)

      i1(
      år=eqv(yearnumber(),2019)
      månad=eqv(monthnumber(),11)
      dag=eqv(dayofmonth(),15)
      signal=And(And(And(And(gt(Portfolio(v),0),stängning),år),månad),dag)
      Mult(signal,10)
      )

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

      mvh
      Bertil

      Comment


      • #4
        Får inte in data innan 2015 av nån anledning så här är simuleringen från 2015-02-01 till 2019-11-15 med återinvestering och NAS slipp/courtage.

        CAGR 11%, DD 19%, GP 0,58, häv 1





        Attached Files
        Last edited by PerG; 2019-11-16, 21:40. Anledning: Uppdaterat med excel-data

        Comment


        • #5
          NAT:s vinstpresentation har buggar. Så här blir det i excel.



          mvh
          Bertil
          Attached Files
          Last edited by Bertil; 2019-11-16, 21:12.

          Comment


          • #6
            Ursprungligen postat av Bertil Visa inlägg
            NAT:s vinstpresentation har buggar. Så här blir det i excel.
            Har uppdaterat min post med ett excel-diagram med som innehåller NAS-slipp/courtage och återinvestering. Kurvan påminner om den du lagt ut, och CAGR,DD och GP är som tidigare.

            Vore intressant att mäta hela tiden från 2012, men lyckas inte tanka hem data innan 2015 just nu.

            Comment


            • #7
              Provade lägga till volatilitetsfilter. Dvs, kräva låg volatilitet för att köpa/vända, och kräva lite högre volatilitet för att blanka/vända.

              Tar ned signalerna men får upp både CAGR till 18% och GP till > 1 ,
              Tex BBW > 1.09 eller lägre än 1.09.

              Går säkert att fila mer på detta.

              Last edited by PerG; 2019-11-17, 13:40.

              Comment


              • #8
                Ursprungligen postat av PerG Visa inlägg
                Provade lägga till volatilitetsfilter. Dvs, kräva låg volatilitet för att köpa/vända, och kräva lite högre volatilitet för att blanka/vända.

                Tar ned signalerna men får upp både CAGR och GP med 50%.
                Tex BBW > 1.08 eller lägre än 1.08. Har inte testat några angränsande värden än utan tog lite baserat på känsla för OMX
                Intressant!
                Du kan väl lägga ut koden för vollafiltret.
                mvh
                Bertil

                Comment


                • #9
                  Gneta strategin handlar oftast på morgonen då dagen börjar med en tydlig trend och gårdagen avslutats med samma trend. Det visar sig inte vara så fördelaktigt att handla 09.45 - 10.00 för då får morgonen för stor inverkan inkl amatörernas halvtimme.

                  Ändrar man för

                  köp vänd:
                  tid1=gt(int(mult(frac(d),1440)),573)
                  tid2=lt(int(mult(frac(d),1440)),1020)
                  tidA=gt(int(mult(frac(d),1440)),585)
                  tidB=lt(int(mult(frac(d),1440)),600)
                  villkor06=Not(And(tidA,tidB))


                  köpa=And(And(And(villkor01,villkor02),villkor04),villkor06)

                  och sälj vänd:
                  tidA=gt(int(mult(frac(d),1440)),585)
                  tidB=lt(int(mult(frac(d),1440)),600)
                  villkor06=Not(And(tidA,tidB))


                  sälja=And(And(And(villkor01,villkor02),villkor04),villkor06)


                  Blir resultatet:
                  Avkastning 1631.96 kr 1.14% på 99 affärer under 16081:16:02 tim
                  Av dessa blankat 49 st med avkastning 469.63 kr 0.66%
                  Innehav 33 st med vinst 1892.74 kr 4.02%
                  Innehav 17 st med förlust -730.41 kr -2.92%
                  Blankning 33 st med vinst 1207.59 kr 2.50%
                  Blankning 16 st med förlust -737.96 kr -3.18%



                  Edit: Per du kan väl simulera med detta och med ditt vollafilter.
                  Attached Files
                  Last edited by Bertil; 2019-11-17, 15:37.

                  Comment


                  • #10
                    Gneta + vollafilter BBW >1.09 = CAGR 19%, DD; 17.9%, GP = 1,06

                    Gneta 2 = CAGR, 15,9%, DD 33,4%, GP = 0,47
                    Gneta 2 + vollafilter BBW > 1,07 = CAGR 14,2%, DD 31%, GP = 0,46
                    Gneta 2 + vollafilter BBW > 1,08 = CAGR 15,7%, DD 17,7%, GP = 0,88
                    Gneta 2 + vollafilter BBW > 1,09 = CAGR 16,2%, DD 17,7%, GP = 0,92
                    Gneta 2 + vollafilter BBW > 1,1 = CAGR 8,7%, DD 30%, GP = 0,29


                    -----Vollafilter baserat på bollinger band-width-----

                    {Vollafilter > 1,09}
                    bbw2=div(BolBands(20,2,U),BolBands(20,2,L))
                    VollaOK=GT(bbw2,1.09)

                    {Vollafilter < 1,09}
                    bbw2=div(BolBands(20,2,U),BolBands(20,2,L))
                    VollaOK=LT(bbw2,1.09)
                    Last edited by PerG; 2019-11-17, 23:36.

                    Comment


                    • #11
                      Vollafiltret funkar inte för mig. Vilken upplösning kör du?

                      Har testat både dag i egen ordermodell och 1 minut i Gnetascriptet, men det blir bara pannkaka.

                      mvh
                      Bertil


                      Edit: Så här blir det med dagsupplösning i en egen ordermodell

                      Avkastning -154.12 kr -0.34% på 31 affärer under 16081:16:02 tim
                      Av dessa blankat 15 st med avkastning -423.41 kr -1.94%
                      Innehav 4 st med vinst 998.16 kr 18.02%
                      Innehav 12 st med förlust -728.87 kr -4.10%
                      Blankning 5 st med vinst 180.93 kr 2.35%
                      Blankning 10 st med förlust -604.34 kr -4.28%
                      Last edited by Bertil; 2019-11-18, 01:20.

                      Comment


                      • #12
                        Ursprungligen postat av Bertil Visa inlägg
                        Vollafiltret funkar inte för mig. Vilken upplösning kör du?
                        Jag kör det som ett XK) script under tiden jag labbar för att enkelt kunna testa olika filter.
                        När jag börjar köra något skarpt så brukar jag koda in villkoren direkt i triggerscripten för att inte få så många "varningar" i larm när filter blockar.

                        Jag använder alltså tex BBW < 1,09 som krav för Short och BBW > 1,09 för Lång.
                        Det går säkert att lägga sig mellan 1,08 och 1,09 men det är finlir.
                        Last edited by PerG; 2019-11-18, 21:52. Anledning: felaktigheter ang xk)

                        Comment


                        • #13
                          Gjorde lite tester. Alla simuleringar gjorda från 2015-01-01

                          Utan vollafilter:
                          Avkastning 1170.63 kr 0.89% på 89 affärer under 10317:21:02 tim
                          Av dessa blankat 44 st med avkastning 427.80 kr 0.65%
                          Innehav 29 st med vinst 1438.74 kr 3.38%
                          Innehav 16 st med förlust -695.91 kr -2.90%
                          Blankning 30 st med vinst 1035.62 kr 2.32%
                          Blankning 14 st med förlust -607.82 kr -2.91%


                          Med xk) växlad logik bbw 1.09 på köp vänd och sälj vänd

                          Avkastning 1597.95 kr 5.13% på 21 affärer under 10317:21:02 tim
                          Av dessa blankat 10 st med avkastning 641.46 kr 4.22%
                          Innehav 9 st med vinst 1043.39 kr 8.04%
                          Innehav 2 st med förlust -86.90 kr -2.89%
                          Blankning 8 st med vinst 744.39 kr 6.12%
                          Blankning 2 st med förlust -102.93 kr -3.41%

                          Per du säger ju att du växlat logiken på xk) dvs bbw>1.09 för köp vänd och bbw<1.09 för sälj vänd. Man behöver inte vända på logiken för xk) script utan det är ju detta som gäller.

                          mvh
                          Bertil

                          Comment


                          • #14
                            Så här ser det ut:


                            Blir alltså samma som Pers bild http://www.autostock.se/vbulletin/sh...60&postcount=7

                            Själv skulle jag dock aldrig köra denna strategi då antalet avslut är för litet, finns risk för curvefitting.
                            Mina favoritstrategier bör ha ca 100 avslut per år.

                            mvh
                            Bertil
                            Attached Files
                            Last edited by Bertil; 2019-11-18, 18:33.

                            Comment


                            • #15
                              { Gneta köp vänd }
                              { 191118 }
                              innehav:=Portfolio(v)
                              ok_att_handla:=Lt(innehav,0)

                              steg01:=5
                              steg02:=60
                              steg03:=1.5

                              vinst:=Sub(lasttrade(s,p),c)
                              tid0:=lt(int(mult(frac(d),1440)),1020)
                              Justering:=if(and(lt(vinst,-30),tid0),0.25,0)
                              steg04:=sub(steg03,justering)

                              tidspärr1:=10
                              lt1:=LastTrade(B,D)
                              minSedanKöp:=Mult(Sub(Date(),lt1),1440)
                              delay_ok:=gt(minSedanKöp,tidspärr1)

                              i1(
                              tid1=gt(int(mult(frac(d),1440)),573)
                              tid2=lt(int(mult(frac(d),1440)),1020)
                              tidA=gt(int(mult(frac(d),1440)),585)
                              tidB=lt(int(mult(frac(d),1440)),600)
                              villkor06=Not(And(tidA,tidB))

                              slang01=add(mov(sub(c,aref(c,steg01)),steg02),c)
                              slang02=mov(c,5)
                              villkor01=Gt(sub(c,slang01),steg04)
                              villkor02=Gt(c,aref(c,1))
                              villkor03=Gt(slang01,aref(slang01,1))
                              villkor04=Gt(slang02,aref(slang02,1))

                              VollaOK=GT(GetGVar(9100),1.09)

                              köpa=And(And(And(And(villkor01,villkor02),villkor04),villkor06),VollaOK)

                              ditt_köpscript=And(And(And(köpa,tid1),tid2),delay_ok)
                              köpsignal=And(ditt_köpscript,ok_att_handla)
                              Mult(köpsignal,25)
                              )

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

                              { Gneta sälj vänd }
                              { 191118 }
                              innehav:=Portfolio(v)
                              ok_att_handla:=Gt(innehav,0)

                              steg01:=5
                              steg02:=60
                              steg03:=1.5
                              vinst:=Sub(c,lasttrade(b,p))
                              tid0:=lt(int(mult(frac(d),1440)),1020)
                              Justering:=if(and(lt(vinst,-30),tid0),0.05,0)
                              steg04:=sub(steg03,justering)

                              tidspärr1:=10
                              lt1:=LastTrade(B,D)
                              minSedanKöp:=Mult(Sub(Date(),lt1),1440)
                              delay_ok:=gt(minSedanKöp,tidspärr1)

                              i1(
                              tid1=gt(int(mult(frac(d),1440)),571)
                              tid2=lt(int(mult(frac(d),1440)),1020)
                              tidA=gt(int(mult(frac(d),1440)),585)
                              tidB=lt(int(mult(frac(d),1440)),600)
                              villkor06=Not(And(tidA,tidB))


                              slang01=add(mov(sub(c,aref(c,steg01)),steg02),c)
                              slang02=mov(c,5)
                              villkor01=Gt(sub(slang01,c),steg04)
                              villkor02=Lt(c,aref(c,1))
                              villkor03=Lt(slang01,aref(slang01,1))
                              villkor04=Lt(slang02,aref(slang02,1))

                              VollaOK=LT(GetGVar(9100),1.09)

                              sälja=And(And(And(And(villkor01,villkor02),villkor04),villkor06),VollaOK)

                              ditt_säljscript=And(And(And(sälja,tid1),tid2),delay_ok)
                              säljsignal=And(ditt_säljscript,ok_att_handla)
                              Mult(säljsignal,25)
                              )

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

                              sl) Triggerscript för Vollaberäkning

                              { Vollafilter }
                              { 191118 }

                              bbw2=div(BolBands(20,2,U),BolBands(20,2,L))
                              SetGVarIf(bbw2,9100,1)
                              mult(1,0)

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

                              mvh
                              Bertil
                              Last edited by Bertil; 2019-11-18, 18:19.

                              Comment

                              Working...
                              X