Allmänt meddelande

Collapse
No announcement yet.

Pairtrading OMXS30 DAX intradag

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

  • #16
    Ursprungligen postat av Palgrave Visa inlägg
    Er den basert på triggerskripten i første post? Jag får inte samma fina vinstkurva.
    Som Rikard sa så blir det fel i min simulering då DAX öppnar 9.30

    Jag får fortsätta att modifiera mina script...

    mvh
    Bertil

    Comment


    • #17
      Bertil, tänke höra med dig om du kan se någon skillnad i resultatkurvan då marknaden är lugn, lite mer volla eller stor volla?
      Känns som att skillnaden mellan OMX/DAX kan spreta iväg ganska mycket under hög volla, eller något index trendar iväg kraftigare än det andra indexet, då kanske inte hinner svänga tillbaka under samma dag? Det beror ju så klart på hur stor spread man satt som entry. Har du tagit hänsyn till volla/trend-klimatet när du gör entry?

      Comment


      • #18
        Alpha Shark skall ju bli en betalstrategi. Men i den här tråden kan vi ju lägga upp lite kod samt tips och trix om man vill labba själv med pairstrading. I mitt tidigare inlägg hade jag ju inte tagit hänsyn till att DAX öppnade först kl 9.30 före 4 okt 2011. Dessutom tog jag då inte hänsyn till slippage/courtage. Om man gör pairstrading på dagsbasis så blir vinsten väldigt liten och äts lätt upp av courtaget. Jag tror också att bandet mellan OMXS30 och DAX har blivit tightare nu än för 10 år sedan. Därför tror jag att det räcker att backtesta från 2016-01-01. Får labba på det.
        Jag håller på att justera min kod. Det blir kanske nödvändigt att gå över till swingtrading. Återkommer...

        mvh
        Bertil
        Last edited by Bertil; 2018-03-02, 12:46.

        Comment


        • #19
          Jag skall kolla lite på swingtrading med par. Här är en testkod för att undersöka om det finns en periodicitet.

          i1(
          { Tag 15 medelvärden på dagclose med början för 10 dagar sedan }
          DAXref=Div(Add(Add(Add(Add(Add(Add(Add(Add(Add(Addd(Add(Add(Add(Add(cmpref(c,10,a),cmpref(c,11,a)),cmpref(c,12,a)),cmpref(c,13,a)),cmpref(c,14,a)),cmp ref(c,15,a)),cmpref(c,16,a)),cmpref(c,17,a)),cmpref(c,18,a)),cmpref(c,19,a)),cmpref(c,20,a)),cmpref(c,21,a)),cmpref(c,22,a)),cmpref(c,23,a)),cmpref(c, 24,a)),15)
          OMXS30ref=Div(Add(Add(Add(Add(Add(Add(Add(Add(Add(Addd(Add(Add(Add(Add(cmpref(c,10,b),cmpref(c,11,b)),cmpref(c,12,b)),cmpref(c,13,b)),cmpref(c,14,b)), cmpref(c,15,b)),cmpref(c,16,b)),cmpref(c,17,b)),cmpref(c,18,b)),cmpref(c,19,b)),cmpref(c,20,b)),cmpref(c,21,b)),cmpref(c,22,b)),cmpref(c,23,b)),cmpref (c,24,b)),15)

          { Beräkna den flytande omvandlingkvoten mellan OMXS30 och DAX }
          Kvot01=Div(OMXS30ref,DAXref)

          { DAXfejk skalas för att passa in i OMXS30 diagrammet }
          DAXfejk=Mult(Kvot01,cmpref(c,0,c))
          Draw(DAXfejk,3,rqb0)

          { Diff07 blir vår parameter att trigga på }
          Diff07=Sub(DAXfejk,c)

          { Fejka för att klara av negativa värden samt lägg in som bluffköp för att generera flaggor }
          Diff08=Mult(Add(Diff07,30),3)
          Mult(Diff08,1)
          )

          {@A(0,B-IDX-DAXI)@B(0,OMX Stock )@C(1,B-IDX-DAXI)}

          Diagram kommer om en stund.

          Comment


          • #20
            Ähum, det är max 10 parentesdjupsnivåer per rad som är tillåtet.

            Såg ett stavfel också:

            DAXref=Div(Add(Add(Add(Add(Add(Add(Add(Add(Add(Addd(Add(Add(Add(Add(cmpref(c,10,a),cmpref(c,11,a)),cmpref(c,12,a)),cmpref(c,13,a)),cmpref(c,14,a)),cmp ref(c,15,a)),cmpref(c,16,a)),cmpref(c,17,a)),cmpref(c,18,a)),cmpref(c,19,a)),cmpref(c,20,a)),cmpref(c,21,a)),cmpref(c,22,a)),cmpref(c,23,a)),cmpref(c, 24,a)),15)
            OMXS30ref=Div(Add(Add(Add(Add(Add(Add(Add(Add(Add(Addd(Add(Add(Add(Add(cmpref(c,10,b),cmpref(c,11,b)),cmpref(c,12,b)),cmpref(c,13,b)),cmpref(c,14,b)), cmpref(c,15,b)),cmpref(c,16,b)),cmpref(c,17,b)),cmpref(c,18,b)),cmpref(c,19,b)),cmpref(c,20,b)),cmpref(c,21,b)),cmpref(c,22,b)),cmpref(c,23,b)),cmpref (c,24,b)),15)

            Comment


            • #21
              Skrev bara ned koden utan att testa. Så här blir korrekt kod:

              { Rittest 8000 }

              i1(
              { Tag 10 medelvärden på dagclose med början för 10 dagar sedan }
              DAXref=Div(Add(Add(Add(Add(Add(Add(Add(Add(cmpref(c,10,a),cmpref(c,11,a)),cmpref(c,12,a)),cmpref(c,13,a)),cmpref(c,14,a)),cmpref(c,15,a)),cmpref(c,16, a)),cmpref(c,17,a)),cmpref(c,18,a)),9)
              OMXS30ref=Div(Add(Add(Add(Add(Add(Add(Add(Add(cmpref(c,10,b),cmpref(c,11,b)),cmpref(c,12,b)),cmpref(c,13,b)),cmpref(c,14,b)),cmpref(c,15,b)),cmpref(c, 16,b)),cmpref(c,17,b)),cmpref(c,18,b)),9)

              { Beräkna den flytande omvandlingkvoten mellan OMXS30 och DAX }
              Kvot01=Div(OMXS30ref,DAXref)

              { DAXfejk skalas för att passa in i OMXS30 diagrammet }
              DAXfejk=Mult(Kvot01,cmpref(c,0,c))
              Draw(DAXfejk,3,rqb0)

              { Diff07 blir vår parameter att trigga på }
              Diff07=Sub(DAXfejk,c)

              { Fejka för att klara av negativa värden samt lägg in som bluffköp för att generera flaggor }
              Diff08=Mult(Add(Diff07,80),3)
              Mult(Diff08,0.1)
              )

              {@A(0,B-IDX-DAXI)@B(0,OMX Stock )@C(1,B-IDX-DAXI)}

              --------------
              I skarp körning så gör jag en dummyordermodell som tar mov på en längre tidsserie och skriver till en global variabel, men då kan man ju inte rita i diagrammet...
              Attached Files

              Comment


              • #22
                A) Vi önskar att handla då diffen mellan indexen är som störst.
                B) Vi vill gå ur då kurvorna korsar varandra. Man skulle kunna tänka att det är bättre att vända position vid korsning, men det är inte alls säkert att trenden fortsätter åt motsatt håll så det låter vi bli.

                Vi kommer att få 2 triggar:

                1 Trigg då DAX mycket större än OMXS30
                1a) Köp OMXS30
                1b) Slavordermodell Blanka DAX

                2 Trigg då OMXS30 mycket större än DAX
                2a) Köp DAX
                2b) Slavordermodell Blanka OMXS30
                ----------
                1a och 2a kan byggas ihop i en ordermodell där man bara håller koll på vilket index som är högst samt crid() . Då denna ordermodell triggar sätts en global variabel.

                1b och 2b kan på liknande sätt sättas ihop till en gemensam ordermodell.
                Denna tittar på när den globala variabeln från 1 är satt samt om DAX är större än OMXS30 och vilket crid() som är aktuellt.
                Då slaven triggar sätts den globala variabeln tillbaks till 0.

                För att gå ur får man ha ordermodell 3a och 3b.

                mvh
                Bertil
                Last edited by Bertil; 2018-03-02, 19:24.

                Comment


                • #23
                  Här är hjälpordermodellen
                  -----------------------
                  { Orca swing hjälp }
                  { 180302 }

                  { Tag 30 medelvärden på dagsclose med början för 15 dagar sedan }

                  OMXS30ref=mov(cmpref(c,15,a),30)
                  DAXref=mov(cmpref(c,15,b),30)

                  Kvot01=Div(OMXS30ref,DAXref)
                  SetGVarIf(Kvot01,8010,1,T)

                  SetGVarIf(OMXS30ref,8011,1,T)
                  SetGVarIf(DAXref,8012,1,T)

                  mult(0,0)


                  {@A(0,OMX Stock )@B(0,B-IDX-DAXI)}
                  ------------------------------------------
                  mvh
                  Bertil
                  Last edited by Bertil; 2018-03-02, 23:57.

                  Comment


                  • #24
                    Intressant Bertil,

                    Hur ser avkastningen ut 2016-01-01 till idag?

                    Comment


                    • #25
                      Avkastning med swing 2012-01-01 till 2018-02-29 ser ut så här med insats 100000:

                      Avkastning 25984.99 kr 0.13% på 368 affärer under 10930:47:29 tim
                      Av dessa blankat 184 st med avkastning -28870.98 kr -0.28%
                      Innehav 128 st med vinst 105078.17 kr 1.48%
                      Innehav 56 st med förlust -50222.21 kr -1.55%
                      Blankning 97 st med vinst 59631.33 kr 1.11%
                      Blankning 87 st med förlust -88502.31 kr -1.80%

                      mvh
                      Bertil

                      Comment


                      • #26
                        Här är scripten om någon vill labba själv.
                        -----------------------------
                        { Orca swing köp }
                        { 180302 }

                        innehav:=Portfolio(v)
                        ok_att_handla:=eqv(innehav,0)

                        { Trigg då DAX större än OMXS30 }
                        Trigg01:=0.5
                        { Trigg då OMXS30 större än DAX }
                        Trigg02:=0.5

                        SetGVarIf(trigg01,8001,1,T)
                        tidspärr1:=500
                        tidspärr2:=500

                        lt1:=LastTrade(S,D)
                        lt2:=LastTrade(B,D)
                        minSedanSälj:=Mult(Sub(Date(),lt1),1440)
                        minSedanKöp:=Mult(Sub(Date(),lt2),1440)
                        delay_ok:=gt(minSedanSälj,tidspärr1)
                        trans_ok:=gt(minSedanKöp,tidspärr2)


                        i1(
                        { kl 09.00 }
                        tid0=eqv(int(mult(frac(d),1440)),541)
                        SetGVarIf(cash(T),8000,and(ok_att_handla,tid0),T)
                        SetGVarIf(d,8006,tid0,T)

                        { kl 09.01 }
                        tid1=gt(int(mult(frac(d),1440)),545)

                        { före kl 13.00 }
                        tid2=lt(int(mult(frac(d),1440)),780)

                        indexOMXS30=Mult(Div(Sub(cmpref(c,0,a),GetGVar(8011)),GetGVar(8011)),100)
                        indexDAX=Mult(Div(Sub(cmpref(c,0,b),GetGVar(8012)),GetGVar(8012)),100)

                        skillnad01=sub(indexDAX,indexOMXS30)
                        SetGVarIf(skillnad01,8003,1,T)

                        start01=if(ge(d,GetGVar(8006)),skillnad01,0)
                        maxhittills01=HHV(start01,510)
                        gräns01=mult(maxhittills01,0.9)

                        villkor11=Gt(skillnad01,trigg01)
                        villkor12=Lt(skillnad01,gräns01)
                        villkor13=EQV(crcid(),468276556)
                        villkor19=And(And(villkor11,villkor12),villkor13)


                        skillnad02=sub(indexOMXS30,indexDAX)

                        start02=if(ge(d,GetGVar(8006)),skillnad02,0)
                        maxhittills02=HHV(start02,510)
                        gräns02=mult(maxhittills02,0.9)


                        villkor21=Gt(skillnad02,trigg02)
                        villkor22=Lt(skillnad02,gräns02)
                        villkor23=EQV(crcid(),2930203935)
                        villkor29=And(And(villkor21,villkor22),villkor23)

                        Köpa=Or(villkor19,villkor29)
                        ditt_köpscript=And(And(And(And(köpa,tid1),tid2),delay_ok),trans_ok)
                        köpsignal=And(ditt_köpscript,ok_att_handla)
                        SetGVarIf(skillnad01,8002,köpsignal,T)
                        SetGVarIf(1,8005,köpsignal,T)
                        Mult(köpsignal,10)
                        )


                        {@A(1,OMX Stock )@B(1,B-IDX-DAXI)}

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

                        { Orca swing sälj }
                        { 180302 }

                        innehav:=Portfolio(v)
                        ok_att_handla:=eqv(innehav,0)

                        tidspärr1:=1
                        tidspärr2:=1

                        lt1:=LastTrade(S,D)
                        lt2:=LastTrade(B,D)
                        minSedanSälj:=Mult(Sub(Date(),lt1),1440)
                        minSedanKöp:=Mult(Sub(Date(),lt2),1440)
                        delay_ok:=gt(minSedanSälj,tidspärr1)
                        trans_ok:=gt(minSedanKöp,tidspärr2)


                        i1(

                        villkor01=Gt(GetGVar(8002),0)
                        villkor02=Eqv(GetGVar(8005),1)
                        villkor03=EQV(crcid(),2930203935)
                        villkor09=And(And(villkor01,villkor02),villkor03)

                        villkor11=Lt(GetGVar(8002),0)
                        villkor12=Eqv(GetGVar(8005),1)
                        villkor13=EQV(crcid(),468276556)
                        villkor19=And(And(villkor11,villkor12),villkor13)


                        Sälja=or(villkor09,villkor19)
                        ditt_säljscript=And(And(sälja,delay_ok),trans_ok)
                        säljsignal=And(ditt_säljscript,ok_att_handla)
                        SetGVarIf(0,8004,säljsignal,T)
                        SetGVarIf(0,8005,säljsignal,T)

                        Mult(säljsignal,10)
                        )

                        -------------------------------------------------
                        { Egen Orca swing TP lång }
                        { 180302 }
                        innehav:=Portfolio(v)
                        ok_att_handla:=Gt(innehav,0)
                        tidspärr1:=30
                        tidspärr2:=30
                        lt1:=LastTrade(S,D)
                        lt2:=LastTrade(S,D)
                        minSedanSälj:=Mult(Sub(Date(),lt1),1440)
                        minSedanTrans:=Mult(Sub(Date(),lt2),1440)
                        delay_ok:=gt(minSedanSälj,tidspärr1)
                        trans_ok:=gt(minSedanTrans,tidspärr2)


                        i1(
                        tid1=gt(int(mult(frac(d),1440)),540)
                        { före kl 09.11 }
                        tid2=lt(int(mult(frac(d),1440)),1041)

                        villkor01=Lt(Abs(GetGVar(8003)),GetGVar(8009))

                        sälja=And(villkor01,1)

                        ditt_säljscript=And(And(And(sälja,tid1),tid2),1)
                        säljsignal=And(ditt_säljscript,ok_att_handla)

                        Mult(säljsignal,25)
                        )

                        -----------------------------------
                        { Egen Orca swing TP kort }
                        { 180227 }
                        innehav:=Portfolio(v)
                        ok_att_handla:=Lt(innehav,0)
                        TP01:=0.1

                        SetGVarIf(TP01,8009,1,T)


                        tidspärr1:=30
                        tidspärr2:=30
                        lt1:=LastTrade(B,D)
                        lt2:=LastTrade(B,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ärr2)


                        i1(
                        tid1=gt(int(mult(frac(d),1440)),540)
                        { före kl 09.11 }
                        tid2=lt(int(mult(frac(d),1440)),1041)

                        villkor01=Lt(Abs(GetGVar(8003)),TP01)
                        Köpa=and(villkor01,1)

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

                        -------------------------
                        mvh
                        Bertil
                        Last edited by Bertil; 2018-03-03, 11:50.

                        Comment


                        • #27
                          Antalsscript vid köp och sälj
                          ---------------------------------
                          { Orca antal }

                          i1(
                          köpantal=Int(Div(Div(GetGVar(8000),2),c))
                          Add(köpantal,0)
                          )
                          ---------------------------------
                          Använd simuleringskonto på 100000 och sätt 0.02 % som courtage.

                          mvh
                          Bertil
                          Last edited by Bertil; 2018-03-02, 23:56.

                          Comment


                          • #28
                            Tackar, skall labba lite i helgen med dina script.

                            Comment


                            • #29
                              Får det inte att stämma riktigt, TP köper riktigt på DAXEN men blir fel antal på OMX,

                              2017-12-29 09:12:59 OMXS30 Köp 62,00 1*590,39 0,10 62,00 Innehav ORCA Long
                              2017-12-29 09:13:59 B-IDX-DAXI Sälj -7,00 12*972,73 0,09 -7,00 Blankad ORCA Short
                              2018-01-11 16:51:59 B-IDX-DAXI Köp 7,00 13*169,05 0,09 -196,32 -1,51 -1*374,42 -1,51 75:38:00 0,00 -1*374,42 27 ORCA TP Short
                              2018-01-11 16:51:59 OMXS30 Sälj -59,00 1*628,38 0,10 37,99 2,39 2*241,22 2,39 71:09:00 3,00 Innehav 2*241,22 ORCA TP Long
                              2018-01-11 16:52:59 OMXS30 Sälj -59,00 1*627,94 0,10 37,55 2,36 112,46 2,36 00:01:00 -56,00 Blankad 2*353,67 ORCA TP Long
                              2018-01-11 16:52:59 OMXS30 Köp 59,00 1*627,94 0,10 0,00 0,00 -0,10 0,00 00:00:00 3,00 Innehav 2*353,58 ORCA TP Short

                              Vad kan vara fel tror du Bertil?

                              Comment


                              • #30
                                va) scriptet på TP skall vara

                                va) allt innehav av aktuell aktie

                                mvh
                                Bertil

                                Comment

                                Working...
                                X