Allmänt meddelande

Collapse
No announcement yet.

Begränsa antal papper som köps

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

  • Begränsa antal papper som köps

    Har ett script som är tänkta att kopplas på många papper.
    Jag är ute efter en funktion som begränsar antalet samtidigt ägda papper så att ett och samma script inte handlar slut på kontot. Det/de papper som först får signal och det finns "ledig plats" får handla. Jag har testat lite olika varianter men inte träffat rätt än.
    Så min fråga är om någon här på forumet har en färdig lösning på problemet och vill dela med sig eller har någon idé på hur man implementerar det i AT.

    Har bland annat testat att skriva till global cell för att hålla reda på hur många papper som ägs, men AT handlar på trots att den inte ska. Antingen har jag tänkt fel eller så använder jag kommandot fel? Eller så är det bara i bänken det blir fel? Jag har inte testat detta skarpt.

    ex.
    Köp)
    .
    köp2=and(and(and(köp1,le(portfolio(v),0)),öppet),lt(getgvar(7003),Maxantal))
    retval(b,0)
    setgvarif(add(1,getgvar(7003)),7003,köp2)
    mult(köp2,1)
    -----------------------------------------------------------------------------
    Sälj)
    .
    sälj2=and(sälj1,and(1,öppet))
    retval(0,0)
    setgvarif(sub(getgvar(7003),1),7003,sälj2)

    mult(sälj2,10)

  • #2
    Din metod borde fungera. Se till att köp och sälj inte sker i samma insamling då cellvärdet blir noll. En räknare är inte bra i fall tex en order inte går igenom och att den ändå räknar upp. Vanligast är att man kollar det totala värdet av positionerna med cash-paramtern i förhållandet till depåvärdet.

    Comment


    • #3
      Jag har lite svårt att kolla av mot kontot då varje papper kan köpa in sig i flera steg och för olika mycket pengar.
      Vad menar du med "samma insamling"? Köp och sälj på exakt samma tidpunkt?

      Comment


      • #4
        Det var bara exempel. Generellt menar jag att en räknare skulle kunna visa fel i fall något oväntat händer. För att kolla vad som är fel skulle du kunna begränsa så att bara en affär kan ske vid varje tidpunkt(5 sek eller 1 minut beroende på animering).

        Jag använder lasttrade för varje instrument. Sedan kan man dessutom kolla med cash(a) att det på depånivå finns tillgängliga medel för att köpa.

        tex kan handla i max tre steg:

        ...
        köp1=and(or(le(portfolio(v),0),le(lasttrade(b,2),2)),triggersignal)
        retval(if(le(portfolio(v),0),1,add(lasttrade(b,2),1)),2)
        mult(köp1,10)
        Last edited by Henric; 2019-10-28, 11:53.

        Comment


        • #5
          Tack för tipsen!
          Jag ska testa vidare och hoppas att jag löser det.

          Comment

          Working...
          X