Allmänt meddelande

Collapse
No announcement yet.

Account safety - Smarta kontroller

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

  • Account safety - Smarta kontroller

    Startar en tråd om smarta kontroller som bör ligga i alla script som handlar skarpt.
    Fyll gärna på med fler tips eller om jag glömt några viktiga kontroller.



    { account safety villkor- säkerställer kontakt med depån och lite annat }

    timelock:=1
    lt1:=LastTrade(B,D)
    lt2:=LastTrade(S,D)
    minSedanKöp:=mult(sub(date(),lt1),1440)
    minSedanSälj:=mult(sub(date(),lt2),1440)

    {Säkerställer att det gått tillräckligt lång tid för Nordnet att registrera senaste affär.}
    orderdelay_ok=and(gt(minSedanKöp,timelock),gt(minSedanSälj,timelock))

    {Säkerställer att systemtid och databastid är på samma dag.}
    datum_ok=eqv(int(d),int(date()))

    {Säkerställer kontakt med Nordnetdepån}
    account_ok=not(eqv(cash(d),0))

    {Som account_ok men lite annorlunda.}
    positions_ok=not(eqv(portfolio(d),0))

    {Blir falskt om spreaden ökar över 1%.}
    spread_ok:=lt(div(s,b),1.01)

    {Blir falskt om antingen köp- eller säljkursen är noll.}
    kurs_finns:=and(gt(b,0),gt(s,0))


    cash(?) kan användas med olika parametrar för att säkerställa handelsutrymmet på kontot.

    { Kolla att all kursdata finns under en given period }
    per:=50
    datanu_ok=and(and(gt(H,0),gt(L,0)),gt(C,0))
    kursdata_ok=eqv(sum(datanu_ok,per),per)


    { Start och stängvillkor }

    minut_nu:=mult(frac(date()),1440)
    start_delay:=6
    close_delay:=15

    { säkerställ att det är minst "close_delay" minuter kvar till börsstängning }
    öppet:=ge(mult(1440,sub(market(c),frac(date()))),close_delay)

    { säkerställ att det gått minst "start_delay" minuter innan handeln startar }
    inpådagen:=gt(minut_nu,add(540,start_delay)) { 540 är kl 9.00 }

    { Halvdag Heldag }
    heldag:=ge(mult(sub(market(c),market(o)),1440),500)
    halvdag=not(heldag)


    { Övriga Villkor }

    { Kollar om scriptet kör i live_läge och inte i diagramläge }
    live=and(eqv(int(d),int(date())),eqv(cum(1),1)) { Särskilt behändigt vid loopar så att loopning endast sker live (sparar en massa resurser) }


    Last edited by LillWicke; 2013-12-30, 16:20. Anledning: Uppdaterade första inlägget med några nya kontroller

  • #2
    Mycket bra tråd samlingstråd!

    Saknar kontroll att man har komplett kursdata (inga tomrum på kursdata) exempelvis senaste 5 dagar.

    Comment


    • #3
      Ursprungligen postat av johansson Visa inlägg
      Mycket bra tråd samlingstråd!

      Saknar kontroll att man har komplett kursdata (inga tomrum på kursdata) exempelvis senaste 5 dagar.
      Någonting liknande som nedan kanske skulle fungera. (Man får justera per till lämpligt intervall)
      Har någon en annan idé, kommentera gärna.

      { Kolla att all kursdata finns under en viss period }
      per:=50
      datanu_ok=and(and(gt(H,0),gt(L,0)),gt(C,0))
      kursdata_ok=eqv(sum(datanu_ok,per),per)
      Last edited by LillWicke; 2013-10-28, 21:16.

      Comment


      • #4
        Ursprungligen postat av LillWicke Visa inlägg
        Någonting liknande som nedan kanske skulle fungera. (Man får justera per till lämpligt intervall)
        Har någon en annan idé, kommentera gärna.

        { Kolla att all kursdata finns under en viss period }
        per:=50
        datanu_ok=and(and(gt(H,0),gt(L,1,0)),gt(C,1,0))
        kursdata_ok=eqv(sum(datanu_ok,per),per)
        Var gör 3e parametern i GT?

        Comment


        • #5
          Ursprungligen postat av johansson Visa inlägg
          Var gör 3e parametern i GT?
          Ha, Ha, ja det kan man undra.
          Ändrar genast.

          Comment


          • #6
            Uppdaterade första inlägget med två nya kontroller.

            Comment


            • #7
              Ursprungligen postat av LillWicke Visa inlägg
              { Halvdag Heldag }
              heldag=ge(sub(mult(market(c),1440),540),510)
              halvdag=not(heldag)
              funkade inte för mig, men detta är väll lika bra:
              heldag:=ge(mult(SUB(market(c),market(o)),1440),500)

              Comment


              • #8
                Ursprungligen postat av johansson Visa inlägg
                funkade inte för mig, men detta är väll lika bra:
                heldag:=ge(mult(SUB(market(c),market(o)),1440),500)
                Ja, market(o) går ju lika bra att använda (lite enklare och smartare) och 500 betyder ju 10 min innan stängning.
                Visst, vi kör på det istället. Jag ändrar första inlägget.

                Comment


                • #9
                  Har lagt till en avdelning "Övriga Villkor",
                  samt ett villkor som dedekterar om scriptet kör i live- eller i diagramläge.
                  Sparar mycket resurser när man loopar.

                  Comment


                  • #10
                    Viktig tråd

                    Hej!
                    I denna tråd finns viktiga tips. Läs ovan.
                    mvh
                    Bertil

                    Comment

                    Working...
                    X