Allmänt meddelande

Collapse
No announcement yet.

Supertrend Indicator

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

  • #16
    Färg blir svårt. Det är egenligen två kurvor, men någon kan kanske klura ut något.

    Retval är ingen dataserie. Det senaste lagrade värde finns i minnet. Du kan spara värdet i en annan cell innan nya värdet sparas. Cross och aref kommer inte fungera, utan du får jämföra med värdena i cellerna.

    Comment


    • #17
      Jag försöker få den som iflter för koden om negativa divergenser enligt följande

      ok_handel=gt(c,cst)


      signalentry_0=and(and(and(botten_nyss,divergens_hela),ok_handel),filter)

      Det funkar inte alls, den handlar även om kursen är under linjen. Helt klart nåt jag inte fattat här

      Comment


      • #18
        Ursprungligen postat av Henric Visa inlägg
        Färg blir svårt. Det är egenligen två kurvor, men någon kan kanske klura ut något.

        Retval är ingen dataserie. Det senaste lagrade värde finns i minnet. Du kan spara värdet i en annan cell innan nya värdet sparas. Cross och aref kommer inte fungera, utan du får jämföra med värdena i cellerna.
        Ja det förklarar kanske saken..

        Comment


        • #19
          Henrik kender du til nogle Indikator som skifter mellem farver?
          så kan jeg godt se om jeg kan lave noget?

          Comment


          • #20
            Nej, inte i samma linje.

            Edit: Ett problem är att en linje inte kan bli null. Då skulle man kunna rita två linjer och bara en syns vid varje tidpunkt.
            Last edited by Henric; 2021-08-30, 23:02.

            Comment


            • #21
              Det her virken næsten :-)
              Den blander bare farverne.

              colorA:=gqb
              colorB:=rqb
              colorX=if(gt(c,CST),colorA,colorB)

              draw(CST,9,colorX)

              Comment


              • #22
                Ser att det blir problem att köra koden i animerat läge då den kommer att använda ej fullständiga staplar i beräkningarna.
                AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

                Comment


                • #23
                  Tänkte också på det. Jag har inte kollat exakt hur det påverkar. Ett sätt är att bara skriva i slutet av dagen. Alternativt att gårdagens värde sparas och en ny beräkning görs varje insamling. Någon har kanske en bättre lösning.

                  Comment


                  • #24
                    Ursprungligen postat av Kemog Visa inlägg
                    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)
                    Jag har ju skrivit nästan precis samma. Men jag får inte mtx att känna av om den är över linjen eller under med den kodraden. Skumt
                    Last edited by Gränna; 2021-08-31, 18:22.

                    Comment


                    • #25
                      I simulatorn kan CST fastna på det övre bandet då startvärdet är noll. Det gör den inte i diagrammet. CST2 tar hand om det. Jag uppdaterar dessutom gårdagens värden med senaste sparade när ny dag bildas. På så sätt kan dagens kurvor inte påverka sina egna värden. Varje animering utgår från samma värden och senaste sparade för dagen gäller.
                      Getval sitter bara i minnet och värdena kan lätt försvinna. Passar bra för diagram, men inte skarpa körningar. Jag använder i stället celler. Ännu bättre är att bygga en loop som körs varje insamling, men kan bli resurskrävande.

                      Jag gjorde en snabbkoll och det ser ut att bli samma kurva i diagram och simulering. Reservering för att jag inte gjort någon omfattande testing. Dessutom kan det skilja lite mellan animering och utan. Det beror på att h och l kan skilja i vissa situationer. Givetvis påverkar tidpunkten på dagen.

                      För diagram och utan animering ändras villkoret idag till:
                      idag=or(eqv(int(date()),int(d)),1)


                      perioder:=10
                      multiplier:=3

                      idag=or(eqv(int(date()),int(d)),0)
                      SetGvarIf(GetGvar(100),400,and(gt(int(d),int(GetGvar(700))),idag))
                      SetGvarIf(GetGvar(200),500,and(gt(int(d),int(GetGvar(700))),idag))
                      SetGvarIf(GetGvar(300),600,and(gt(int(d),int(GetGvar(700))),idag))

                      truerange=mx(mx(sub(h,l),abs(sub(h,aref(c,1)))),abs(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(and(or(lt(BUB,GetGvar(400)),gt(aref(c,1),GetGvar(400))),idag),BUB,GetGvar(400))
                      CFLB=if(and(or(gt(BLB,GetGvar(500)),lt(aref(c,1),GetGvar(500))),idag),BLB,GetGvar(500))
                      CST1=if(or(and(eqv(GetGvar(600),GetGvar(400)),lt(c,CFUB)),and(eqv(GetGvar(600),CFLB),lt(c,CFLB))),CFUB,CFLB)
                      CST2=if(eqv(GetGvar(600),0),if(ge(c,RTA),CFLB,CFUB),CST1)

                      SetGvarIf(CFUB,100,idag)
                      SetGvarIf(CFLB,200,idag)
                      SetGvarIf(CST2,300,idag)
                      SetGvarIf(d,700,idag)

                      draw(GetGvar(300),7,bqb)
                      and(0,0)

                      Comment


                      • #26
                        Nu funkar det jättebra som filter

                        Comment


                        • #27
                          Ändra CST2 till:
                          CST2=if(eqv(GetGvar(600),0),if(ge(c,HLA),CFLB,CFUB),CST1)

                          Det är inte perfekt tills en ny vändning har skett. Därefter blir det rätt. Ett sätt är att köra find eller liknande om GetGvar(600) är noll. Skulle mot förmodan ingen vändning hittas används CST2. Det blir alltid så tills första vändning i simulatorn eller tills det sker en första vändning i skarp körning. Ett annat sätt skulle vara att köra olika "lookups", men då blir det hela periodberoende. Bättre lösning etfterlyses.

                          Comment


                          • #28
                            Har sett att CFUB och CFLB kan låsas till värdet 0 i bland, i din variant skulle det lösas med att checka så att GetGvar 500 och 400 inte har värdet 0 på samma sätt du gör med GetGvar(600) för att låta skriptet spinna vidare... beror ju så klart på hur man använder signalerna.
                            AlgoPal - Emotionless Trading - Hyr ut våra trading algoritmer for Autostock via algopal.com

                            Comment


                            • #29
                              Borde fungera: Om värde = 0 sätt värde till respektive band.

                              Comment


                              • #30
                                perioder:=10
                                multiplier:=3

                                idag=or(eqv(int(date()),int(d)),1) {diagram 1 och 0 för simulering}
                                truerange=mx(mx(sub(h,l),abs(sub(h,aref(c,1)))),abs(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))
                                start=eqv(GetGvar(600),0)
                                seed=if(ge(HLA,ema(HLA,perioder)),BLB,BUB)

                                nyStapel=and(or(gt(d,GetGvar(700)),start),idag)
                                SetGvarIf(if(start,BUB,GetGvar(100)),400,nyStapel)
                                SetGvarIf(if(start,BLB,GetGvar(200)),500,nyStapel)
                                SetGvarIf(if(start,seed,GetGvar(300)),600,nyStapel)


                                CFUB=if(or(lt(BUB,GetGvar(400)),gt(aref(c,1),GetGvar(400))),BUB,GetGvar(400))
                                CFLB=if(or(gt(BLB,GetGvar(500)),lt(aref(c,1),GetGvar(500))),BLB,GetGvar(500))
                                CST=if(or(and(eqv(GetGvar(600),GetGvar(400)),lt(c,CFUB)),and(eqv(GetGvar(600),CFLB),lt(c,CFLB))),CFUB,CFLB)

                                SetGvarIf(CFUB,100,idag)
                                SetGvarIf(CFLB,200,idag)
                                SetGvarIf(CST,300,idag)
                                SetGvarIf(d,700,nyStapel)

                                draw(GetGvar(300),7,bqb)
                                and(0,0)

                                Har inte testat i bänken, men borda lösa nollvärden. Ni får jämföra med tidigare version(förutom värdena i början av indikatorn). För skarp körning och att den ännu inte har växt till sig går det att ta fram värdena i simulatorn och plugga in dem i cellerna kvällen innan. Sedan bör de fungera. Samma om man haft uppehåll. Vi får försöka hitta en bättre lösning som fungerar oberoende av start.

                                Edit: Rättelse i rött
                                Last edited by Henric; 2021-09-05, 20:32.

                                Comment

                                Working...
                                X