Allmänt meddelande

Collapse
No announcement yet.

3*ATR som stop loss

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

  • 3*ATR som stop loss

    Hej,
    Finner inte ut om man kan ange t ex 3* ATR värdet för aktuell aktie då man t ex har flytande stopp eller liknande, då vadj ag förstår man endast kan ge absoluttal i % eller i kronor.
    Tanken med ATR är att den blir mer följsam (dynamisk) då t ex smal trendkanal ( lågvolatilt) jfr med högre volatilitet.

    Har hört att 3*ATR är vanligt förekommande, ngn som vet mer?

  • #2
    Det är enkelt gjort att fixa en stopp som triggar på 3xATR. I princip behövs följande:

    inköp=lasttrade(b,p)
    3at=mult(3,atr(10))
    stopp=sub(inköp,3at)
    innehav=gt(portfolio(v),0)
    sälj1=le(c,stopp)
    sälj2=and(sälj1,innehav)
    sälj3=and(sälj2,eqv(int(d),int(date())))
    mult(sälj3,10)


    Möjligen kan man lägga till ett villkor som stoppar affärer i callen osv.

    Comment


    • #3
      ...tackar, kunde man även få till det scriptet kombinerat i den flytande stoppen stop loss mini?

      Comment


      • #4
        Här för stop-loss mini long. ATREx är Atr för extraobjekt och lämpligt är att använda samma upplösning som ordermodellen som triggar köpet(inget krav). Nu är den byggd så att högsta värdet av atr-stoppen och den vanliga stoppen används. Vet ej hur du vill att den ska fungera. Det går att bygga mer avancerat och på olika sätt.

        .........
        maxhittills=hhv(start,2000)
        {börja ändra här, om ändrar kopia scriptet till ett nytt så original finns kvar}
        atebj=mult(ATREx(10,A),3) {välj periodantal för atr}
        atlevel=sub(maxhittills,atebj)
        level1=Sub(maxhittills,stoppgräns1)
        level2=Mult(maxhittills,stoppgräns2)
        level3=if(lt(scrpar(1),0),mx(level2,atlevel),mx(level1,atlevel))
        {slut ändringar}
        flytstopp1=And(Lt(b,level3),Lt(mv1,level3))
        ............

        Comment


        • #5
          Ursprungligen postat av Rikard Nilsson Visa inlägg
          Det är enkelt gjort att fixa en stopp som triggar på 3xATR. I princip behövs följande:

          inköp=lasttrade(b,p)
          3at=mult(3,atr(10))
          stopp=sub(inköp,3at)
          innehav=gt(portfolio(v),0)
          sälj1=le(c,stopp)
          sälj2=and(sälj1,innehav)
          sälj3=and(sälj2,eqv(int(d),int(date())))
          mult(sälj3,10)


          Möjligen kan man lägga till ett villkor som stoppar affärer i callen osv.

          Liten fråga; det ATR-värde som används i scriptet ovan är väl ett momentant värde, inte ett fast värde?
          Om man hellre vill använda det ATR-värde som var när köp gjordes, borde en extra lasttrade-rad läggas till:

          atr_buy=lasttrade(b,4)

          och i köpscriptet ha med raden:

          retval(atr(10),4)

          Eller är jag helt ute och cyklar?
          MadMax

          Comment


          • #6
            Stämmer precis! Då lagras värdet undsn i köpögonblicket och ligger kvar stilla.

            Comment


            • #7
              Ursprungligen postat av Rikard Nilsson Visa inlägg
              Stämmer precis! Då lagras värdet undsn i köpögonblicket och ligger kvar stilla.

              Rikard, nu när vi ändå är inne på frågor om globala minnesregister.
              Jag har flera köpscript fördelade i flera olika konton för enkelheten skull, men använder samma ATR-exit oavsett konto. Det är inte förrän nu det har slagit mej att detta kanske inte är korrekt, då samma aktie kan köpas vid fler tillfällen på olika konton.
              Om t.ex ABB köps till konto1 under dag1, och värdet för ATR läggs i register 4. Dagen därpå, dag2, köps återigen ABB, denna gång i konto2. Även i detta fall läggs ATR-värdet i register 4.
              Skrivs det gamla värdet över, eller finns det ett ATR-värde för varje konto? Jag misstänker att det är det första.
              Kan jag komma runt detta med fler register?
              Jag använder följa exit:
              inköp=lasttrade(b,p)
              volla=lasttrade(b,4)
              target=add(inköp,volla)
              innehav=gt(portfolio(v),0)
              samma_dag=eqv(int(d),int(date()))
              {}
              sälj1=ge(c,target)
              sälj2=and(sälj1,innehav)
              sälj3=and(sälj2,samma_dag)
              mult(sälj3,10)
              MadMax

              Comment


              • #8
                Cellerna som lagras med transaktioner är inte kontounika så man får göra något för att det inte ska blandas ihop. En variant är att spara i olika celler baserat på konto. Du kan använda fält 32 i Indata som är kontounikt och ange vilken cell där som ska gälla för det kontot. Tex:

                Konto 1: skriv 1 i fält 32
                Konto 2: skriv 2 i fält 32

                I scriptet kan man läsa av fält 32 med scrpar(32) och spara i den cellen som angivits:

                retval(volla,scrpar(32))

                och läsa av på samma sätt med:

                Lasttrade(b,scrpar(32))

                Comment


                • #9
                  Ursprungligen postat av Rikard Nilsson Visa inlägg
                  Cellerna som lagras med transaktioner är inte kontounika så man får göra något för att det inte ska blandas ihop. En variant är att spara i olika celler baserat på konto. Du kan använda fält 32 i Indata som är kontounikt och ange vilken cell där som ska gälla för det kontot. Tex:

                  Konto 1: skriv 1 i fält 32
                  Konto 2: skriv 2 i fält 32

                  I scriptet kan man läsa av fält 32 med scrpar(32) och spara i den cellen som angivits:

                  retval(volla,scrpar(32))

                  och läsa av på samma sätt med:

                  Lasttrade(b,scrpar(32))

                  Tack Rikard för ett snabbt svar.
                  Jag misstänkte detta när jag fick lite konstiga exitar på ALIV från olika konton.

                  Trevlig helg!
                  MadMax

                  Comment

                  Working...
                  X