Allmänt meddelande

Collapse
No announcement yet.

Begränsa antal positioner

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

  • Begränsa antal positioner

    Har en strategi som köper OMXS29-aktier som jag vill köra automatiserat. Signalerna har en tendens att komma i många aktier samtidigt, finns det då någon möjlighet att begränsa antal öppna positioner till t ex 5 efter någon bestämd prio?

    Bengt

  • #2
    Varje instrument har ju ett crcid. Du kan ju testa på crid och volym samt senaste köp förknippat med crid.

    SetGVarif(Mult(Sub(Date(),LastTrade(B,D)),1440,0),100,eqv(crcid,1391064143),T)

    skriver ner antal minuter sedan senaste köp av ovanstående instrument i den globala variabeln 100.

    mvh
    Bertil

    Comment


    • #3
      Tack, men förstår inte riktigt varför det skulle vara intressant att veta antal minuter sedan senaste köp?

      I köpscriptet skulle jag vilja kunna se hur många öppna positioner jag har för tillfället och om antal öppna = max tillåtna öppna så skall inget köp ske.

      Comment


      • #4
        Prio betyder att man måste sortera aktier enligt någon parameter, tex ett indikatorvärde eller liknande. Det går att göra med globala celler. Men, det vanligaste är att man helt enkelt mäter kontots tillgängliga kapital med cash(t) och kanske jämför med kontots storlek inkl öppna positioner:

        konto=add(cash(t),cash(a))

        Då vet man hur tungt investerad man är och kanske kan avgöra om man vill ta fler positioner osv. Men du får gärna ta ett konkret exempel på hur du skulle vilja rangorna kandidater etc.

        Comment


        • #5
          Tack.

          Förstår att det här med prio är knepigt men om t ex villkoret för köp är att RSI < 5 och
          det finns 6 aktier som uppfyller villkoret men max öppna positioner är 5 så skulle det ideala vara att köpa de 5 med lägst RSI.

          Men är väl egentligen inte så viktigt. Ofta är ju den setupen som ser bäst ut den som inte alls gick bra......

          Comment


          • #6
            Det går ändå hyggligt enkelt att skanna igenom anslutna aktier och spara/köpa de som har bäst RSI. Man lägger upp två celler, en för "best RSI" och en för CRCID. När man hittar ett nytt lägre RSI än det som lagrat tidigare skriver man dit det nya lägre, och skriver samtidigt in instrumentets CRCID i den andra cellen. Då behövs bara två celler, och obegränsat antal aktier kan hanteras.

            Någonstans måste cellerna nollställas, tex om det är en daily-strategi kan man nolla strax innan skanning ska göras. Enkelt med tex XTIME() som kan villkora klockslag.

            Comment


            • #7
              Skulle det vara möjligt att använda GETVAL och RETVAL för att hålla ordning på antal öppna positioner? Räkna upp 1 vid köp och räkna ned 1 vid sälj?

              Comment


              • #8
                Ursprungligen postat av tavasten Visa inlägg
                Tack, men förstår inte riktigt varför det skulle vara intressant att veta antal minuter sedan senaste köp?

                I köpscriptet skulle jag vilja kunna se hur många öppna positioner jag har för tillfället och om antal öppna = max tillåtna öppna så skall inget köp ske.
                Du ville ju förhindra att strategin köpte i kluster och då är det ju enkelt att ha minuter från senaste köp för respektive aktie så att du i köpvillkoret kan blockera om det sker köp för snart efter tidigare köp i den aktie/aktier som du väljer. På samma sätt så kan du i andra globala variabler lägga aktuell volym av respektive aktie som jag nämnde i förbifarten
                SetGVarif(Portfolio(v),101,eqv(crcid,1391064143),T)
                Där har du antalet av aktuell aktie i den globala variabeln 101.
                Nu är det ju lätt att i köpscriptet lägga ett villkor. Antag att du önskar äga max 10st av aktien ovan

                max01=add(10,0)
                villkor01=Gt(max01,GetGVar(101))
                köp=and(and(villkor01,eqv(crcid,1391064143)),trigg)

                mvh
                Bertil


                Edit om du har två aktier kopplade till ditt script kan du skriva

                max01=add(10,0)
                max02=add(10,0)
                villkor01=Gt(max01,GetGVar(101))
                villkor02=Gt(max02,GetGVar(102))
                köp01=and(villkor01,eqv(crcid,1391064143))
                köp02=and(villkor02,eqv(crcid,1391064144))
                köpa=and(or(köp01,köp02),trigg)

                I exemplet ovan har jag antagit att du handlar 1 aktie, men du kan ju även handla för en viss summa. I den globala variabeln lägger du värdet av ditt innehav i aktuell aktie och i maxvillkoret hur mycket pengar du önskar handla för exklusive köpet som du nu kommer att göra.
                SetGVarif(mult(Portfolio(v),c),101,eqv(crcid,1391064143),T)
                max01=add(10000,0)
                Last edited by Bertil; 2017-04-26, 13:01.

                Comment


                • #9
                  Bertil

                  Förstår ändå inte. Jag kan ha köpt 9 aktier i förra veckan som fortfarande är öppna när jag idag får signal på 2 ytterligare. Om max tillåtna är 10 skall jag då bara köpa 1.

                  Bengt

                  Comment


                  • #10
                    Ursprungligen postat av tavasten Visa inlägg
                    Bertil

                    Förstår ändå inte. Jag kan ha köpt 9 aktier i förra veckan som fortfarande är öppna när jag idag får signal på 2 ytterligare. Om max tillåtna är 10 skall jag då bara köpa 1.

                    Bengt
                    Nja, jag trodde att du ville ha ett max för varje aktie som kan vara individuellt. Tex du vill aldrig äga mer än för 20000:- Volvo B och för 15000:- HM. Sedan vill du inte köpa mer än för 5000:- Volvo åt gången och max ett köptillfälle varannan dag. HM vill du också köpa för max 5000:- men max ett köptillfälle var 4:e dag

                    mvh
                    Bertil

                    Comment


                    • #11
                      Just det problemet har jag också haft i den här strategin, jag vill skala in mig.

                      Löste det lite "fult". Om jag vill köpa (max 1/dag) för max 20000 i Volvo och köpa för 5000 max fyra gånger så kollar jag innan köp att portfolio(v)*portfolio(p)<20000. Verkar funka.

                      Bengt

                      Comment


                      • #12
                        Prioritet är en sak. Vad gäller antal aktier skulle jag göra som Rikard skrev. Det räcker att kolla kassan och att antalscriptet fixar resten. Nordnet kommer ändå att spärra nya order. Förutsätter att du inte har kredit. Vill du vara helt säker släpper du max en order var 10:e sekund. Alternativt kollar hur många skott du har i bössa var 10:e sekund.

                        Comment


                        • #13
                          Henrik
                          Det här är problemet "Jag kan ha köpt 9 aktier i förra veckan som fortfarande är öppna när jag idag får signal på 2 ytterligare. Om max tillåtna är 10 skall jag då bara köpa 1."

                          Dessutom skalar jag in mig i 4 omgångar.

                          Skulle jag bara kolla kassan så kan det väl bli så att jag köper 20 aktier i omgång 1, pengar finns ju. Om jag inte har någon öppen position och max öppna är 10 och jag får 20 köpsignaler så kommer jag då att köpa första fjärdedelen för alla 20 med följden att pengar kommer att saknas för resterande fjärdedelar.

                          Går det inte att använda en global variabel som räknar upp med 1 vid köp om innehavet innan köp är noll och som räknar ned med 1 vid sälj (hela innehavet säljs alltid)?

                          Bengt

                          Comment


                          • #14
                            Det beror helt på hur du vill behandla eventuella delpositioner som kan uppstå. Du vet ju inte om den kommer att fortsätta skala in i aktie.

                            Edit: Det jag menar är att du kan ligga med 10 aktier med 1/4 i varje och inga nya signaler på dessa aktier.
                            Vill du hålla koll på antal aktier är nog celler det enda alternativet som jag kan se det. Antal skalningar kan du spara med lasttrade. Är de 10 cellerna fyllda med crcid() kan inga nya aktier handlas.
                            Vid försäljning nollställs cellen som aktie använde. Det går också att kolla om cellen innehåller crcid() och om innehavet är noll görs en nollställning
                            Last edited by Henric; 2017-04-26, 14:06.

                            Comment


                            • #15
                              Så är det, det kanske bara blir 1/4 i en aktie och då finns pengar till fler aktier. Men det kan jag aldrig veta i förväg och jag köper hellre fullt i en aktie än sprider ut fjärdedelar på en massa aktier även om jag då kanske ligger onödigt likvid.

                              Globala variabler?

                              Comment

                              Working...
                              X