Allmänt meddelande

Collapse
No announcement yet.

Ranka topp 5

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

  • #16
    Ursprungligen postat av Rikard Autostock Visa inlägg
    Är det EMA5 och EMA14 i dagsupplösning också? När ska de säljas? Om de faller ur topp 5-listan nästa månad?

    Ja, scriptet ska köras i dagsupplösning.

    Det ska säljas när EMA5 skär under EMA14 eller när en ny månad börjar och den berörda aktien inte längre är bland de 5 bästa procentuellt förgående månad.

    Ja, exakt när de faller ur topp 5 listan.

    Comment


    • #17
      Sorry igen Tobias00. För att kolla skillnaden mellan olika metoder att ranka körde jag en test. Jag jämförde Hysteres med att hålla koll på den lägst rankade bland de fem bästa som blivit rankade för dagen. I slutet av var tredje dag handlade jag en aktie av de rankade. Vissa dagar blir det skillnad på någon aktie och att Hysteres inte alltid handlar fem. Jag misstänker att det sker någon nollställning och den sedan inte fyller på? Det kanske förklarar varför ROC and Roll presterar bättre då den får fylla på kontinuerligt? Detta var en snabb test och någon får gärna dubbelkolla om det stämmer.

      Comment


      • #18
        Jag har kodat en rankingmotor som fungerar bra för 5 aktier. Egentligen behöver vi ju ingen inbördes ranking mellan de 5 kandidaterna, vi behöver bara veta att vi får fram top 5 vilket underlättar en del.

        Det denna motor gör är att uppdatera ett rankingvärde om crcid redan finns bland top5. Om crcid inte finns bland top5 så jämför den med det sämsta värdet och updaterar rankingvärdet, på så sätt kan ett crcid bara finnas en gång i top5 och knuffas ut direkt någon annan aktie har bättre värde.

        closing_window:=10
        id1_mem:=9980
        id2_mem:=9979
        id3_mem:=9978
        id4_mem:=9977
        id5_mem:=9976
        val1_mem:=9981
        val2_mem:=9982
        val3_mem:=9983
        val4_mem:=9984
        val5_mem:=9985

        { Reset all 1700 }
        reset_window=AND(EQV(XTIME(DATE(),H),17),EQV(XTIME(DATE(),M),00))
        SETGVARIF(-1,id1_mem,reset_window) { Id #1 }
        SETGVARIF(-1,id2_mem,reset_window) { Id #2 }
        SETGVARIF(-1,id3_mem,reset_window) { Id #3 }
        SETGVARIF(-1,id4_mem,reset_window) { Id #4 }
        SETGVARIF(-1,id5_mem,reset_window) { Id #5 }
        SETGVARIF(101,val1_mem,reset_window) { Value #1 }
        SETGVARIF(101,val2_mem,reset_window) { Value #2 }
        SETGVARIF(101,val3_mem,reset_window) { Value #3 }
        SETGVARIF(101,val4_mem,reset_window) { Value #4 }
        SETGVARIF(101,val5_mem,reset_window) { Value #5 }

        { Update if existing CRCID }
        minutes_until_close=MULT(1440,SUB(MARKET(C),FRAC(DATE())))
        rank_window=AND(NOT(reset_window),GT(minutes_until_close,closing_window))
        s_id=CRCID()
        old_id1=GETGVAR(id1_mem)
        old_id2=GETGVAR(id2_mem)
        old_id3=GETGVAR(id3_mem)
        old_id4=GETGVAR(id4_mem)
        old_id5=GETGVAR(id5_mem)

        exist_id_mem=IF(EQV(s_id,old_id1),id1_mem,IF(EQV(s_id,old_id2),id2_mem,IF(EQV(s_id,old_id3),id3_mem,IF(EQV(s_id,old_id4),id4_mem,IF(EQV(s_id,old_id5), id5_mem,-1)))))
        exist_val_mem=IF(EQV(s_id,old_id1),val1_mem,IF(EQV(s_id,old_id2),val2_mem,IF(EQV(s_id,old_id3),val3_mem,IF(EQV(s_id,old_id4),val4_mem,IF(EQV(s_id,old_ id5),val5_mem,101)))))

        exist_cand=NOT(EQV(exist_id_mem,-1))
        upd_cand=AND(rank_window,exist_cand)
        SETGVARIF(ranking_value,exist_val_mem,upd_cand)
        SETGVARIF(s_id,exist_id_mem,upd_cand)

        { Replace biggest value if new CRCID }
        new_cand=NOT(exist_cand)
        old_val1=GETGVAR(val1_mem)
        old_val2=GETGVAR(val2_mem)
        old_val3=GETGVAR(val3_mem)
        old_val4=GETGVAR(val4_mem)
        old_val5=GETGVAR(val5_mem)

        max_old_val=MX(MX(MX(MX(old_val1,old_val2),old_val3),old_val4),old_val5)
        max_id_mem=IF(EQV(max_old_val,old_val1),id1_mem,IF(EQV(max_old_val,old_val2),id2_mem,IF(EQV(max_old_val,old_val3),id3_mem,IF(EQV(max_old_val,old_val4) ,id4_mem,id5_mem))))
        max_val_mem=IF(EQV(max_old_val,old_val1),val1_mem,IF(EQV(max_old_val,old_val2),val2_mem,IF(EQV(max_old_val,old_val3),val3_mem,IF(EQV(max_old_val,old_v al4),val4_mem,val5_mem))))

        set_cand=AND(AND(rank_window,new_cand),LT(ranking_value,max_old_val))
        SETGVARIF(ranking_value,max_val_mem,set_cand)
        SETGVARIF(s_id,max_id_mem,set_cand)

        new_id1=GETGVAR(id1_mem)
        new_id2=GETGVAR(id2_mem)
        new_id3=GETGVAR(id3_mem)
        new_id4=GETGVAR(id4_mem)
        new_id5=GETGVAR(id5_mem)

        candidate=OR(OR(OR(OR(EQV(s_id,new_id1),EQV(s_id,new_id2)),EQV(s_id,new_id3)),EQV(s_id,new_id4)),EQV(s_id,new_id5))

        Comment


        • #19
          Jag använder samma princip, men annorlunda scriptat. Fungerar bra.

          Comment

          Working...
          X