Allmänt meddelande

Collapse
No announcement yet.

rankingmodell

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

  • rankingmodell

    Hej,

    Suttit och försökt pilla ihop en modell som rankar aktier men stött på problem. Tanken är att koden ska ge poäng till aktier individuellt sett och sedan sammanställa den totala poängen för alla aktier och därmed få ett medelvärde som ligger till grund för huruvida en aktie ska köpas in eller ej. Det här försöker jag göra genom att föra in poängen i en global cell på ett precist klockslag. Problemet är att klockslaget ej är precist nog och värdet i cellen hinner adderas upp en väldig massa under en minut. Såhär ser den väsentliga biten av koden ut iaf;

    tid1=eqv(int(mult(frac(d),1440)),630)
    tid2=eqv(int(mult(frac(d),1440)),610)
    setgvarif(0,342,tid2)
    tid3=and(ge(int(mult(frac(d),1440)),630),lt(int(mult(frac(d),1440)),635))

    count1=if(and(gt(ma1,aref(ma1,1)),tid3),1,0)
    count2=if(and(gt(roc(c,5,%),roc(omx,5,%)),tid3),1,0)
    count3=if(and(ge(hhv(h,50),hhv(h,100)),tid3),1,0)
    count4=if(and(gt(mov(v,5,s),ma2),tid3),1,0)
    count5=if(and(and(gt(mov(dx(14),14,e),25),gt(mov(c,20,s),aref(mov(c,20,s),1))),tid3),1,0)
    count6=if(and(ge(sigma,0),tid3),1,0)
    count7=if(and(lt(alpha54,-0.8),tid3),1,0)
    count8=if(and(gt(mfi(14),50),tid3),1,0)
    count9=if(and(gt(roc(add(medel,pred_tot),5,%),0),tid3),1,0)
    count_tio=if(and(gt(rsiw(50),50),tid3),1,0)


    cumcount1=add(add(add(add(add(add(add(add(add(count1,count2),count3),count4),count5),count6),count7),count8),count9),count_tio)

    setgvarif(add(cumcount1,getgvar(342)),342,tid1)

    avcount=div(getgvar(342),antal_aktier)

    signal1=gt(cumcount1,avco)

    Någon som har ett tips på hur jag kan komma runt problemet utan att behöva koda enskilda script med enskilda variabler till alla aktier? Count 1-10 är det jag vill ranka på och returnerar 1 vid sant.

  • #2
    Det blir svårt. En idé är att använda en cell till som också nollställs. crcid() för första aktien skrivs till cellen när rankningstiden börjar. När rankningen gått en vända genom aktierna och crcid() matchar värdet i cellen stoppas rakningen. Du får värdera om detta fungerar för dig.

    Comment


    • #3
      Tack för svar! Försökte med crcid() men fick inte riktigt till det. Olika värden i cellen vid köpen. Dessutom för få köp vid varje runda. Här är vad jag testa;

      AID:=crcid()

      tid1=eqv(int(mult(frac(d),1440)),630)
      tid2=eqv(int(mult(frac(d),1440)),610)
      setgvarif(0,342,tid2)
      setgvarif(0,341,tid2)
      tid3=and(ge(int(mult(frac(d),1440)),630),lt(int(mult(frac(d),1440)),635))


      count1=if(and(gt(ma1,aref(ma1,1)),tid3),1,0)
      count2=if(and(gt(roc(c,5,%),roc(omx,5,%)),tid3),1,0)
      count3=if(and(ge(hhv(h,50),hhv(h,100)),tid3),1,0)
      count4=if(and(gt(mov(v,5,s),ma2),tid3),1,0)
      count5=if(and(and(gt(mov(dx(14),14,e),25),gt(mov(c,20,s),aref(mov(c,20,s),1))),tid3),1,0)
      count6=if(and(ge(sigma,0),tid3),1,0)
      count7=if(and(lt(alpha54,-0.8),tid3),1,0)
      count8=if(and(gt(mfi(14),50),tid3),1,0)
      count9=if(and(gt(roc(add(medel,pred_tot),5,%),0),tid3),1,0)
      count_tio=if(and(gt(rsiw(50),50),tid3),1,0)


      cumcount1=add(add(add(add(add(add(add(add(add(count1,count2),count3),count4),count5),count6),count7),count8),count9),count_tio)

      setgvarif(if(eqv(getgvar(341),10),add(getgvar(341),0),add(getgvar(341),1)),341,and(and(eqv(AID,crcid()),cumcount1),tid1))

      setgvarif(add(cumcount1,getgvar(342)),342,le(getgvar(341),10))

      avco=div(getgvar(342),10)

      signal1=and(gt(cumcount1,avco),eqv(getgvar(341),10))

      Comment


      • #4
        Jag tänkte något i den här stilen. Har själv inte testat och du får prova dig fram.

        tid2=lt(int(mult(frac(d),1440)),630)
        setgvarif(0,342,tid2)
        setgvarif(0,341,tid2)
        SetgvarIf(0,343,tid2)
        tid3=and(ge(int(mult(frac(d),1440)),630),lt(int(mult(frac(d),1440)),635))
        SetGvarIf(-1,341,eqv(crcid(),GetGvar(341)))
        SetGvarIf(crcid(),341,and(tid3,eqv(GetGvar(341),0)))
        tidRank=and(tid3,gt(GetGvar(341),0))

        ma1=mov(c,20,s)
        ma2=mov(v,20,s)
        omx=cmpref(c,0,a)

        count1=gt(ma1,aref(ma1,1))
        count2=gt(roc(c,5,%),roc(omx,5,%))
        count3=ge(hhv(h,50),hhv(h,100))
        count4=gt(mov(v,5,s),ma2)
        count5=and(gt(mov(dx(14),14,e),25),gt(mov(c,20,s),aref(mov(c,20,s),1)))
        count6=ge(0{sigma},0)
        count7=lt(-1{alpha54},-0.8)
        count8=gt(mfi(14),50)
        count9=gt(roc(c{add(medel,pred_tot)},5,%),0)
        count_tio=gt(rsiw(50),50)

        cumcount1=add(add(add(add(add(add(add(add(add(count1,count2),count3),count4),count5),count6),count7),count8),count9),count_tio)

        setgvarif(add(cumcount1,getgvar(342)),342,tidRank)
        setgvarif(add(GetGvar(343),1),343,tidRank)

        avco=div(getgvar(342),GetGvar(343))

        signal1=and(and(gt(cumcount1,avco),lt(GetGvar(341),0)),le(portfolio(v),0))


        {@A(0,OMX Stock )}

        Edit:= tänk på att värdena kan ändras och att även signalvillkoret har en tidsbegränsning. Fast detta är ju bara ett test.
        Last edited by Henric; 2017-07-25, 12:03.

        Comment


        • #5
          Vid första anblick ser det där ut att fungera riktigt fint. Getgvar(342) genererar rimliga värden. Tack för hjälp!

          Comment

          Working...
          X