Allmänt meddelande

Collapse
No announcement yet.

Standardmodell med MFI

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

  • #61
    Kom igenom till slut men vi undersöker om det finns fler issues med minnet vid långkörning.

    Bra resultat i alla fall:

    Totalt Avkastning 565271.07 kr 565.38% på 547 affärer under 3392:18:46 timmar
    Av dessa blankat 0 st med avkastning 0.00 kr 0.00%
    Innehav 342 st med vinst 1641353.13 kr 1642.77%
    Innehav 205 st med förlust -1076082.00 kr -1077.39%
    Blankning 0 st med vinst 0.00 kr 0.00%
    Blankning 0 st med förlust 0.00 kr 0.00%




    { Standardmodell 3 dgr MFI }
    { 130917 }
    { 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 15 eller 10 }
    styrka=and(upptrend,gt(macd2(n),macd2(t)))
    mfgräns=if(styrka,15,10)

    { 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)






    { Standardmodell 3 dgr MFI }
    { 130914 }
    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 att 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,)}





    Samma projekt som ovan men med lite andra inställningar för MFI-gränserna:

    Comment


    • #62
      Ursprungligen postat av Rikard Nilsson Visa inlägg
      Kom igenom till slut men vi undersöker om det finns fler issues med minnet vid långkörning
      Komprimering hjälpte inte.

      Säg gärna till när det går att prova igen efter att minneshanteringen är ändrad.

      Comment


      • #63
        Hur stor blir .BIN-filen för ditt projekt?

        Comment


        • #64
          runt 2 gig
          Attached Files

          Comment


          • #65
            Intressant det här, jag kan köra på ett 20-tal aktier samtidigt, från ca 2009 till nu och det funkar, får en bin fil på drygt 2GB, testade med fler aktier eller längre tid, då får jag: WhileAnalysisJobTodo - initialize failed!
            Men det kanske har med datat att göra? Körde en stor påfyllnad av kurser nån vecka innan, det borde vara schysst.

            Kör med 'Samtidigt kopplade' också, men det kanske inte spelar någon roll?

            //Richard

            Comment


            • #66
              Kört ett par gånger med olika aktier och tidsspann, tittat på resultatlistan och jämfört med indexet, då man får flera och större minusposter i rad i resultatet så sammanfaller det ofta med en plötslig rörelse nedåt i indexet, nånting av större värde har alltså hänt. Hur säljer den då? Kan man göra en snabbare säljtrigger vid en snabb rörelse nedåt i indexet?

              Comment


              • #67
                Hej,

                Provkör en variant av MFI-modellen skarpt. Om man kör den i bänker så händer det att den gör 2 köp i olika aktier i slutet av en handelsdag. Jag får dock inte detta att funka när man kör skarpt utan då köper den endast en av aktierna. Vad kan detta bero på?

                Comment


                • #68
                  Den bör göra exakt samma köp live som i bänken, det har den i alla fall gjort vid våra egna tester. Vad är det som är ändrat jämfört med "original"-modellen? Det görs ju tex ett test av tillgängliga medel innan trigger, så det kan skilja mot simulering eftersom man då mäter mot ett simulera-konto.

                  Comment


                  • #69
                    Hej igen,

                    Väldigt konstigt. Har jämfört köpscripten och dom är lika i sorteringen och för övrigt väldigt lika (framför allt säljscriptet som ändrats). När jag kör scriptet i bänken så funkar det fint och modellen kan köpa flera aktier under en stängning men live så köper den bara en av aktierna. Förstår inte varför det inte funkar live. Det känns lite som att den inte sorterar om. Kan det ha någon betydelse hur många aktier man kör på. Jag kör på relativt många aktier, hinner den inte köra alla på 1min?

                    Comment

                    Working...
                    X