Allmänt meddelande

Collapse
No announcement yet.

Supertrend Indicator

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

  • #76
    Har du loggat dessa?

    Börjar längst bak och går framåt. Det är därför turns ökar och loockback minskar. MaxVarv skulle kunna vara Längd istället och fanns där när antal varv var dynamiskt.

    250-1, 250-2, 250-3......

    Comment


    • #77
      Ja det er rigtigt MaxVarv er statisk.

      Comment


      • #78
        Ursprungligen postat av Henric Visa inlägg

        Jimmey, du får testa som vanligt.
        Har testat och skriptet fungerar live på testkonto. Provade med 148 instrument. alla som fått signal har legat över getval(3) i senaste skriptet.

        EDIT: låter den testköra ett tag för utvärdering.

        Comment


        • #79
          Jag har en nyversion som snabbar på scriptet. Kommer snart.

          Comment


          • #80
            Jag simulerade ca 10 transaktioner per dag för ett instrument under 1 år. Jämförde versionernas supertrend som var samma vid varje tillfälle. Denna version var 14ggr sanbbare.

            {// Olika val}
            VäljBeräkning:=1 {atr=1 ema(true_range)=0}
            Diagram:=0 {1=endast rita 0=sim,skarpt}
            perioder:=10 {perioder för banden}
            multiplier:=3 {bredden på banden}
            Längd:=250 {lookback för att vara säker på att kurvan är synkad}
            {//}

            idag=or(eqv(int(d),int(date())),Diagram)
            stämpel=if(gt(mn(sub(aref(d,1),aref(d,2)),sub(aref(d,2),aref(d,3))),0.5),int(d),d)

            Atg=atr(perioder)
            TrueR=ema(mx(mx(sub(h,l),sub(h,aref(c,1))),sub(aref(c,1),l)),perioder)
            Arange=if(Väljberäkning,Atg,TrueR)

            HLA=div(add(h,l),2)
            BUB1=add(HLA,mult(multiplier,Arange))
            BLB1=sub(HLA,mult(multiplier,Arange))

            retval(aref(BUB1,längd),1)
            retval(aref(BLB1,längd),2)
            retval(aref(BLB1,längd),3)

            {Beräkna nya kurvor för perioden}
            MaxVarv=if(eqv(getval(7),stämpel),0,Längd)
            retval(0,0)
            turns=retval(add(getval(0),1),0)
            förraU=add(getval(1),0)
            förraL=add(getval(2),0)
            förraS=add(getval(3),0)
            lookBack=sub(MaxVarv,turns)
            Kurs=if(eqv(lookBack,0),c,aref(c,lookBack))
            BUB2=if(eqv(lookBack,0),BUB1,aref(BUB1,lookBack))
            BLB2=if(eqv(lookBack,0),BLB1,aref(BLB1,lookBack))
            retval(if(or(lt(BUB2,förraU),gt(aref(c,add(lookBack,1)),förraU)),BUB2,förraU),1)
            retval(if(or(gt(BLB2,FörraL),lt(aref(c,add(lookBack,1)),förraL)),BLB2,förraL),2)
            Upper1=and(eqv(förraS,förraU),le(Kurs,getval(1)))
            Lower1=and(eqv(förraS,förraU),ge(Kurs,Getval(1)))
            Lower2=and(eqv(förraS,förraL),ge(Kurs,getval(2)))
            Upper2=and(eqv(förraS,förraL),le(Kurs,getval(2)))
            retval(if(Upper1,getval(1),if(Lower1,getval(2),if(Lower2,getval(2),if(Upper2,getval(1),getval(3))))),3)
            Previous=and(eqv(MaxVarv,250),eqv(lookBack,1))
            retval(if(Previous,getval(1),getval(4)),4)
            retval(if(Previous,getval(2),getval(5)),5)
            retval(if(Previous,getval(3),getval(6)),6)
            loop(turns,MaxVarv)

            fastU=if(or(lt(BUB1,getval(4)),gt(aref(c,1),getval(4))),BUB1,getval(4))
            fastL=if(or(gt(BLB1,getval(5)),lt(aref(c,1),getval(5))),BLB1,getval(5))
            fastS=if(or(and(eqv(Getval(6),getval(4)),ge(c,getval(4))),and(eqv(getval(6),getval(5)),ge(c,getval(5)))),fastL,fastU)

            superTrnd=if(eqv(getval(7),stämpel),fastS,getval(3))

            retval(if(and(eqv(MaxVarv,250),idag),stämpel,getval(7)),7)

            and(0,0)

            Comment


            • #81
              Nu, vad jag kan se hittills, har bara testat två år på omx ännu, verkar den bara shorta när den är under och gå lång när den är över.

              Comment


              • #82
                Ursprungligen postat av Henric Visa inlägg
                Jag har en nyversion som snabbar på scriptet. Kommer snart.
                ser ut att funka bra!

                Comment


                • #83
                  Här är en OMXPI / extraobjekt version. kan fumgera som klimat filter ellet övergripande portfölj stoploss. skillnader från Henriks original är ändrat retval id.

                  VäljBeräkning:=1 {atr=1 ema(true_range)=0}
                  Diagram:=0 {1=endast rita 0=sim,skarpt}
                  perioder:=10 {perioder för banden}
                  multiplier:=3 {bredden på banden}
                  längd:=250 {lookback för att vara säker på att kurvan är synkad}
                  {//}


                  {------------------------------ SUPER TREND FILTER -------------------------------}


                  idag=or(eqv(int(cmpref(d,0,A)),int(date())),Diagram)

                  stämpel=if(gt(mn(sub(cmpref(d,1,A),cmpref(d,2,A)),sub(cmpref(d,2,A),cmpref(d,3,A))),0.5),int(cmpref(d,0,A)),cmpref(d,0,A))


                  Atg=ATREx(perioder,A)
                  TrueR=ema(mx(mx(sub(cmpref(h,0,A),cmpref(l,0,A)),sub(cmpref(h,0,A),cmpref(c,1,A))),sub(cmpref(c,1,A),cmpref(l,0,A))),perioder)

                  Arange=if(Väljberäkning,Atg,TrueR)


                  HLA=div(add(cmpref(h,0,A),cmpref(l,0,A)),2)
                  BUB1=add(HLA,mult(multiplier,Arange))
                  BLB1=sub(HLA,mult(multiplier,Arange))

                  retval(aref(BUB1,längd),1)
                  retval(aref(BLB1,längd),2)
                  retval(aref(BLB1,längd),9)

                  {Beräkna nya kurvor för perioden}
                  MaxVarv=if(eqv(getval(7),stämpel),0,Längd)
                  retval(0,0)
                  turns=retval(add(getval(0),1),0)
                  förraU=add(getval(1),0)
                  förraL=add(getval(2),0)
                  förraS=add(getval(9),0)
                  lookBack=sub(MaxVarv,turns)


                  Kuurs=if(eqv(lookBack,0),cmpref(c,0,A),cmpref(c,lookBack,A))
                  BUB2=if(eqv(lookBack,0),BUB1,aref(BUB1,lookBack))
                  BLB2=if(eqv(lookBack,0),BLB1,aref(BLB1,lookBack))
                  retval(if(or(lt(BUB2,förraU),gt(cmpref(c,add(lookBack,1),A),förraU)),BUB2,förraU),1)
                  retval(if(or(gt(BLB2,FörraL),lt(cmpref(c,add(lookBack,1),A),förraL)),BLB2,förraL),2)
                  Upper1=and(eqv(förraS,förraU),le(Kuurs,getval(1)))
                  Lower1=and(eqv(förraS,förraU),ge(Kuurs,Getval(1)))
                  Lower2=and(eqv(förraS,förraL),ge(Kuurs,getval(2)))
                  Upper2=and(eqv(förraS,förraL),le(Kuurs,getval(2)))
                  retval(if(Upper1,getval(1),if(Lower1,getval(2),if(Lower2,getval(2),if(Upper2,getval(1),getval(9))))),9)
                  Previous=and(eqv(MaxVarv,250),eqv(lookBack,1))
                  retval(if(Previous,getval(1),getval(8)),8)
                  retval(if(Previous,getval(2),getval(5)),5)
                  retval(if(Previous,getval(9),getval(6)),6)
                  loop(turns,MaxVarv)
                  fastU=if(or(lt(BUB1,getval(8)),gt(cmpref(c,1,A),getval(8))),BUB1,getval(8))
                  fastL=if(or(gt(BLB1,getval(5)),lt(cmpref(c,1,A),getval(5))),BLB1,getval(5))

                  fastS=if(or(and(eqv(Getval(6),getval(8)),ge(cmpref(c,0,A),getval(8))),and(eqv(getval(6),getval(5)),ge(cmpref(c,0,A),getval(5)))),fastL,fastU)

                  superTrnd=if(eqv(getval(7),stämpel),fastS,getval(9))

                  retval(if(and(eqv(MaxVarv,250),idag),stämpel,getval(7)),7)


                  draw(superTrnd,3,rqb)


                  {platshållare för logik}


                  {@A(0,SX All-Sha)}


                  Comment


                  • #84
                    En fråga

                    Jag önskar skapa signal när supertrendfilter slår om. dvs när instrumentpris hamnat ovanför trendlinje helst samma dag eller en dag efter. dvs trigger ska inte vara sann hela tiden då pris är över trend utan i samband med signal. Ett villkor också är att signalen kan filtreras nära stängningstid.

                    Undrar om någon har tips som fungerar live och i backtest?

                    jag har själv gjort ett försök men det blev inte alls som förväntat mig.
                    jag antog att man kunde använda aref och jämföra nu situation med t
                    ex. pris och trendvärde 2 dagar/perioder bakåt. Det signalerade inte alls där jag väntade mig utan på andra ofta extremprisnivåer.

                    oklart för mig om det blir en dataserie av superTrnd och om det går att hämta dess värde med aref.
                    förslag tas tacksamt emots.

                    Comment


                    • #85
                      Nära stängning är den vanliga formeln, tex:
                      le(mult(1440,sub(market(c),frac(date()))),7)

                      Nej, det blir ingen dataserie. På samma sätt som globala celler. Det finns lite olika sätt att hantera föregående periods värde. Enklast är att använda innehavet som parameter. Det fungerar eftersom att signalen är binär(on/off). Det går även att modifiera scriptet och lagra gårdagens värde.

                      Edit: Det blev enkelt. Getval(6) innehåller föregående periods värde för SuperTrend. Däremot finns i nuläget inte värden för längre perioder bakåt. Det skulle gå att logga korsningar, men jag kan inte se varför man skulle göra det när signalen är binär.
                      Last edited by Henric; 2021-10-25, 10:37.

                      Comment


                      • #86
                        Har implementerat indikatorn med framgång i tre olika inställningar för absolut primärtrend, absolut kortsiktig trend samt relativ trend på index.

                        Problemet jag har är att jag inte kan få dessa indikatorvärden i samma skript pga av begränsningen i antal retval, getval. Jag kan inte använda globala celler då skriptet screenar stort antal aktier.

                        Det jag undrar är om det är möjligt att implementera logiken utan retval / getval eller med färre antal ?

                        Det finns bara 10 st retvalceller varav 2 st använder jag redan till att lagra köp/säljsignal id. Så i praktiken har jag bara 8 celler till förfogande.
                        Skulle behöva minst 2 instanser av indikatorn så 4 celler per instans. Den relativa trenden för index kan jag dela via globalcell.
                        Last edited by jimmy; 2021-12-05, 09:33.

                        Comment


                        • #87
                          Det bästa vore fler celler för retval eller att det går att skriva till vissa scrpar().

                          Det kanske går att hitta på något med en temporär lagring i en gemensam cell, men vet ej. Hinner inte kolla kommande vecka. Då hade det blivit smidigt.

                          Edit: ....eller att en cell har en array som tex kan lagra flera värden för ett instrument
                          Last edited by Henric; 2021-12-05, 10:11.

                          Comment


                          • #88
                            Man kan återanvända celler. Tex om en cell används för någon beräkninge högre upp i scriptet, så kan samma cell användas längre ned under förutsättning att beräkningens resultat kan sparas på nåt sätt. Tex, tre Supertrend kan sparas i tre celler efter beräkning, och därefter är alla andra 7 celler lediga igen längre ned i scriptet. Samna gäller celler som sparas i loggade lokala ordertransar. De kan användas till annat högre upp i scriptet och skrivas sist med värdena som ska sparas med transen.

                            Comment


                            • #89
                              Jag kollade snabbt och hittar ingen annan lösning. Det behövs 7 celler för att kunna köra snabbare utan loop för varje animering inne stapeln(väldigt resurskrävande med många instrument). 3st för nuvarande band, 3st för föregående band och 1st för tidsstämpeln. Om inte någon hittar någon lösning.

                              Comment


                              • #90
                                Vad är sista output från varje Supertrend?

                                Comment

                                Working...
                                X