Allmänt meddelande

Collapse
No announcement yet.

Legato OMX omarbetad och gratis

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

  • #76
    Jag körde med testkonto 100 000 kr, min courtage 0:50 och procentcourtage 0,039%.

    Kör jag senaste versionen som ligger ute nu med samma inställningar får jag:

    Max Result Drawdown 0.1352 %
    Sharpekvot 0.4663 (månadsresultat) (pre 1994 0.4657)
    -1.2234 (årsomräknat) (pre 1994 -1.2213)
    Effektivt Resultat: 3.1772% - Slutsaldo kontot: 101758.02

    Avkastning 3177.25 kr 1.11% på 288 affärer under 18159:27:57 tim
    Av dessa blankat 78 st med avkastning 950.14 kr 1.29%
    Innehav 136 st med vinst 3556.10 kr 2.61%
    Innehav 74 st med förlust -1328.99 kr -1.74%
    Blankning 58 st med vinst 1456.17 kr 2.58%
    Blankning 20 st med förlust -506.03 kr -2.97%

    Courtage 0.04% Min 0.50



    Frågan är vilken som blir bäst, eller om man ska försöka hitta en optimal kompromiss för filterinställningarna. Det är mest översålt MACD i blankningsscriptet som jag tänker på.

    Comment


    • #77
      Får så här med dom inställningarna på näst sista versionen:
      (Står 150922 i scripten)

      Max Result Drawdown 0.1930 %
      Sharpekvot 0.3887 (månadsresultat) (pre 1994 0.3887)
      -0.6756 (årsomräknat) (pre 1994 -0.6756)
      Effektivt Resultat: 3.2785% - Slutsaldo kontot: 104773.14

      Avkastning 3278.46 kr 1.18% på 284 affärer under 18827:05:57 tim
      Av dessa blankat 83 st med avkastning 1002.77 kr 1.32%
      Innehav 120 st med vinst 3748.58 kr 3.16%
      Innehav 81 st med förlust -1472.89 kr -1.78%
      Blankning 60 st med vinst 1569.40 kr 2.78%
      Blankning 23 st med förlust -566.63 kr -2.90%

      Comment


      • #78
        Ursprungligen postat av Rikard Nilsson Visa inlägg
        Nemas problemas, filen är bifogad.

        Jag har räknat lite på det här resultatet (bilagt i inlägg 67) och det ger en CAGR på 9-procentenheter lägre än resultatet från den föregående modellen. Jag har räknat med 2x gearing, courtage enligt Active Trader samt en spread på 0.15%. Max draw-down är oförändrad, så alltså är den föregående modellen (resultat bilagt i inlägg 64) klart bättre!

        Comment


        • #79
          OK, intressant, testa på denna fil också där gränsen för "översålt" är flyttat längre ned så att fler affärer tillåts.

          Attached Files

          Comment


          • #80
            Ursprungligen postat av Rikard Nilsson Visa inlägg
            OK, intressant, testa på denna fil också där gränsen för "översålt" är flyttat längre ned så att fler affärer tillåts.

            Jag har skrivit över scripten flera gånger. Finns det möjlighet att lägga ut scripten för de olika versionerna. Kan vara en annan tråd om det blir mycket här. Det vore bra att även verifiera i AT med och utan återinvestering.

            Comment


            • #81
              Håller med Henric, skulle vara bra att hitta de olika script versionerna nånstans! Då kan jag klistra in förra versionen på nytt och testa, är ju nåt skumt då jag får så olikt resultat.

              Comment


              • #82
                Ok, vi får lägga ut scripten vid varje ändring. Jag hoppades det skulle kunna undvikas, men om det blir många varianter så går det ju alltid att hitta tidiagare osv.

                Jag har ju inte scripten som ni kört med återinvestering osv, men triggerscripten kan vi återskapa.

                Emil: kan inte du lägga ut scripten du kört med?

                Comment


                • #83
                  { Legato OMX index long 150922 }

                  $par1:=10 {0-30}

                  { Definiera medelvärden för Predictive Average }
                  pred1=find(lt(d,sub(const(d),30)),25,c,1)
                  pred2=find(lt(d,sub(const(d),60)),50,c,1)
                  pred3=find(lt(d,sub(const(d),90)),75,c,1)
                  pred4=find(lt(d,sub(const(d),120)),100,c,1)
                  pred5=find(lt(d,sub(const(d),150)),125,c,1)

                  { Addera medelvärden och ta genomsnitt - förskjut kurvan med par1 perioder }
                  pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                  { Testa om lutning på Predictive Average är upp }
                  p1=gt(roc(pred_tot,5,%),0)

                  { Definiera v2 och v4 som tillåtna datum att gå long }
                  v2=and(lt(dayofmonth(),if(p1,19,14)),gt(dayofmonth(),if(p1,7,6)))
                  v4=and(lt(dayofmonth(),if(p1,32,31)),gt(dayofmonth(),if(p1,19,27)))

                  { testa om vi är nära stängning }
                  stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                  öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                  { beräkna histogram för MACD och testa om extremt översålt }
                  hist=sub(macd2(n),macd2(t))
                  extremt=lt(hist,-5)

                  { definiera långt medelvärde för trend och testa om index är över eller extremt översålt }
                  ma100=mov(c,150,s)
                  över=or(extremt,gt(c,ma100))

                  { Testa om Close är under senaste två dagarnas högsta stängning i kombination med v2 }
                  long1a=and(and(lt(c,hhv(aref(c,1),2)),v2),över)

                  { Testa om Close är under senaste tre dagarnas högsta stängning i kombination med v4 }
                  long1b=and(lt(c,hhv(aref(c,1),3)),v4)

                  { koppla ihop villkor, antingen v2 eller v2 samt innehav noll eller blankat }
                  long2=and(or(long1a,long1b),le(portfolio(v),0))

                  { koppla ihop Long-signal med nära stängning samt ingen säljtransaktion under dagen }
                  long3=and(and(long2,and(öppet,stängning)),gt(int(d),lasttrade(s,d)))

                  { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                  setgvarif(11,880,long3)
                  mult(long3,11)




                  { Legato OMX index sell 150922 }

                  $par1:=10 {0-30}

                  { Definiera medelvärden för Predictive Average }
                  pred1=find(lt(d,sub(const(d),30)),25,c,1)
                  pred2=find(lt(d,sub(const(d),60)),50,c,1)
                  pred3=find(lt(d,sub(const(d),90)),75,c,1)
                  pred4=find(lt(d,sub(const(d),120)),100,c,1)
                  pred5=find(lt(d,sub(const(d),150)),125,c,1)

                  { Addera medelvärden och ta genomsnitt - förskjut kurvan med par1 perioder }
                  pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                  { Testa om lutning på Predictive Average är ned }
                  p1=lt(roc(pred_tot,5,%),0)

                  { Definiera v1 och v3 som tillåtna datum att gå shrt }
                  v1=or(lt(dayofmonth(),if(p1,8,7)),gt(dayofmonth(),if(p1,30,31)))
                  v3=and(lt(dayofmonth(),if(p1,23,20)),gt(dayofmonth(),if(p1,10,13)))

                  { testa om vi är nära stängning }
                  stängning=le(mult(1440,sub(market(c),frac(date()))),8)
                  öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                  { definiera långt medelvärde för trend och testa om index är under }
                  ma200=mov(c,200,s)
                  under=lt(c,ma200)

                  { testa om kurs är under gårdagens stängning samt lång trend nedåt }
                  shrt1=and(lt(c,aref(c,1)),under)

                  { koppla ihop shrt-villkor med tillåtna datum samt innehav noll eller större }
                  shrt2=and(and(shrt1,or(v1,v3)),ge(portfolio(v),0))

                  { koppla ihop villkor med nära börsstängning samt ingen köptransaktion under dagen }
                  shrt3=and(and(shrt2,and(öppet,stängning)),gt(int(d),lasttrade(b,d)))

                  { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                  setgvarif(9,880,shrt3)

                  mult(shrt3,10)

                  Comment


                  • #84
                    Fint, och här kommer det jag labbar med just nu, har testat att införa dynamisk stoploss på både long-sidan och shrt-sidan. Simuleringen gjord utan courtage bara för att rensa bort alla tänkbara felkällor. Period 1 jan 2003 till 28 sep 2015:

                    Max Result Drawdown 0.1528 %
                    Sharpekvot 0.5519 (månadsresultat) (pre 1994 0.5519)
                    -1.0547 (årsomräknat) (pre 1994 -1.0547)
                    Effektivt Resultat: 3.5592% - Slutsaldo kontot: 102140.47

                    Avkastning 3559.15 kr 1.11% på 326 affärer under 17129:40:57 tim
                    Av dessa blankat 102 st med avkastning 1069.42 kr 1.15%
                    Innehav 146 st med vinst 3907.53 kr 2.67%
                    Innehav 78 st med förlust -1417.80 kr -1.76%
                    Blankning 64 st med vinst 1733.71 kr 2.85%
                    Blankning 38 st med förlust -664.29 kr -2.07%

                    { Legato OMX index long 150924 }

                    $par1:=10 {0-30}

                    { Definiera medelvärden för Predictive Average }
                    pred1=find(lt(d,sub(const(d),30)),25,c,1)
                    pred2=find(lt(d,sub(const(d),60)),50,c,1)
                    pred3=find(lt(d,sub(const(d),90)),75,c,1)
                    pred4=find(lt(d,sub(const(d),120)),100,c,1)
                    pred5=find(lt(d,sub(const(d),150)),125,c,1)

                    { Addera medelvärden och ta genomsnitt - förskjut kurvan med par1 perioder }
                    pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                    { Testa om lutning på Predictive Average är upp }
                    p1=gt(roc(pred_tot,5,%),0)

                    { Definiera v2 och v4 som tillåtna datum att gå long }
                    v2=and(lt(dayofmonth(),if(p1,19,14)),gt(dayofmonth(),if(p1,7,6)))
                    v4=and(lt(dayofmonth(),if(p1,32,31)),gt(dayofmonth(),if(p1,19,27)))

                    { testa om vi är nära stängning }
                    stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                    öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                    { beräkna histogram för MACD och testa om extremt översålt }
                    hist=sub(macd2(n),macd2(t))
                    extremt=lt(hist,-5)

                    { definiera långt medelvärde för trend och testa om index är över eller extremt översålt }
                    ma100=mov(c,150,s)
                    över=or(extremt,gt(c,ma100))

                    { Testa om Close är under senaste två dagarnas högsta stängning i kombination med v2 }
                    long1a=and(and(lt(c,hhv(aref(c,1),2)),v2),över)

                    { Testa om Close är under senaste tre dagarnas högsta stängning i kombination med v4 }
                    long1b=and(lt(c,hhv(aref(c,1),3)),v4)

                    { koppla ihop villkor, antingen v2 eller v2 samt innehav noll eller blankat }
                    long2=and(or(long1a,long1b),le(portfolio(v),0))

                    { koppla ihop Long-signal med nära stängning samt ingen säljtransaktion under dagen }
                    long3=and(and(long2,and(öppet,stängning)),gt(int(d),lasttrade(s,d)))

                    { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                    setgvarif(11,880,long3)
                    mult(long3,11)


                    { Legato OMX index sell 150924 }

                    $par1:=10 {0-30}

                    { Definiera medelvärden för Predictive Average }
                    pred1=find(lt(d,sub(const(d),30)),25,c,1)
                    pred2=find(lt(d,sub(const(d),60)),50,c,1)
                    pred3=find(lt(d,sub(const(d),90)),75,c,1)
                    pred4=find(lt(d,sub(const(d),120)),100,c,1)
                    pred5=find(lt(d,sub(const(d),150)),125,c,1)

                    { Addera medelvärden och ta genomsnitt - förskjut kurvan med par1 perioder }
                    pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                    { Testa om lutning på Predictive Average är ned }
                    p1=gt(roc(pred_tot,5,%),0)

                    { Definiera ve1 och ve3 som tillåtna datum att gå ur position }
                    ve1=or(lt(dayofmonth(),if(p1,8,6)),gt(dayofmonth(),if(p1,31,30)))
                    ve3=and(lt(dayofmonth(),if(p1,18,22)),gt(dayofmonth(),if(p1,17,17)))

                    { testa om kurs är lägre än gårdagens lägsa }
                    lägre=lt(c,aref(c,1))

                    { testa om vi är nära stängning samt någon minut in på dagen }
                    inpådagen=gt(frac(date()),0.376)
                    stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                    öppet=and(inpådagen,ge(mult(1440,sub(market(c),frac(date()))),6))

                    { testa om veckodag är tisdag eller senare }
                    rättd=ge(dayofweek(),2)

                    { Stoploss 2 ATR över shrt }
                    stoploss=lt(c,sub(lasttrade(b,p),mult(3,atr(10))))

                    { definiera säljvillkor som kurs lägre än föregående 2 dagars lägsta stängningskurs }
                    sell1=lt(c,llv(aref(c,1),2))

                    { koppla ihop säljvillkor med tillåtna datum och att innehav större än noll }
                    sell2=and(and(sell1,or(stoploss,or(ve1,ve3))),gt(portfolio(v),0))

                    { koppla ihop villkor med nära stängning alternativt lägre kurs än }
                    { gårdagens lägsta samt veckodag tis eller senare samt ingen köptransaktion idag }
                    sell3=and(and(and(sell2,and(or(lägre,stängning),öppet)),rättd),gt(int(d),lasttrade(b,d)))

                    { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                    setgvarif(10,880,sell3)

                    mult(sell3,10)


                    { Legato OMX index shrt 150924 }

                    $par1:=10 {0-30}

                    { Definiera medelvärden för Predictive Average }
                    pred1=find(lt(d,sub(const(d),30)),25,c,1)
                    pred2=find(lt(d,sub(const(d),60)),50,c,1)
                    pred3=find(lt(d,sub(const(d),90)),75,c,1)
                    pred4=find(lt(d,sub(const(d),120)),100,c,1)
                    pred5=find(lt(d,sub(const(d),150)),125,c,1)

                    { Addera medelvärden och ta genomsnitt - förskjut kurvan med par1 perioder }
                    pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                    { Testa om lutning på Predictive Average är ned }
                    p1=lt(roc(pred_tot,5,%),0)

                    { Definiera v1 och v3 som tillåtna datum att gå shrt }
                    v1=or(lt(dayofmonth(),if(p1,8,7)),gt(dayofmonth(),if(p1,30,31)))
                    v3=and(lt(dayofmonth(),if(p1,23,20)),gt(dayofmonth(),if(p1,10,13)))

                    { testa om vi är nära stängning }
                    stängning=le(mult(1440,sub(market(c),frac(date()))),8)
                    öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

                    { definiera långt medelvärde för trend och testa om index är under }
                    ma200=mov(c,200,s)
                    under=lt(c,ma200)

                    { beräkna histogram för MACD och testa om extremt översålt }
                    ej_extremt=gt(macd2(n),-50)

                    { testa om kurs är under gårdagens stängning samt lång trend nedåt }
                    shrt1=and(lt(c,aref(c,1)),under)

                    { koppla ihop shrt-villkor med tillåtna datum samt innehav noll eller större }
                    shrt2=and(and(and(shrt1,or(v1,v3)),ge(portfolio(v),0)),ej_extremt)

                    { koppla ihop villkor med nära börsstängning samt ingen köptransaktion under dagen }
                    shrt3=and(and(shrt2,and(öppet,stängning)),gt(int(d),lasttrade(b,d)))

                    { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                    setgvarif(9,880,shrt3)

                    mult(shrt3,10)


                    { Legato OMX index cover 150924 }

                    { ange dagar för att testa exitvillkor }
                    dagar:=15

                    { testa om nära stängning samt någon minut in på dagen }
                    inpådagen=gt(frac(date()),0.376)
                    stängning=le(mult(1440,sub(market(c),frac(date()))),6)
                    öppet=and(inpådagen,ge(mult(1440,sub(market(c),frac(date()))),4))

                    { testa om kurs är den lägsta stängningen senaste x dagarna }
                    lägsta=llv(aref(c,1),dagar)

                    { koppla ihop cover-villkor med blankat innehav }
                    cover1=lt(c,lägsta)

                    { Stoploss 2 ATR över shrt }
                    stoploss=gt(c,add(lasttrade(s,p),mult(1,atr(10))))

                    { koppla ihop villkor med nära stängning samt ingen säljtransaktion under dagen }
                    cover2=and(and(or(stoploss,cover1),and(or(stoploss,stängning),öppet)),gt(int(d),lasttrade(s,d)))
                    cover3=and(cover2,lt(portfolio(v),0))

                    { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                    setgvarif(10,880,cover3)

                    mult(cover3,10)

                    Comment


                    • #85
                      { Legato OMX index long 150922 }

                      { Legato OMX index sell 150922 }


                      Emil, i ditt inlägg ovan. Det är entry för long och short. Fanns det inte ändringar i sell exit och cover short?

                      Comment


                      • #86
                        { Legato OMX index cover 150922 }

                        { ange dagar för att testa exitvillkor }
                        dagar:=15

                        { testa om nära stängning samt någon minut in på dagen }
                        inpådagen=gt(frac(date()),0.376)
                        stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                        öppet=and(inpådagen,ge(mult(1440,sub(market(c),frac(date()))),6))

                        { testa om kurs är den lägsta stängningen senaste x dagarna }
                        lägsta=llv(aref(c,1),dagar)

                        { koppla ihop cover-villkor med blankat innehav }
                        cover1=and(lt(portfolio(v),0),lt(c,lägsta))

                        { koppla ihop villkor med nära stängning samt ingen säljtransaktion under dagen }
                        cover2=and(and(cover1,and(stängning,öppet)),gt(int(d),lasttrade(s,d)))

                        { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                        setgvarif(10,880,sell3)

                        mult(cover2,10)



                        { Legato OMX index sell 150922 }

                        $par1:=10 {0-30}

                        { Definiera medelvärden för Predictive Average }
                        pred1=find(lt(d,sub(const(d),30)),25,c,1)
                        pred2=find(lt(d,sub(const(d),60)),50,c,1)
                        pred3=find(lt(d,sub(const(d),90)),75,c,1)
                        pred4=find(lt(d,sub(const(d),120)),100,c,1)
                        pred5=find(lt(d,sub(const(d),150)),125,c,1)

                        { Addera medelvärden och ta genomsnitt - förskjut kurvan med par1 perioder }
                        pred_tot=aref(div(add(pred1,add(pred2,add(pred3,add(pred4,pred5)))),5),mx(1,$par1):35)

                        { Testa om lutning på Predictive Average är ned }
                        p1=gt(roc(pred_tot,5,%),0)

                        { Definiera ve1 och ve3 som tillåtna datum att gå ur position }
                        ve1=or(lt(dayofmonth(),if(p1,8,6)),gt(dayofmonth(),if(p1,31,30)))
                        ve3=and(lt(dayofmonth(),if(p1,18,22)),gt(dayofmonth(),if(p1,17,17)))

                        { testa om kurs är lägre än gårdagens lägsa }
                        lägre=lt(c,aref(l,1))

                        { testa om vi är nära stängning samt någon minut in på dagen }
                        inpådagen=gt(frac(date()),0.376)
                        stängning=le(mult(1440,sub(market(c),frac(date()))),10)
                        öppet=and(inpådagen,ge(mult(1440,sub(market(c),frac(date()))),6))

                        { testa om veckodag är tisdag eller senare }
                        rättd=ge(dayofweek(),2)

                        { definiera säljvillkor som kurs lägre än föregående 2 dagars lägsta stängningskurs }
                        sell1=lt(c,llv(aref(c,1),2))

                        { koppla ihop säljvillkor med tillåtna datum och att innehav större än noll }
                        sell2=and(and(sell1,or(ve1,ve3)),gt(portfolio(v),0))

                        { koppla ihop villkor med nära stängning alternativt lägre kurs än }
                        { gårdagens lägsta samt veckodag tis eller senare samt ingen köptransaktion idag }
                        sell3=and(and(and(sell2,and(or(lägre,stängning),öppet)),rättd),gt(int(d),lasttrade(b,d)))

                        { skriv signal till cell 880 som minifuture-modeller läser av och lägger order }
                        setgvarif(10,880,sell3)

                        mult(sell3,10)



                        Enda jag kan tänka mig är att jag råkat pilla i dessa original script av misstag, men hittar inte nåt uppenbart!?

                        Comment


                        • #87
                          Jag kommer också ihåg att jag fick en stor skillnad när jag körde med återinvestering. Jag testar imorgon och hittar jag inget så får det vara. I fortsättningen kommer jag att spara de gamla när jag uppdaterar. Kan vara bra för ideér, skillnader med och utan återinvestering, mm.

                          Comment


                          • #88
                            Ursprungligen postat av Rikard Nilsson Visa inlägg
                            OK, intressant, testa på denna fil också där gränsen för "översålt" är flyttat längre ned så att fler affärer tillåts.
                            Hej, jag tänkte räkna på utfallet i transaktionsfilen, men filen är skum. Den är oläslig.

                            Comment


                            • #89
                              Har klistrat in det i Open Office, kanske inte blev helt hundra.

                              Comment


                              • #90
                                Ursprungligen postat av Rikard Nilsson Visa inlägg
                                Har klistrat in det i Open Office, kanske inte blev helt hundra.
                                Jag kör "closed office", dvs Microsoft...
                                Har du möjlighet att lägga ned filen i Excel-format, alt. ASCII-format?

                                ...eller så väntar jag på nästa reinkarnation av modellen.
                                Last edited by Christer; 2015-09-28, 22:31.

                                Comment

                                Working...
                                X