Allmänt meddelande

Collapse
No announcement yet.

Intradagsranking

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

  • #16
    Det är två tidsfönster inkl reset som behövs:

    reset0900=and(eqv(xtime(date(),h),9),eqv(xtime(date(),m),0))
    reset1305=and(eqv(xtime(date(),h),13),eqv(xtime(date(),m),5))
    rank0905=and(eqv(xtime(date(),h),9),le(xtime(date(),m),5))
    rank1310=and(eqv(xtime(date(),h),13),eqv(xtime(date(),m),10))

    reset=or(reset0900,reset1305)
    write=or(rank0905,rank1310)

    Det borde lösa det mesta, nollställning görs under den minut som går från 09:00 till 09:01, därefter tar rankning vid fram till och med 09:05.
    Samma procedur kl 13:05 då nollställning görs, följt av rankning fram till och med 13:10.

    Comment


    • #17
      Ursprungligen postat av Lord S Visa inlägg
      kl0901=and(eqv(xtime(d,h),9),eqv(xtime(d,m),01))
      öppning=find(kl0901,600,c,1)

      Du kan testa och se om den ger annorlunda resultat.
      Problemet som kan uppstå i simulering är att gårdagens intrakurs spiller över till nästa innan feeden kommer i gång och det finns ingen garanti att öppningskursen i dagsupplösning är från dagens datum. Det går att använda 9:01 och borde fånga de flesta fall. Dock ingen garanti. För en enskild aktie kan det bli en jättestor skillnad mellan 9:00 och 9:01 förutsatt att kursen är ok. Däremot inget sagt att den skulle kunna vara sämre att starta 9:01. Bara simuleringen kan visa detta. Risken med kursen som används ovan är att kursen från gårdagen hämtas innan 9:01(kan lätt justeras). För index är det mycket osannolikt att gårdens sista kurs ner på decimaler skulle vara samma. Det mycket troligare för en enskild aktie.

      Comment


      • #18
        Först och främst, tack för hjälpen Rikard, jag har nu fått rankingmotorn till att fungera, tack!

        Dock är det precis som Lord S sade, nämligen att öppningskursen inte är dagens öppningskurs utan gårdagens stängningskurs (såvitt jag kan se). Jag ser att ni diskuterat detta i tråden men är inte fullt införstådd med hur jag ska lösa detta...

        Någon som har ett förslag på hur jag kan ta ut dagens öppningskurs?

        Mvh
        Tobias

        Comment


        • #19
          Kul att det lirar! Om du kör reset första minuten borde det ju blockera köp så jag tror inte problemet är så stort, men annars går det att kägga till extra test att databasrud är ”idag” vilket säkerställer att kursdata kommit in sedan öppning:

          Data_idag=eqv(int(d),int(date()))

          Comment


          • #20
            Fungerar det med att börja 9:01 är det ok. Annars om man vill ha första kurs=öppning kan man bygga en kontinuerlig ranking utan reset där även rankad uppdateras. Kursen får för en ny rankning av aktie inte vara samma som gårdagens intra. Om jag hinner kan jag visa exempel senare.

            Comment


            • #21
              Ursprungligen postat av Rikard Autostock Visa inlägg
              Kul att det lirar! Om du kör reset första minuten borde det ju blockera köp så jag tror inte problemet är så stort, men annars går det att kägga till extra test att databasrud är ”idag” vilket säkerställer att kursdata kommit in sedan öppning:

              Data_idag=eqv(int(d),int(date()))

              Lade till det kommandot som du skrev men det förändrade inget :/

              Comment


              • #22
                Ursprungligen postat av Henric Visa inlägg
                Fungerar det med att börja 9:01 är det ok. Annars om man vill ha första kurs=öppning kan man bygga en kontinuerlig ranking utan reset där även rankad uppdateras. Kursen får för en ny rankning av aktie inte vara samma som gårdagens intra. Om jag hinner kan jag visa exempel senare.
                Om du har möjlighet hade jag varit supertacksam!

                Comment


                • #23
                  Det är alltid trixigt att fånga gårdagens close jämfört med dagens första close eftersom dagens close ärver gårdagens closevärde innan det första riktiga closevärdet uppstår.

                  Jag gör så här för att detektera skillnaden mellan gårdagens close och dagens öppning.

                  i1(
                  tid1=gt(int(mult(frac(d),1440)),554)
                  perioder01=Sub(int(mult(frac(d),1440)),541)
                  igårclose02=mov(aref(c,add(perioder01,6):600),1)
                  igårclose03=mov(aref(c,add(perioder01,6):600),12)
                  igårclose01=if(tid1,igårclose03,igårclose02)
                  idagopen02=aref(c,add(perioder01,0):600)
                  idagopen03=mov(aref(c,add(perioder01,0):600),12)
                  idagopen01=if(tid1,idagopen03,idagopen02)
                  diff03=sub(idagopen01,igårclose01)

                  Draw(igårclose01,4,rqb0)
                  Draw(idagopen01,5,dgqb0)

                  Mult(0,10)
                  )

                  Inte så sofistikerat men det fungerar även att rita ut. Testa att göra det.

                  mvh
                  Bertil

                  Comment


                  • #24
                    Tack Bertil för hjälpen, jag får dock fortfarande inte rätt på öppningskursen...

                    Nåväl, tänkte passa på att ställa en annan fråga, nämligen, hur kan jag få retvalfunktionen nollställd 11:59 och 14:29?
                    Nedan är mitt script, vill ha in en reset för retval.

                    ing_köp=and(gt(int(d),lasttrade(b,d))
                    reset=and(res_1159,res_1429)
                    retval(if(ing_köp,1,add(lasttrade(b,0),1)),0)
                    spärr=le(lasttrade(b,0),max) {Testar så att maxköp inte överskrids}

                    Comment


                    • #25
                      Ursprungligen postat av Tobias00 Visa inlägg
                      Försöker bygga en rankingmotor till vilken jag kan koppla flera aktier, sedan ska scriptet ranka aktierna efter procentuell utveckling från öppning till 09:05 och välja den bästa. ...
                      )
                      1) Om vi backar till ditt första inlägg i tråden ovan, så förstår jag inte riktigt din edge. Oftast är det ju så att det instrument som ökat mest från gårdagens close gör en "overshot" och sjunker sedan. Jag har själv tidigare använt ordermodeller som bygger på detta dvs detektera en topp strax efter börsöppning och sedan blanka, samt ta hem vinsten med TakeProfit efter 5 minuter eller så. Detta i analogi med ordspråket köp på ryktet sälj på fakta. Fast det blir blanka på fakta och ta hem vinsten.

                      2) Varför är det så viktigt att detektera just öppningskursen för din edge? Varför går det inte lika bra med utvecklingen mellan 09.05 till 09.10 ?
                      Att just detektera öppningskursen korrekt är ju lite svårt så kör inte fast i det utan testa mellan 09.05 till 09.10 så länge bara för att få till en ordermodell som du kan simulera med.

                      3) Om du kör i1 så kan du istället göra ett medelvärde mov(c,4) och så läser du av den procentuella lutningen kl 09.05 Sedan rankar du det instrument som har störst procentuell lutning.

                      4) Vissa instrument handlas ju med call dvs det tar en stund innan köp och sälj möts. På flera listor går callförfarandet efter bokstavsordning, detta gör att det kan skilja någon minut från det första instrumentet till det sista instrumentet på listan börjar att handlas (märks tydligt i tex DAX-listan).
                      Innan du börjar att ranka så måste ju alla instrument genomgått callen.

                      5) Det är inte heller så att det sker avslut i alla instrument varje minut.

                      mvh
                      Bertil
                      Attached Files

                      Comment


                      • #26
                        Ursprungligen postat av Tobias00 Visa inlägg
                        Om du har möjlighet hade jag varit supertacksam!
                        Om du simulerar med 1 minuts animering går det inte att fånga tidig öppning. Däremot går det att se till att kursen inte är den samma som gårdagens sista intra. Simulerar du med 5 sek blir det rätt, men tar tid.

                        Comment


                        • #27
                          Ursprungligen postat av Bertil Visa inlägg
                          1) Om vi backar till ditt första inlägg i tråden ovan, så förstår jag inte riktigt din edge. Oftast är det ju så att det instrument som ökat mest från gårdagens close gör en "overshot" och sjunker sedan. Jag har själv tidigare använt ordermodeller som bygger på detta dvs detektera en topp strax efter börsöppning och sedan blanka, samt ta hem vinsten med TakeProfit efter 5 minuter eller så. Detta i analogi med ordspråket köp på ryktet sälj på fakta. Fast det blir blanka på fakta och ta hem vinsten.

                          2) Varför är det så viktigt att detektera just öppningskursen för din edge? Varför går det inte lika bra med utvecklingen mellan 09.05 till 09.10 ?
                          Att just detektera öppningskursen korrekt är ju lite svårt så kör inte fast i det utan testa mellan 09.05 till 09.10 så länge bara för att få till en ordermodell som du kan simulera med.

                          3) Om du kör i1 så kan du istället göra ett medelvärde mov(c,4) och så läser du av den procentuella lutningen kl 09.05 Sedan rankar du det instrument som har störst procentuell lutning.

                          4) Vissa instrument handlas ju med call dvs det tar en stund innan köp och sälj möts. På flera listor går callförfarandet efter bokstavsordning, detta gör att det kan skilja någon minut från det första instrumentet till det sista instrumentet på listan börjar att handlas (märks tydligt i tex DAX-listan).
                          Innan du börjar att ranka så måste ju alla instrument genomgått callen.

                          5) Det är inte heller så att det sker avslut i alla instrument varje minut.

                          mvh
                          Bertil
                          Hej!
                          Bra frågor/fakta, tänkte svara på dem i samma ordning.
                          1. Jag söker momentum och vill ta position i aktier som går starkt första 5 minuterna. Således vill jag tidigt in i aktier med starkt momentum och jag är därav bered att gå in i aktien tidigt (efter 09:05) även fast jag är medveten om att handeln första 15-20 minuterna kan vara ruskigt stökig med stor volla. Jag använder dock relativt tajta stoppar vilket gör att priset jag tar för att "testa" ifall momentumet är starkt är relativt litet.
                          2. Egentligen är det inte just öppningen i sig som är superviktig, jag vill ha ett värde att kunna jämföra aktier mot under dagen, desto tidigare desto bättre återspeglar det intradagsrörelsen.

                          4. Jag handlar endast svenska aktier. Stängningscallen är ju i bokstavsordning på Stockholmsbörsen men öppningscallen (rätta mig om jag har fel) är väll inte sådan, sedan kan ju vissa aktier där köpsidan är mycket starkare dröja lite i öppningscallen men det beror väll snarast på hur de olika sidorna i orderboken ser ut och inte bokstavsordning?

                          5. De aktierna som jag försöker vara inne i är aktier där omsättningen förväntas bli stor och särskilt under första handelstimmarna.

                          Än en gång stort tack för att ni tar er tid att hjälpa mig, har handlat ett tag på börsen men har endast 1 universitetskurs i programmering i bagaget.

                          Mvh
                          Tobias

                          Comment


                          • #28
                            Ursprungligen postat av Henric Visa inlägg
                            Om du simulerar med 1 minuts animering går det inte att fånga tidig öppning. Däremot går det att se till att kursen inte är den samma som gårdagens sista intra. Simulerar du med 5 sek blir det rätt, men tar tid.
                            Men hur ser det ut om man går live, är problemet fortfarande det samma?

                            Comment


                            • #29
                              eqv(int(d),int(date())) brukar räcka live. För mig är det viktigt att simulering och live kommer så nära som möjligt. Det är en annan sak. Jag vet inte om villkoret även hjälper problem med öppningskursen live. Jag har själv slutat använda den. Ser bara till att kursen inte är den samma som gårdagens sista intradag vid trigger. Eftersom att modellen är känslig för öppningskursen är 5 sekunder mycket mer realistiskt än 1 minut.

                              Jag lekte lite och har inte verifierat scriptet. Du kan prova om det hjälper. Du kanske behöver ändra tider eller annat.

                              i1(
                              öppet=and(ge(mult(1440,sub(market(c),frac(date()))),7),eqv(int(d),int(date())))
                              tid_morg=and(eqv(xtime(date(),h),9),and(ge(xtime(date(),m),4),le(xtime(date(),m),5)))
                              tid_eft=and(eqv(xtime(date(),h),13),and(ge(xtime(date(),m),14),le(xtime(date(),m),15)))
                              intraIgår=find(gt(int(d),aref(int(d),1)),520,aref(c,1),1)
                              dagen=const(d)
                              förstaM1=if(and(eqv(int(dagen),int(d)),not(eqv(c,intraIgår))),d,mult(d,2))
                              förstaM2=llv(förstaM1,520)
                              öppKurs=find(eqv(d,förstaM2),520,c,1)
                              handlaOK=and(öppet,eqv(int(förstaM2),int(dagen)))

                              proc_utv=if(handlaOK,div(c,öppKurs),-2)
                              best=getgvar(9885)
                              write1=or(and(handlaOK,gt(proc_utv,best)),eqv(crcid(),GetGvar(9884)))
                              write2=and(write1,not(or(tid_morg,tid_eft)))
                              setgvarif(proc_utv,9885,write2)
                              setgvarif(if(handlaOK,crcid(),0),9884,write2)

                              vlkTrigger=and(1,1)

                              vald_aktie=and(eqv(crcid(),getgvar(9884)),gt(GetGvar(9885),-2))

                              delay=gt(mult(sub(date(),lasttrade(b,d)),1440),3)

                              köp=and(and(and(vald_aktie,vlkTrigger),or(tid_morg,tid_eft)),delay)
                              and(köp,le(portfolio(v),0))
                              )

                              Comment


                              • #30
                                Stort tack, Henric, Bertil, Rikard och alla som hjälpt mig med svar på mina många frågor!
                                Tror jag fått svar på allt nu!
                                Mvh
                                Tobias

                                Comment

                                Working...
                                X