Allmänt meddelande

Collapse
No announcement yet.

Makulera order snabbare

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

  • Makulera order snabbare

    Hej,

    Jag undrar om det går att ställa in så att ordrar som inte går till avslut direkt makuleras efter, låt säga 5 sekunder, istället för 1 minut?

  • #2
    Enda sättet att makulera är att lägga ny order, men den nya skulle kunna vara tex 1 kr i pris eller så långt bort från marknadspriset att den blir makulerad i sig. Om sekvensen i ordermodellen är inställd på att makulera befintlig order innan ny läggs, och även den nya makuleras pga priset är alla ordrar borta. Då styr man enkelt med triggerscriptet hur lång tid som ska gå etc.

    Comment


    • #3
      Frågan låter mer som att du vill korta ner delay innan nytt försök. I så fall är det enkelt att använda sekunder istället för minuter. Annars enligt Rikard ovan och med sekunder istället för en minut.

      Comment


      • #4
        Tack för svar!

        Insåg att jag var otydlig i min formulering, ber om ursäkt.

        Det jag var utefter var det du svara på Henric.

        Följdfråga; om jag ställer in delayorder på 5 sekunder kommer den då makulera befintlig order efter 5 sekunder och lägga en ny order till önskat pris?

        Comment


        • #5
          Nedan är ju scriptet för delay order, hur får jag det till sekunder istället för minuter?

          tidspärr:=1
          lt1:=LastTrade(B,D)
          lt2:=LastTrade(S,D)
          i1(
          minSedanKöp=Mult(Sub(Date(),lt1),1440)
          minSedanSälj=Mult(Sub(Date(),lt2),1440)
          And(Gt(minSedanKöp,tidspärr),Gt(minSedanSälj,tidspärr))
          )

          Comment


          • #6
            Har jag tänkt rätt?

            tidspärr:=5
            lt1:=LastTrade(B,D)
            lt2:=LastTrade(S,D)
            i1(
            SekSedanKöp=Mult(Sub(Date(),lt1),86400)
            SekSedanSälj=Mult(Sub(Date(),lt2),86400)
            And(Gt(SekSedanKöp,tidspärr),Gt(SekSedanSälj,tidspärr))
            )

            Comment


            • #7
              Aha, nu fattar jag hur du menar! Jo det är rätt tänkt. Det går också att skriva minuter med decimalpunkt, tex:

              tidspärr:=0.1

              minuter vilket ger ca 6 sek i standardscriptet.

              Comment


              • #8
                Hej igen,

                Tänkte "återuppliva" denna tråd då jag har en fråga.

                Jag vill att mina ordrar endast ska ligga i marknaden i 6 sekunder ifall de inte går till avslut. Detta verkar dock inte fungera, bilden visar en mindre del av befintlig order som blir liggandes efter att större delen av ordern gått till avslut, trots att jag modifierat scriptet likt du nämnde Rikard, är det något jag missat?
                Måste jag skriva "0.1i("?
                Jag har Loopstart & makulera befintligt som val i ordermodellen.
                Nedan är mitt script för hur ordrar ska skickas.

                tidspärr:=0.1
                lt1:=LastTrade(B,D)
                lt2:=LastTrade(S,D)
                i1(
                minSedanKöp=Mult(Sub(Date(),lt1),1440)
                minSedanSälj=Mult(Sub(Date(),lt2),1440)
                And(Gt(minSedanKöp,tidspärr),Gt(minSedanSälj,tidspärr))
                )
                Attached Files
                Last edited by Tobias00; 2020-07-21, 15:48.

                Comment


                • #9
                  Är det här ett triggerscript eller extra kontrollscript?

                  Comment


                  • #10
                    Ursprungligen postat av Rikard Autostock Visa inlägg
                    Är det här ett triggerscript eller extra kontrollscript?

                    Det är ett extra kontrollscript till en skarp ordermodell, se bild nedan.
                    Attached Files

                    Comment


                    • #11
                      Det är svårt att se när man inte har hela bilden. Några möjliga orsaker.
                      1. När man ändrar i strukturen(inte bara koden i script) av en ordermodell slår det inte igenom förrän man kopplar bort den och på igen.
                      2. Om tex villkoret le(portfolio(v),0) används kommer inga nya försök att göras även om man bara fått delavslut. Jag använder även målantal.

                      Edit: Om kontrollscriptet slår till sällen kan man ha det som xk)-script. Annars brukar det vara enklast inkludera villkoret i triggerscripet/sl)-scriptet.
                      Last edited by Henric; 2020-07-22, 10:23.

                      Comment


                      • #12
                        Ursprungligen postat av Henric Visa inlägg
                        Det är svårt att se när man inte har hela bilden. Några möjliga orsaker.
                        1. När man ändrar i strukturen(inte bara koden i script) av en ordermodell slår det inte igenom förrän man kopplar bort den och på igen.
                        2. Om tex villkoret le(portfolio(v),0) används kommer inga nya försök att göras även om man bara fått delavslut. Jag använder även målantal.

                        Edit: Om kontrollscriptet slår till sällen kan man ha det som xk)-script. Annars brukar det vara enklast inkludera villkoret i triggerscripet/sl)-scriptet.
                        Punkt 1 är jag medveten om och jag tror inte att det är det som spökar i detta fall.

                        Punkt 2 kan det mycket väl vara då jag har de villkoret i alla mina script, borde dock inte ordern fortfarande makuleras och att den i sådana fall inte köper mer?
                        Hur skulle man kunna bygga ett villkor som handlar på målanal som du nämner? - Det är nämligen det jag vill.
                        Låt säga att jag exempelvis vill köpa 100 stycken ABB, om ordern som skickas först endast blir fylld till 60% så vill jag att ordermodellen ska fortsätta att handla in de resterande 40 aktierna.

                        Comment


                        • #13
                          Allt beror på upplägget. Här är några sätt.
                          Det enklaste sättet är att lägga ett pris så att ordern går igenom med största sannolikhet.
                          Ett annat sätta är att replikera.
                          Ett tredje sätt är att spara målantalet vid första order för nuvarande signal. Under viss tid fortsätta handla tills målantalet
                          nåtts.
                          Ett fjärde är att integrera målantalet i villkoret med portfolio(v). Tex att innehavet är lägre än 90% av portföljvärdet.

                          Edit: Eventuella villkor och minicourtage kan påverka om många små order läggs. Kolla med NN.
                          Last edited by Henric; 2020-07-22, 12:09.

                          Comment


                          • #14
                            Okej, tror att jag kör på alternativ 4 som du nämner Henric.

                            Skulle nedan script fungera om jag förstod dig rätt vad du menade?

                            total_depå:=1
                            antal_aktier:=2
                            min_ord_fylld:=0.75

                            i10(
                            kvot=div(total_depå,antal_aktier)
                            minimi=mult(kvot,min_ord_fylld)
                            ej_innehav=le(portfolio(v),minimi)
                            )

                            Sedan undrar jag fortfarande varför min order inte makuleras eller kommer den göra ddet om jag har detta i mitt triggerscript?

                            Comment


                            • #15
                              Jag är inte helt med, men visst går det att basera på antal aktier eller dyl.
                              Vanligtvis brukar jag basera på depåvärdet och justera antalet för strategins andel av portföljen och/eller enskilda aktier allokering. Här exempel med endast en aktie.

                              minBelopp:=xxxx
                              depå=add(cash(a),cash(n))
                              målantal=int(div(depå,s))
                              ej_innehav1=lt(div(mult(portfolio(v),s),depå),0.9)
                              ej_innehav2=and(ej_innehav1,gt(mult(sub(målantal,portfolio(v)),s),minBelopp))


                              Om allt är riggat rätt ska ny order makulera liggande för instrumentet. Blir det ingen order ligger lagda order kvar tills ny order läggs eller att börsen stänger. Det som inträffar först. Skulle det bli en slask kvar får den ligga tills nästa makulering. Är det viktigt att inga order ligger går det att skicka en nollställare med skamkurs för att vara säker, men du hade ju ändå accepterat priset tidigare och förmodligen en liten post kvar.

                              Comment

                              Working...
                              X