Allmänt meddelande

Collapse
No announcement yet.

Standardmodell med MFI

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

  • #31
    Det blir exakt samma fel i bänken med standardmodellerna, något gör jag fel, men vad
    Berra

    Comment


    • #32
      Hur långt tillbaka försöker du simulera? Det kan bli problem om du simulerar flera aktier samtidigt för långt tillbaka pga ett minnesproblem som vi håller på att rätta till. Prova en kortare period och se om det blir skillnad.

      Comment


      • #33
        Ursprungligen postat av Rikard Nilsson Visa inlägg
        Hur långt tillbaka försöker du simulera? Det kan bli problem om du simulerar flera aktier samtidigt för långt tillbaka pga ett minnesproblem som vi håller på att rätta till. Prova en kortare period och se om det blir skillnad.

        Jag körde från 15/8-6/9 blir inget, från 2/9-6/9 samma 5/9-6/9 heller inget svaret blir hela tiden detta: Initiering analys misslyckades. Troligen saknade eller felaktiga diskfiler.
        100.000%
        Arbetad tid: 78ms
        1021 gjorda perioder
        0 skapade signaler
        Tid:20130908 10:53:59
        Berra

        Comment


        • #34
          Hm, men har du intradaykurser för alla aktier du kör?

          Comment


          • #35
            Ursprungligen postat av Rikard Nilsson Visa inlägg
            Hm, men har du intradaykurser för alla aktier du kör?
            Ja det ändrade jag för någon vecka sedan och fyllde på från kundservice, large-, mid-, smalcap och aktietorget plus ngm har kört med både ibockat och utan. har kört bänken i minut och i 5 sek men ger samma resultat.

            Edit: men jag kan naturligtvis ha gjort något som är fel ändå det finns ju många ställen att klick in felaktigheter på...
            Berra

            Comment


            • #36
              Du skulle ju kunna prova att skapa helt nytt projekt i bänken ifall något är korrupt med det första. Annars ska det bara vara att fylla i insatsbelopp i Indata script, fält 21 (Standardmodell insats), välja aktier att köra på i bänken och åka. Börja med ett mindre antal så att du ser att det fungerar först.
              Jag provade på ungefär motsvarande OMXS30-aktierna.

              Jag valde två parallella ordermodeller i bänken, ett konto med 59 kr minimicourtage, 0.04%. Viktigt att kryssa för Styrs helt av ordermodeller också.

              Comment


              • #37
                nga hittade ett villkor som kan tas bort och få ännu bättre resultat, det är näst sista raden i säljscriptet som vi ändrar till:

                sell2=and(and(and(and(or(stoploss,sell1),innehav),ej_köp_idag),inpådagen),öppet)


                så håller strategin alltid position till strax innan stängning. Tidigare kunde den även sälja under dagen om det gått minst 5 dagar sedan inköp. Men lite simuleringar visar att det statistiskt blir bättre att hålla hela dagen.

                Comment


                • #38
                  Jag hade också samma problem att köar den i bänken men löste det genom att köra ett helt nytt projekt.

                  Modellen ser intressant ut och den verkar rulla på bra. Det skulle vara väldigt intressant att vända på den och se resultatet om man blankar aktier som toppat ur. Om även det skulle funka så skulle det ju vara optimalt om man hade en portfölj som låg både lång och kort.

                  Comment


                  • #39
                    Simulerade från 28 maj 2012 fram till idag.
                    avg trade : 0,37% och avg tid i marknad 63 timmar. Vässning behövs mao.

                    En 5dagar d-stat exit ger istället ett litet minusresultat.

                    Känns som det behövs lite filter för att den kan jobba med acceptabel edge. Ambitionen för de flesta här är väl att ligga någonstans mot 0,20% per tradingdag i edge.

                    Comment


                    • #40
                      Har du kört med fast insats? Eller variabel?

                      Jag gjorde en körning med följande aktier:

                      ABB
                      ALFA
                      ASSA B
                      ATCO A
                      BOL
                      ELUX B
                      ERIC B
                      LUPE
                      SKF B
                      SWED A
                      TEL2 B
                      TLSN
                      VOLV B

                      från 1 sept 2011 till nu och fick 140 940 kr i avkastning netto med 100 000 kr som insats i varje affär. 133 affärer gjordes, vilket blir 1060 kr i genomsnittsvinst per trade, eller en dryg procent om man så vill.


                      RSI-modellen i den andra tråden ger ännu högre vinst/trade, 241 kSEK på 159 affärer, dvs ca 1,51% netto.


                      Comment


                      • #41
                        Hur skulle scriptet se ut om man vände på det och även blankade aktier? Jag sitter och pillar med det men får det inte riktigt att funka ännu.

                        Comment


                        • #42
                          Halloj

                          Sitter och pillar med denna modell och får fina resultat i bänken men tycker ändå när jag kollar närmare att den tar trades den inte borde. Vid flera tillfällen tar den trades fast aktien handlats under 50 dagars. Tex fick jag köp i Meda igår som handlar under 50 dagars glidande. Ska den göra det?

                          Comment


                          • #43
                            Jo, den kan handla även om kursen är under MA50, det är bara kriterierna som ändras lite om kursen varit över MA50 i minst 5 dagar. Då krävs inte lika mycket nedställ på MFI-kurvan för köp. Annars missar systemet många fina trades i upptrend.

                            Det går säkert att hitta andra villkor som stoppar en del sämre trades.

                            Comment


                            • #44
                              Senaste versionerna jag simulerar ser ut så här:

                              Köp:


                              { definiera MFI-kurva }
                              mval=mov(mfi(3),3,e)
                              ma50=mov(c,50,s)

                              { testa om priset varit över MA50 i minst 5 dagar }
                              upptrend=llv(gt(c,ma50),5)

                              { avgör om gräns för att trigga signal på MFI ska vara 1 eller 10 }
                              styrka=and(upptrend,gt(macd2(n),macd2(t)))
                              mfgräns=if(styrka,10,1)


                              { läs av aktuell rating från celler 830-834}
                              rating1=getgvar(830)
                              rating2=getgvar(831)
                              rating3=getgvar(832)
                              rating4=getgvar(833)

                              { läs av aktiellt ID för kandidater }
                              crc1=getgvar(835)
                              crc2=getgvar(836)
                              crc3=getgvar(837)
                              crc4=getgvar(838)

                              { räkna ut aktuell rating för den aktie scriptet exekveras på just nu }
                              rate1=div(hhv(h,10),llv(l,10))
                              rate2=topbars(lt(c,ma50),100,1)
                              rate3=mult(mult(3,rate1),rate2)

                              { definiera klockslag då rating testas och skrivs till celler följt av själva handeln minuten efter}
                              kl1720=le(mult(1440,sub(market(c),frac(date()))),8)
                              kl1719=and(le(mult(1440,sub(market(c),frac(date()))),9),not(kl1720))
                              ej_innehav=le(portfolio(v),0)

                              { köpsignal definieras som att MFI igår ska vara under gräns 1 eller 10, och högre idag}
                              botten=and(aref(lt(mval,mfgräns),1),gt(mval,5))
                              högre_rate=gt(mult(and(ej_innehav,botten),rate3),rating1)

                              { testa om aktuell aktie har köpsignal och högre rating än den högsta lagrade värdet och skriv i så fall det nya högsta värdet till call830 samt flytta de tidigare värderna en cell bakåt så att bästa kandidaten alltid finns i cell 830 - skriv samtidigt ID i motsvarande celler 835 - 839}
                              skriv_rate=and(högre_rate,kl1719)
                              setgvarif(rate3,830,skriv_rate)
                              setgvarif(rating1,831,skriv_rate)
                              setgvarif(rating2,832,skriv_rate)
                              setgvarif(rating3,833,skriv_rate)
                              setgvarif(rating4,834,skriv_rate)
                              setgvarif(crcid(),835,skriv_rate)
                              setgvarif(crc1,836,skriv_rate)
                              setgvarif(crc2,837,skriv_rate)
                              setgvarif(crc3,838,skriv_rate)
                              setgvarif(crc4,839,skriv_rate)


                              öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                              draw(mval,2,dcsvw)
                              draw(ma50,3,dgqb)

                              {klockslag då alla celler nollställs direkt efter öppning}
                              nolltid=lt(frac(date()),0.377)
                              nollställ0=setgvarif(0,830,nolltid)
                              nollställ1=setgvarif(0,831,nolltid)
                              nollställ2=setgvarif(0,832,nolltid)
                              nollställ3=setgvarif(0,833,nolltid)
                              nollställ4=setgvarif(0,834,nolltid)
                              nollställ5=setgvarif(0,835,nolltid)

                              {läs av ID för sparade köpkandidater och jämför med CRC ID för den aktie scriptet exekveras på just nu}
                              aktie1=getgvar(835)
                              aktie2=getgvar(836)
                              aktie3=getgvar(837)
                              aktie4=getgvar(838)
                              aktie5=getgvar(839)
                              kandidat_a=if(gt(aktie1,0),aktie1,aktie2)
                              kandidat_b=if(gt(kandidat_a,0),kandidat_a,aktie3)
                              kandidat_c=if(gt(kandidat_b,0),kandidat_b,aktie4)
                              kandidat_d=if(gt(kandidat_c,0),kandidat_c,aktie5)

                              { koppla ihop logiska villkor och testa om CRC ID är lika med sparad kandidat. Köp i så fall och nollställ cellen så att nästa scriptkörningscykel läser nästa sparade kandidat}
                              köp1=and(and(botten,ej_innehav),and(öppet,kl1720))
                              köp2=and(and(köp1,eqv(crcid(),kandidat_d)),gt(kandidat_d,0))
                              setgvarif(0,835,or(nolltid,and(eqv(crcid(),aktie1),köp2)))
                              setgvarif(0,836,or(nolltid,and(eqv(crcid(),aktie2),köp2)))
                              setgvarif(0,837,or(nolltid,and(eqv(crcid(),aktie3),köp2)))
                              setgvarif(0,838,or(nolltid,and(eqv(crcid(),aktie4),köp2)))
                              setgvarif(0,839,or(nolltid,and(eqv(crcid(),aktie5),köp2)))
                              mult(köp2,10)



                              Sälj:


                              köpdag=lasttrade(b,d)
                              mval=mov(mfi(3),3,e)
                              ma50=mov(c,50,s)
                              draw(ma50,2,rqb1)
                              underma=lt(c,ma50)
                              svaghet=hhv(lt(c,ma50),60)
                              mfgräns=if(underma,80,99)
                              topp=and(aref(gt(mval,mfgräns),1),or(lt(c,aref(l,1)),lt(mval,95)))
                              ej_köp_idag=gt(int(d),köpdag)
                              5dgr=lt(köpdag,cmpref(d,5,a))
                              kl1720=le(mult(1440,sub(market(c),frac(date()))),10)
                              inpådagen=gt(frac(date()),0.377)
                              öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                              vinst=gt(c,mult(lasttrade(b,p),1.005))
                              innehav=gt(portfolio(v),0)
                              stoploss=lt(c,mult(0.8,lasttrade(b,p)))
                              sell1=and(and(or(5dgr,kl1720),or(topp,and(5dgr,vinst))),svaghet)
                              sell2=and(and(and(and(or(stoploss,sell1),innehav),ej_köp_idag),inpådagen),öppet)
                              mult(sell2,10)

                              {@A(0,)}

                              Comment


                              • #45
                                Häpp! Lite ändring i säljvillkoren ledde till 530% vinst på testprojektet istället för ca 350% tidigare. Jag har kört från 2009 till nu med 100 000 kr fast insats på följande aktier:

                                ABB
                                ALFA
                                ASSA B
                                ATCO A
                                BOL
                                ELUX B
                                ERIC B
                                GETI B
                                LUPE
                                NDA SEK
                                SHB A
                                SKF B
                                SSAB A
                                TLSN
                                VOLV B

                                Köp:

                                { definiera MFI-kurva }
                                mval=mov(mfi(3),3,e)
                                ma50=mov(c,50,s)

                                { testa om priset varit över MA50 i minst 5 dagar }
                                upptrend=llv(gt(c,ma50),5)

                                { avgör om gräns för att trigga signal på MFI ska vara 1 eller 10 }
                                styrka=and(upptrend,gt(macd2(n),macd2(t)))
                                mfgräns=if(styrka,10,1)


                                { läs av aktuell rating från celler 830-834}
                                rating1=getgvar(830)
                                rating2=getgvar(831)
                                rating3=getgvar(832)
                                rating4=getgvar(833)

                                { läs av aktiellt ID för kandidater }
                                crc1=getgvar(835)
                                crc2=getgvar(836)
                                crc3=getgvar(837)
                                crc4=getgvar(838)

                                { räkna ut aktuell rating för den aktie scriptet exekveras på just nu }
                                rate1=div(hhv(h,10),llv(l,10))
                                rate2=topbars(lt(c,ma50),100,1)
                                rate3=mult(mult(3,rate1),rate2)

                                { definiera klockslag då rating testas och skrivs till celler följt av själva handeln minuten efter}
                                kl1720=le(mult(1440,sub(market(c),frac(date()))),8)
                                kl1719=and(le(mult(1440,sub(market(c),frac(date()))),9),not(kl1720))
                                ej_innehav=le(portfolio(v),0)

                                { köpsignal definieras som att MFI igår ska vara under gräns 1 eller 10, och högre idag}
                                botten=and(aref(lt(mval,mfgräns),1),gt(mval,5))
                                högre_rate=gt(mult(and(ej_innehav,botten),rate3),rating1)

                                { testa om aktuell aktie har köpsignal och högre rating än den högsta lagrade värdet och skriv i så fall det nya högsta värdet till call830 samt flytta de tidigare värderna en cell bakåt så att bästa kandidaten alltid finns i cell 830 - skriv samtidigt ID i motsvarande celler 835 - 839}
                                skriv_rate=and(högre_rate,kl1719)
                                setgvarif(rate3,830,skriv_rate)
                                setgvarif(rating1,831,skriv_rate)
                                setgvarif(rating2,832,skriv_rate)
                                setgvarif(rating3,833,skriv_rate)
                                setgvarif(rating4,834,skriv_rate)
                                setgvarif(crcid(),835,skriv_rate)
                                setgvarif(crc1,836,skriv_rate)
                                setgvarif(crc2,837,skriv_rate)
                                setgvarif(crc3,838,skriv_rate)
                                setgvarif(crc4,839,skriv_rate)


                                öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                                draw(mval,2,dcsvw)
                                draw(ma50,3,dgqb)

                                {klockslag då alla celler nollställs direkt efter öppning}
                                nolltid=lt(frac(date()),0.377)
                                nollställ0=setgvarif(0,830,nolltid)
                                nollställ1=setgvarif(0,831,nolltid)
                                nollställ2=setgvarif(0,832,nolltid)
                                nollställ3=setgvarif(0,833,nolltid)
                                nollställ4=setgvarif(0,834,nolltid)
                                nollställ5=setgvarif(0,835,nolltid)

                                {läs av ID för sparade köpkandidater och jämför med CRC ID för den aktie scriptet exekveras på just nu}
                                aktie1=getgvar(835)
                                aktie2=getgvar(836)
                                aktie3=getgvar(837)
                                aktie4=getgvar(838)
                                aktie5=getgvar(839)
                                kandidat_a=if(gt(aktie1,0),aktie1,aktie2)
                                kandidat_b=if(gt(kandidat_a,0),kandidat_a,aktie3)
                                kandidat_c=if(gt(kandidat_b,0),kandidat_b,aktie4)
                                kandidat_d=if(gt(kandidat_c,0),kandidat_c,aktie5)

                                { koppla ihop logiska villkor och testa om CRC ID är lika med sparad kandidat. Köp i så fall och nollställ cellen så att nästa scriptkörningscykel läser nästa sparade kandidat}
                                köp1=and(and(botten,ej_innehav),and(öppet,kl1720))
                                köp2=and(and(köp1,eqv(crcid(),kandidat_d)),gt(kandidat_d,0))
                                setgvarif(0,835,or(nolltid,and(eqv(crcid(),aktie1),köp2)))
                                setgvarif(0,836,or(nolltid,and(eqv(crcid(),aktie2),köp2)))
                                setgvarif(0,837,or(nolltid,and(eqv(crcid(),aktie3),köp2)))
                                setgvarif(0,838,or(nolltid,and(eqv(crcid(),aktie4),köp2)))
                                setgvarif(0,839,or(nolltid,and(eqv(crcid(),aktie5),köp2)))
                                retval(2,0)




                                Sälj:

                                köpdag=lasttrade(b,d)
                                mval=mov(mfi(3),3,e)
                                ma50=mov(c,50,s)
                                draw(ma50,2,rqb1)
                                underma=lt(c,ma50)
                                svaghet=hhv(lt(c,ma50),60)
                                mfgräns=if(underma,80,99)
                                topp=and(aref(gt(mval,mfgräns),1),or(lt(c,aref(l,1)),lt(mval,95)))
                                ej_köp_idag=gt(int(d),köpdag)
                                5dgr=lt(köpdag,cmpref(d,5,a))
                                kl1720=le(mult(1440,sub(market(c),frac(date()))),10)
                                inpådagen=gt(frac(date()),0.377)
                                öppet=ge(mult(1440,sub(market(c),frac(date()))),6)
                                vinst=gt(c,mult(lasttrade(b,p),1.005))
                                innehav=gt(portfolio(v),0)
                                köpkod_ok=eqv(lasttrade(b,0),2)
                                stoploss=lt(c,mult(0.8,lasttrade(b,p)))
                                sell1=and(and(or(and(vinst,5dgr),kl1720),topp),svaghet)
                                sell2=and(and(and(and(or(stoploss,sell1),innehav),ej_köp_idag),inpådagen),öppet)
                                sell3=and(sell2,köpkod_ok)
                                mult(sell3,10)

                                {@A(0,)}
                                Attached Files

                                Comment

                                Working...
                                X