Allmänt meddelande

Collapse
No announcement yet.

Justera antal köp/sälj per dag

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

  • Justera antal köp/sälj per dag

    Hej,
    Jag vill skapa ett skript som tillåter max tex 2 antal köp och sälj per dag. Men vill även kunna justera detta. Nått enkelt förslag?

    köp:=2
    sälj:=2

  • #2
    Man får göra en räknare som räknar antalet avslut per dag i en global variabel.
    Själv har jag lagt den i va) scriptet. Man kan då ha många triggerscript (som jag har vid daytrading) och koppla dessa till va) scriptet.

    Tricket med att lägga räknaren i va) scripten är att dessa endast körs vid skarpa avslut.

    SetGVarif(Add(GetGVar(202),1),202,1)

    Man måste även se till att nolla sin räknare varje dag. Det gör man tex vid ett särskilt klockslag i ett av sl) scripten.

    tid0=eqv(int(mult(frac(d),1440)),541)
    SetGVarIf(0,202,tid0,T)

    I de skarpa sl) triggerscripten gör man sedan ett villkor på att den globala variabeln är mindre än ett visst värde för att få handla.

    villkor01=Lt(GetGVar(202),2)


    mvh
    Bertil
    Last edited by Bertil; 2019-11-23, 11:29.

    Comment


    • #3
      Jag hade undvikit globala celler eftersom de inte är konto- eller instrumentunika samt dessutom skulle kunna nollställas i samband med en omstart/krasch.
      Det går att bygga räknare med retval() och lasttrade() som sparas i transaktionsdatabasen istället, den är unik och krasch-säker.

      Tex:

      Vid första köp för dagen sätts räknaren till 1, annars räknas värdet i cell 0 upp med 1:

      inget_köp_idag=gt(int(d),lasttrade(b,d))

      retval(if(inget_köp_idag,1,add(lasttrade(b,0),1)),0)

      För att testa om maxgränsen ej har uppnåtts ännu:

      köp_ok=lt(lasttrade(b,0),max_antal_köp)

      Comment


      • #4
        Ursprungligen postat av Rikard Autostock Visa inlägg
        Jag hade undvikit globala celler eftersom de inte är konto- eller instrumentunika ...
        Att globala variabler inte är instrumentspecifika kan också vara en styrka.
        Antag att man har ett triggerscript som går mot många instrument, men man önskar bara att handla två. Då är det globala variabler som får hantera räkningen.
        Vad gäller att kunna hantera flera instrument på flera konton så använder jag konto/strategispecifika va) script.

        mvh
        Bertil
        Last edited by Bertil; 2019-11-23, 12:50.

        Comment


        • #5
          Ursprungligen postat av Rikard Autostock Visa inlägg
          Jag hade undvikit globala celler eftersom de inte är konto- eller instrumentunika samt dessutom skulle kunna nollställas i samband med en omstart/krasch.
          Det går att bygga räknare med retval() och lasttrade() som sparas i transaktionsdatabasen istället, den är unik och krasch-säker.

          Tex:

          Vid första köp för dagen sätts räknaren till 1, annars räknas värdet i cell 0 upp med 1:

          inget_köp_idag=gt(int(d),lasttrade(b,d))

          retval(if(inget_köp_idag,1,add(lasttrade(b,0),1)),0)

          För att testa om maxgränsen ej har uppnåtts ännu:

          köp_ok=lt(lasttrade(b,0),max_antal_köp)

          Tack Rickard, ska testa denna. Gissar att denna inte funkar att testa i analysbänken?

          Comment


          • #6
            Jo, det funkar i bänken också.

            Comment


            • #7
              Ursprungligen postat av Rikard Autostock Visa inlägg
              Jo, det funkar i bänken också.
              Så om jag förstått rätt ska scriptet se ut så här:

              max_antal_köp:=1 {tillåter 1 köp tidigare}

              i60(

              inget_köp_idag=gt(int(d),lasttrade(b,d))

              retval(if(inget_köp_idag,1,add(lasttrade(b,0),1)),0)

              köp_ok=lt(lasttrade(b,0),max_antal_köp)

              signal1=?
              signal2=and(köp_ok,signal1)

              )

              Comment


              • #8
                Japp, borde fungera fint!

                Comment


                • #9
                  Jag undrar om scriptet fungerar. lasttrade(b,0) har väl inte ändrats innan själva order läggs. Dels kan det väl ändå bara bli ett köp per dag med värde 1 som max. Vill man tex ha max två köp per dag ska väl värdet sättas till 2 eller ändra första värdet för dagen till 0. Jag tror det är så. Annars ignorera.


                  köp_ok=or(lt(lasttrade(b,0),max_antal_köp),gt(int(d),int(lasttrade(b,d))))

                  Edit: Förtydligande. Scriptet i inlägg #7 kommer väl bar att fungera första dagen för ett köp.
                  Last edited by Henric; 2019-11-24, 23:47.

                  Comment


                  • #10
                    Jag har liknande upplägg och ville dubbelkolla. Det är som jag skrev. Nedan ger lika många köp per dag som i "max_antal_köp". Metoden jag valde är alltid sant förutom köp_ok. Antalscriptet satt till 1 och inga försäljningar.

                    max_antal_köp:=3

                    i60(

                    inget_köp_idag=gt(int(d),lasttrade(b,d))
                    köp_ok=or(lt(lasttrade(b,0),max_antal_köp),gt(int(d),int(lasttrade(b,d))))
                    signal1=and(1,1)
                    retval(if(inget_köp_idag,1,add(lasttrade(b,0),1)),0)
                    signal2=and(köp_ok,signal1)

                    )

                    Comment

                    Working...
                    X