Allmänt meddelande

Collapse
No announcement yet.

Supertrend Indicator

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

  • Supertrend Indicator

    Har testat att koda en Indicator som de kallar för "Supertrend Indicator", ser ute att vara en brukbar indikator, men jag får inte till det, har förmodligen gjort en tankevurpa. Som grund har jag använt beskrivningen från den här hemsida

    https://medium.com/codex/step-by-ste...n-656aa678c111

    Kanske det är någon här som kan styra upp koden?

    Kod:
    perioder:=10
    multiplier:=3
    
    truerange=mx(mx(sub(h,l),sub(h,aref(c,1))),sub(l,aref(c,1))) {använda absoluta tal?}
    RTA=ema(truerange,perioder) {verkar onödigt, vanlig ATR bör fungera}
    HLA=div(add(h,l),2)
    BUB=add(HLA,mult(multiplier,RTA))
    BLB=sub(HLA,mult(multiplier,RTA))
    
    CFUB=if(or(lt(BUB,aref(BUB,1)),gt(aref(c,1),getval(0))),BUB,getval(0))
    CFLB=if(or(gt(BLB,aref(BLB,1)),lt(aref(c,1),getval(1))),BLB,getval(1))
    CST=if(and(eqv(getval(2),getval(0)),gt(c,CFUB)),CFUB,if(and(eqv(getval(2),getval(0)),lt(c,CFUB)),CFLB,if(and(eqv(getval(2),getval(1)),gt(c,CFLB)),CFLB,if(and(eqv(getval(2),getval(1)),lt(c,CFLB)),CFLB,getval(2)))))
    
    retval(CFUB,0) {PUB}
    retval(CFLB,1) {PLB}
    retval(CST,2) {PST}
    
    add(CST,0)
    AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

  • #2
    jeg vil godt bruge tid på det her i weekenden :-)

    Comment


    • #3
      Jeg kan se i python scriptet at der skrives:

      if (upper_band[i] < final_bands.iloc[i-1,0]) | (close[i-1] > final_bands.iloc[i-1,0]):
      final_bands.iloc[i,0] = upper_band[i]
      else:
      final_bands.iloc[i,0] = final_bands.iloc[i-1,0]

      Hvor du har skrevet:
      CFUB=if(or(lt(BUB,aref(BUB,1)),gt(aref(c,1),getval(0))),BUB,getval(0))

      hvordan virker getval(0) fordi i scriptet er det final_bands.iloc[i-1,0] som er lig med aref(BUB,1) der bruges.

      er aref(BUB,1) og getval(0) det samme i autotrader koden ?

      Comment


      • #4
        perioder:=50
        multiplier:=3

        truerange=mx(mx(sub(h,l),sub(h,aref(c,1))),sub(l,aref(c,1))) {använda absoluta tal?}
        RTA=ema(truerange,perioder) {verkar onödigt, vanlig ATR bör fungera}
        HLA=div(add(h,l),2)
        BUB=add(HLA,mult(multiplier,RTA))
        BLB=sub(HLA,mult(multiplier,RTA))

        CFUB=if(or(lt(BUB,Getval(0)),gt(aref(c,1),Getval(0))),BUB,getval(0))
        CFLB=if(or(gt(BLB,Getval(1)),lt(aref(c,1),Getval(1))),BLB,Getval(1))
        CST=if(or(and(eqv(Getval(2),Getval(0)),lt(c,CFUB)),and(eqv(Getval(2),CFLB),lt(c,CFLB))),CFUB,if(or(and(eqv(Getval(2),Getval(0)),gt(c,CFUB)),and(eqv(Ge tval(2),Getval(1)),gt(c,CFLB))),CFLB,Getval(2)))
        Test=if(or(and(eqv(Getval(3),Getval(0)),lt(c,CFUB)),and(eqv(Getval(3),CFLB),lt(c,CFLB))),CFUB,CFLB)

        retval(CFUB,0)
        retval(CFLB,1)
        retval(CST,2)
        retval(Test,3)

        draw(CST,4,gqb)
        draw(sub(Test,4),5,bqb)
        and(0,0)

        Ändrade i CST
        Får kolla om det ser bra ut
        Det verkar vara binärt och i så fall behövs bara en kolla för en sidorna (se Test)
        Annars har supertrenden vänt både på lite kortare och åtminstone halv lång sikt
        Sedan kanske någon har någon lösning för att grafiskt växla mellan rött och grönt

        Comment


        • #5
          Jeg har sammenlignet Python versionen med Autotrader versionen og der er en lille forskel. I den første del at grafen matcher de ikke hinanden.

          Det ses der hvor candel sticken bliver til en shooting star.
          I Python versionen bryder supertrend indikatoren op over prisen og bliver til et salgs signal.

          Det gør den ikke i Autotrader versionen.
          Attached Files

          Comment


          • #6
            Her er Python scriptet og data fra yahoo hvis nogen er interaseret.
            Attached Files

            Comment


            • #7
              jeg leder videre og ser om jeg kan finde forskellen.

              Comment


              • #8
                Der mangler abs på line 4, det ændre den endelige kurven en smule

                truerange=mx(mx(sub(h,l),abs(sub(h,aref(c,1)))),abs(sub(l,aref(c,1)))) {använda absoluta tal?}

                # ATR
                tr1 = pd.DataFrame(high - low)
                tr2 = pd.DataFrame(abs(high - close.shift(1)))
                tr3 = pd.DataFrame(abs(low - close.shift(1)))
                Last edited by Kemog; 2021-08-28, 01:56.

                Comment


                • #9
                  Jag byggde en egen indikator. Sedan överförde jag CST till denna version. Själva principen ser ut att fungera. Jag har inte gått igenom på något sätt.

                  Om det bara skiljer i början skulle jag testa 2 saker, men först skulle jag jämföra lite olika startdatum och längd på perioder.

                  1. Data skiljer
                  - Ladda ner dagsdata från Yahoo-finance till Autostock och jämför. Alternativ exportera dagsdata från Autostock till Excel och jämföra den vägen.
                  - Det finns inte tillräckligt med data nedladdat i historiken innan första datum i diagrammet.
                  - Ladda ner data på nytt och ersätt befintlig.
                  2. Något med beräkningen i Autostock göra att de första värdena inte blir rätt för att sedan synkas efter x-antal perioder. Tex att kurvan inte har värde vid start. En fusklösning skulle i så fall vara att inte rita x-antal första perioder.

                  Jag har inte tid den närmaste veckan. Hoppas ni hitta lösning och lägg gärna ut den på forumet.
                  Last edited by Henric; 2021-08-28, 10:05.

                  Comment


                  • #10
                    Så ja, ser bra. Har sett att den indikatorn är ganska snabb på att slå om vid krftiga fall, så det bör fungera fint som klimatfilter i strategier :-)


                    Ursprungligen postat av Henric Visa inlägg
                    perioder:=50
                    multiplier:=3

                    truerange=mx(mx(sub(h,l),sub(h,aref(c,1))),sub(l,aref(c,1))) {använda absoluta tal?}
                    RTA=ema(truerange,perioder) {verkar onödigt, vanlig ATR bör fungera}
                    HLA=div(add(h,l),2)
                    BUB=add(HLA,mult(multiplier,RTA))
                    BLB=sub(HLA,mult(multiplier,RTA))

                    CFUB=if(or(lt(BUB,Getval(0)),gt(aref(c,1),Getval(0))),BUB,getval(0))
                    CFLB=if(or(gt(BLB,Getval(1)),lt(aref(c,1),Getval(1))),BLB,Getval(1))
                    CST=if(or(and(eqv(Getval(2),Getval(0)),lt(c,CFUB)),and(eqv(Getval(2),CFLB),lt(c,CFLB))),CFUB,if(or(and(eqv(Getval(2),Getval(0)),gt(c,CFUB)),and(eqv(Ge tval(2),Getval(1)),gt(c,CFLB))),CFLB,Getval(2)))
                    Test=if(or(and(eqv(Getval(3),Getval(0)),lt(c,CFUB)),and(eqv(Getval(3),CFLB),lt(c,CFLB))),CFUB,CFLB)

                    retval(CFUB,0)
                    retval(CFLB,1)
                    retval(CST,2)
                    retval(Test,3)

                    draw(CST,4,gqb)
                    draw(sub(Test,4),5,bqb)
                    and(0,0)

                    Ändrade i CST
                    Får kolla om det ser bra ut
                    Det verkar vara binärt och i så fall behövs bara en kolla för en sidorna (se Test)
                    Annars har supertrenden vänt både på lite kortare och åtminstone halv lång sikt
                    Sedan kanske någon har någon lösning för att grafiskt växla mellan rött och grönt
                    Last edited by Lord S; 2021-08-28, 15:59.
                    AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

                    Comment


                    • #11
                      Snyggt! Ska testa själv!

                      Comment


                      • #12
                        Supertrenden virke rigtig fint som et klimat filter.
                        Jeg har testet med absolutte tal i udregningen og standard ATR() implantationen i Autotrader, men det ser ikke ud til at forbedre filteret.
                        Har testet dette som værende det mest optimale filter i min breakout strategi.

                        Kod:
                        { Supertrend }
                        truerange=mx(mx(sub(h,l),sub(h,aref(c,1))),sub(l,aref(c,1)))
                        RTA=ema(truerange,perioder)
                        HLA=div(add(h,l),2)
                        BUB=add(HLA,mult(multiplier,RTA))
                        BLB=sub(HLA,mult(multiplier,RTA))
                        CFUB=if(or(lt(BUB,Getval(0)),gt(aref(c,1),Getval(0))),BUB,getval(0))
                        CFLB=if(or(gt(BLB,Getval(1)),lt(aref(c,1),Getval(1))),BLB,Getval(1))
                        CST=if(or(and(eqv(Getval(2),Getval(0)),lt(c,CFUB)),and(eqv(Getval(2),Getval(1)),lt(c,CFLB))),CFUB,CFLB)
                        retval(CFUB,0)
                        retval(CFLB,1)
                        retval(CST,2)
                        Last edited by Kemog; 2021-08-30, 15:29.

                        Comment


                        • #13
                          Hur gör jag för att jämföra variablerna i 15minutersupplösning mot 30minutesupplösning.

                          Exempelvis köp när 15minuters>30min CLFB och 30min CST.
                          Eller om ni kan hänvisa mig var jag kan se hur jag kan snickra ihop det själv

                          Comment


                          • #14
                            Jag får inte riktigt till det som ett filter. Jag skulle behöva lite hjälp med att koda att köpsignalen som var sann nyss kommer på stapeln efter att korset linjen korsat kursen.

                            (Och för det estetiska så skulle jag vilja att signalen bytte färg när kursen var över. ) är ju inte jätteviktigt

                            Nån som kan hjälpa mig med den?

                            edit: förtydligat lite
                            Last edited by Gränna; 2021-08-30, 22:14.

                            Comment


                            • #15
                              Jeg bruger det som et filter til at finde aktier som er i en stigende trend.

                              kandidat=gt(c,CST))

                              købs signalet kunne være det fra smart beta men det virker ikke så godt på aktier. Der må du nok finde på din egen (EDGE) :-)

                              { Edge - Smart Beta }
                              setup=and(and(and(and(and(le(c,llv(aref(h,1),5)),dagarsedanköp),and(gt(adx,$par2),gt(diplus,diminus))),gt(c,mov(c,10,s))),lt(rsiws(2),94)),kandidat)
                              Last edited by Kemog; 2021-08-30, 22:34.

                              Comment

                              Working...
                              X