Allmänt meddelande

Collapse
No announcement yet.

Atr volatilitet stop

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

  • Atr volatilitet stop

    Hej
    Jag söker efter information om hur man kan få till att ATR ritas ut i grafen samt om man kan använda det utritade som stoploss? Jag vill kunna sätta atr perioden och multipliern.
    Vid upptrend så visas stop nivån under och vid nedtrend så ritas stoppen såklart ovanför staplar. Tanken är alltså som stopploss mini fast med ATR. Kanske redan finns att tillgå
    Hälsningar J

  • #2
    tex stop-loss:

    per:=10
    mtiple:=2
    {för long}
    stpL=sub(lasttrade(b,p),mult(atr(per),2))
    {för kort}
    stpS=add(lasttrade(s,p),mult(atr(per),2))

    rita=if(gt(portfolio(v),0),stpL,if(lt(portfolio(v),0),stpS,0))
    draw(rita,3,rqb)
    add(0,0)

    Egentligen kan man ändra direkt i scriptet i stället för överst i scriptet. Smak sak.
    Svårt att veta vad du menar vid upptred respektive nertrend, dvs från vad du vill addera respektera subtrahera atr. Spelar ingen roll. I exemplet ovan kan lasttrade bytas ut mot något annat.
    Last edited by Henric; 2020-03-30, 14:32.

    Comment


    • #3
      Är det ATR i dagsupplösning du vill köra? Eller någon annan upplösning?

      Comment


      • #4
        Dagsupplösning? Ja jag kör dags och 30 eller 15 minuters mest.
        Bifogar en länk, hoppas det är ok! Detta är vad jag tänkt mig
        https://se.tradingview.com/script/v9...latility-Stop/

        Trailing stop i både köp och blankning
        Hälsningar J

        Comment


        • #5
          Ah, då är jag med. Tänkte mest på just själva ATR-delen, resten av stoppen kan ju köras i 1-minutsupplösning som vanligt. Men jag testar med 15-minuters ATR då så får vi se hur det blir.

          Comment


          • #6
            Här är ett exempel, moddad Stoploss Mini med 15-minuters ATR(20). Har angett -0.002 sin värde i Indata script, fält 1. Alltså hur många ATR som flytnivån ska ligga under toppnotering. Enkelt att justera osv.




            { Stoploss Mini Long ATR }
            { 200330 }
            elastisk:=0 { 1=JA 0=NEJ - använd 0 för minifutures}
            tid_innan_stäng:=4 { minuter innan stängning }
            max_spread_procent:=4 { max tillåten spread i procent }
            tidspärr1:=0.33 { minuter mellan orderförsök }
            { }
            i1(
            öppet=ge(mult(1440,sub(market(c),frac(d))),tid_innan_stäng)
            stoppgräns1=ScrPar(1)
            stoppgräns2={sub(1,div(abs(stoppgräns1),100))}sub(1,mult(atrex(20,a),abs(stoppgräns1)))
            målantal=ScrPar(2)
            lastbuy=LastTrade(B,P)
            innehav=Portfolio(v)
            index=and(and(eqv(hhv(v,10),0),and(eqv(s,0),eqv(b,0))),gt(llv(c,10),0))
            mv1=Mov(if(index,c,b),2,s)
            fastmfi=Mov(LinReg(Mfi(3),4),4,e)
            mfiner=Lt(LlvBars(fastmfi,2),1)
            lt1=LastTrade(B,D)
            minSedanKöp=Mult(Sub(d,lt1),1440)
            delay_ok=gt(minSedanKöp,tidspärr1)
            inpådagen=gt(frac(date()),0.376)
            spreadcheck1=lt(div(s,b),add(1,div(max_spread_procent,100)))
            spreadcheck2=or(index,and(and(spreadcheck1,gt(s,b)),gt(b,0)))
            start=if(and(öppet,ge(d,lasttrade(b,d))),if(spreadcheck2,if(index,h,b),0),0)
            maxhittills=hhv(start,1000)
            level1=Sub(maxhittills,stoppgräns1)
            level2=Mult(maxhittills,stoppgräns2)
            level3=if(lt(scrpar(1),0),level2,level1)
            flytstopp1=And(Lt(if(index,c,b),level3),Lt(mv1,level3))
            flytstopp2=Lt(if(index,c,b),level3)
            flytstopp3=If(elastisk,flytstopp1,flytstopp2)
            Draw(If(and(delay_ok,Gt(innehav,målantal)),level3,0),9,rqb)
            signal1=And(And(And(or(mfiner,Not(elastisk)),flytstopp3),Gt(innehav,målantal)),Gt(innehav,0))
            signal2=And(And(signal1,xor(stoppgräns1,0)),delay_ok)
            signal3=and(and(and(and(signal2,inpådagen),öppet),spreadcheck2),or(index,gt(b,0)))
            Mult(signal3,10)
            )

            {@A(15,)}
            Attached Files

            Comment


            • #7
              Några tankar.

              1. Förstår inte varför samma princip som % används. Atr är värde i valutan. Blir beräkningen med atr större än 1 blir resultatet negativt.
              I stället borde stoppgräns1 användas med formelen: mult(atr(20),scrpar(1))

              2. mfi som används i scriptet finns ej för index och för minifuture är volymen väldig slagig och inte rättvis.

              3. Beräknngen enlig stopploss mini lägger på atr efter högsta priset hittils. Enligt exemplet ska högsta hittills av kombinationen pris-atr användas (för long). Det göra att kurvan inte blir slagig. Kan aldrig får ett lägre värde än tidigare värden.


              Exempel där lasttrade bytts mot c. Bara för att rita.

              peri:=20
              mtiple:=2

              i30(
              metod1=hhv(sub(c,mult(atr(peri),mtiple)),40)
              metod2=sub(hhv(c,40),mult(atr(peri),mtiple)) { stop-loss mini }
              draw(metod1,3,rqb)
              draw(metod2,4,bqb)
              and(0,0)

              )


              Edit: Nr 2. Jag såg att problemet kan undvikas om man använder elastisk eller ej.
              Last edited by Henric; 2020-03-30, 23:10.

              Comment


              • #8
                Jag får testa mig fram med detta för att se om det passar mig!

                För att klargöra
                Om jag inte vill använda "stop loss mini" utan bara rita atr i grafen och få det presenterat som i länken i tidigare inlägg, kan jag använda mig av detta från Henric

                Exempel där lasttrade bytts mot c. Bara för att rita.

                peri:=20
                mtiple:=2

                i30(
                metod1=hhv(sub(c,mult(atr(peri),mtiple)),40)
                metod2=sub(hhv(c,40),mult(atr(peri),mtiple)) { stop-loss mini }
                draw(metod1,3,rqb)
                draw(metod2,4,bqb)
                and(0,0)

                Stort tack för hjälp så här långt Lär mig sakta men säkert
                Hälsningar J

                Comment


                • #9
                  Behövs ändras lite.
                  Kruxet är minuterna från köp tills nästa 30 minuters period. Antingen får den perioden använda värdet från lasttrade(b,p)-atr eller så behövs lite modifikationer.

                  Edit: Vill du bara rita är det nog enklast att spara högsta stoppvärdet hittills i SetGvarIfGui och rita.
                  Last edited by Henric; 2020-03-31, 10:23.

                  Comment


                  • #10
                    {long}
                    peri:=20
                    mtiple:=1

                    i1(
                    range=mult(atrEx(peri,a),mtiple)
                    atFlyt1=mx(sub(c,range),sub(lasttrade(b,p),range))
                    atFlyt2=if(and(ge(d,lasttrade(b,d)),gt(portfolio(v),0)),atFlyt1,0)
                    rita=Retval(if(or(eqv(atFlyt2,0),gt(atFlyt2,Getval(5))),atFlyt2,Getval(5)),5)
                    draw(rita,3,dgqb)
                    and(0,0)

                    )

                    {@A(30,)}

                    Comment


                    • #11
                      Blir inte riktigt som jag tänkt mig ändå, den jag använt innan i tradingview kommer ursprungligen från tc2000. Hittade en beskrivning på den på deras forum. Jag är inte tillräckligt insatt i autotradern för att få till den tyvärr så jag hoppas på lite uppskattad support till

                      ATR
                      "The Volatility Stop section of the TC2000 Online Help contains a basic description along with a link to a more detailed article on its actual calculation.
                      Essentially the indicator keeps track of the highest close when the volatility stop is below price or the lowest close when the volatility stop is above price. It keeps subtracting a multiple of Average True Range when the volatility stop is below price or adding a multiple of ATR when the volatility stop is above price to the highest close or lowest close of the trend so far. This value is tracked and does not retreat (even if the ATR is increasing).
                      If price closes on the other side of Volatility Stop indicator, it changes trends and switches sides.
                      https://www.linnsoft.com/techind/volatility-stop-vstop
                      Hälsningar J

                      Comment


                      • #12
                        Den är bara byggt som en stopp för long position och utgår från senaste köp. Borde stämma med trappan upp som i long-trend. Det kanske skulle kunna gå att bygga som en indikator som inte tar hänsyn till senaste affär. Även om man får till den blir det lite strul med ritningen då det inte går att bara börja och slut rita med uppehåll utan att linjen går till 0. Inte helt nödvändgt. Får se om jag får tid senare i veckan. Annars kan någon annan prova.

                        Comment


                        • #13
                          Beskrivningen använder true range och inte atr. Same same, but different. Exempel för att visa i diagram. Blir en liten skarv vid byte, men visar ändå rätt. Går inte att sätta värde till null. Kanske går att tweaka.

                          peri:=20
                          mtiple:=2

                          i30(
                          rangeX=mult(atr(peri),mtiple)
                          rangeU=sub(c,rangeX)
                          rangeN=add(c,rangeX)
                          Exit=and(gt(GetGvar(101),0),lt(c,GetGvar(101)))
                          Cover=and(gt(GetGvar(102),0),gt(c,GetGvar(102)))
                          Long=or(or(and(eqv(mx(GetGvar(101),GetGvar(102)),0),ge(c,aref(c,1))),and(gt(GetGvar(101),0),gt(rangeU,GetGvar(101)))),Cover)
                          SetGvarIfGui(if(Long,rangeU,0),101,or(Long,Exit))
                          Shrt=or(or(and(eqv(mx(GetGvar(101),GetGvar(102)),0),lt(c,aref(c,1))),and(gt(GetGvar(102),0),lt(rangeN,GetGvar(102)))),Exit)
                          SetGvarIfGui(if(Shrt,rangeN,0),102,or(Shrt,Cover))

                          draw(GetGvar(101),3,gqb)
                          draw(GetGvar(102),4,rqb)

                          and(0,0)
                          )

                          Edit: Vet ej vilken nytta den har. Kanske för manuell handel eller som filter. Annars kan man ha en atr-stopp för annan trigger.
                          Last edited by Henric; 2020-04-01, 21:11.

                          Comment

                          Working...
                          X