Allmänt meddelande

Collapse
No announcement yet.

Standardmodell med MFI

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

  • #46
    Ursprungligen postat av Rikard Nilsson Visa inlägg
    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:
    Rikard vore prima om du kunde kommentera säljskriptet lite också.
    Vad var ändringen i säljskriptet som påverkade?
    När du ändrar parametrar har du samma aktier (relevant jämnförelse)?

    Comment


    • #47
      Jo, självklart kör man med samma projekt och aktier när man testar fram bästa villkoren etc. Det som gjorde skillnad var att ta bort säljvillkor att position legat i minst 5 dagar och ligger plus. Det krävs nu lite mer, det ska ha bildats en topp i MFI också.



      köpdag=lasttrade(b,d)

      { definiera MFI-kurva och 50 dgr medel }
      mval=mov(mfi(3),3,e)
      ma50=mov(c,50,s)
      draw(ma50,2,rqb1)

      { Testa om priset är under MA50 }
      underma=lt(c,ma50)

      { Testa om priset varit under MA50 någon gång de senaste 60 dagarna }
      svaghet=hhv(lt(c,ma50),60)

      { Bestäm gräns för MFI baserat på om priset är över eller under MA50 }
      mfgräns=if(underma,80,99)

      { Definiera topp hos MFI }
      topp=and(aref(gt(mval,mfgräns),1),or(lt(c,aref(l,1)),lt(mval,95)))

      { Säkerställ att köp ej skett idag }
      ej_köp_idag=gt(int(d),köpdag)

      { Testa om det gått minst 5 dagar sedan köp }
      5dgr=lt(köpdag,cmpref(d,5,a))

      { Testa om klockan är 1720 eller senare }
      kl1720=le(mult(1440,sub(market(c),frac(date()))),10)

      { Säkerställ att vi är ett par minuter in på dagen }
      inpådagen=gt(frac(date()),0.377)

      { Säkerställ att börsen fortfarande är öppet }
      öppet=ge(mult(1440,sub(market(c),frac(date()))),6)

      { Testa om minst 0.5% vinst }
      vinst=gt(c,mult(lasttrade(b,p),1.005))

      { Testa om innehav finns }
      innehav=gt(portfolio(v),0)

      { Säkerställ att innehavet är köpt av MFI-modell }
      köpkod_ok=eqv(lasttrade(b,0),2)

      { Definiera stoploss som pris 20% under inköp }
      stoploss=lt(c,mult(0.8,lasttrade(b,p)))

      { definiera säljvillkor som kl 1720 alternativt det gått minst 5 dgr sedan köp och positionen ligger plus}
      { och att en topp bildats hos MFI samt priset varit under MA50 någon gång under senaste 60 dagarma }
      { alternativt att stoploss löst ut }
      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,)}

      Comment


      • #48
        Nu när vi kan simulera fler aktier längre tillbaka med senaste programversionen har jag filat lite till på MFI-modellen. Nytt är ett trendfilter som spärrar affärer om kursen både är under MA200 och MA200 pekar nedåt. Dvs, för köp behövs antingen ett MA200 är upp eller att priset är över MA200.

        Ny simulering på följande aktier (fast insats 100 000 kr per trade) från 2006 så att vi inkluderar hela finanskrisen tills nu ger nedanstående:

        ABB
        ALFA
        ASSA B
        ATCO A
        BOL
        ELUX B
        ERIC B
        GETI B
        INVE B
        LUPE
        MTG B
        NDA SEK
        SAND
        SCA B
        SCV B
        SEB A
        SECU B
        SHB A
        SKA B
        SKF B
        SSAB A
        SWED A
        TLSN
        VOLV B

        Totalt Avkastning 481697.88 kr 482.05% på 451 affärer under 2584:29:49 timmar
        Av dessa blankat 0 st med avkastning 0.00 kr 0.00%
        Innehav 295 st med vinst 1360080.13 kr 1361.25%
        Innehav 156 st med förlust -878382.25 kr -879.20%



        { Standardmodell 3 dgr MFI }
        { 130915 }
        { definiera MFI-kurva }
        mval=mov(mfi(3),3,e)
        ma50=mov(c,50,s)
        ma200=mov(c,200,s)
        trend_ok=or(gt(c,ma200),gt(ma200,aref(ma200,1)))

        { 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,50),llv(l,50))
        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(and(köp1,eqv(crcid(),kandidat_d)),gt(kandidat_d,0)),trend_ok)
        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)
        mult(köp2,10)
        Attached Files

        Comment


        • #49
          Kör nu dryg 11300 MB i minne på min virtualizering.
          Får ändå detta när jag simulerar.
          --


          2013-09-16 12:09:48.674 WhileAnalyzerJobTodo - Starting Analyzer thread
          2013-09-16 12:10:15.653 AnalysisSplitQuoteDataToMem - failed loading "C:\Documents and Settings\All Users\Application Data\NordnetAutoTrader\Analyzer\_MFI_trend_volla_dat.bin" at memUsed=1813903992 Inst=91
          2013-09-16 12:10:15.653 WhileAnalysisJobTodo - initialize failed!
          2013-09-16 12:10:15.663 C:\Documents and Settings\All Users\Application Data\NordnetAutoTrader\Analyzer\

          Comment


          • #50
            Hm, har du skapat om projektet?

            Comment


            • #51
              Om du menar genom att klicka "NY" här (se screenshot), (skapa en form av Ny version alltså.)
              Så JA, Det skall väl inte krävas att man börjar om på helt ny kula genom att avsluta hela programmet och starta om?
              Attached Files

              Comment


              • #52
                Då ska det vara ok, men kör du på ver. 2.1.1.2 nu? Mer fixat med minneshanteringen.

                Comment


                • #53
                  Ursprungligen postat av PerG Visa inlägg
                  ...Det skall väl inte krävas att man börjar om på helt ny kula genom att avsluta hela programmet och starta om?
                  Jo, du måste avsluta analyzern och trycka på ny då du kommer in i programmet och bygga upp från scratch.
                  mvh
                  Bertil

                  Comment


                  • #54
                    Ursprungligen postat av Rikard Nilsson Visa inlägg
                    Då ska det vara ok, men kör du på ver. 2.1.1.2 nu? Mer fixat med minneshanteringen.
                    Jag kör på den versionen, men det är nog kanske som Bertil säger.

                    Stänga ned Analyzern -> Skapa ett helt nytt projekt från scratch (dvs deleta alla gamla) som krävs.

                    Comment


                    • #55
                      Ursprungligen postat av PerG Visa inlägg
                      Jag kör på den versionen, men det är nog kanske som Bertil säger.

                      Stänga ned Analyzern -> Skapa ett helt nytt projekt från scratch (dvs deleta alla gamla) som krävs.
                      Du behöver ju inte deleta alla gamla projekt som inte har med det här caset att göra. Det viktiga är bara att starta det nya projektet tomt.
                      mvh
                      Bertil

                      Comment


                      • #56
                        Japp, men eftersom jag vill kunna simulera alla gamla projekt längre bak i tid än vad jag har kunnat göra tidigare så måste jag deleta de gamla och skapa helt nya

                        Comment


                        • #57
                          Provade simulera med helt nyskapade projekt, den klarade dock bara 3,5 år.

                          AnalysisSplitQuoteDataToMem - failed loading "RSI(5)_Long_OMX30_dat.bin" at memUsed=1864758596 Inst=91
                          2013-09-17 12:45:49.008 WhileAnalysisJobTodo - initialize failed!

                          Comment


                          • #58
                            Hm, har du kursdata på alla aktier som ingår?

                            Comment


                            • #59
                              Ursprungligen postat av Rikard Nilsson Visa inlägg
                              Hm, har du kursdata på alla aktier som ingår?
                              Jag har gjort en backfill från kundservice så att jag skall ha data 3000dagar bakåt, så förutsatt att det inte är fel på backfill-funktionen så skall det finnas data.

                              Comment


                              • #60
                                Jag fick också problem med ett projekt, men det verkar som att det hjälpte att köra komprimering på datat först i Underhåll kursdatabaser. Kör en lång simulering just nu. Får se om den går igenom utan strul.

                                Comment

                                Working...
                                X