Allmänt meddelande

Collapse
No announcement yet.

ConnorsRSI

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

  • #16
    Scripta delkomponent 2 - RSIWS(Streak,2) - i ConnorsRSI(3,2,100)

    Dock noterade jag precis att LillWicke har skrivit följande högre upp i tråden "Enligt ovanstående dokument är RSI(Streak,2)=RSI(c,2)".

    Var någonstans i dokumentet står det explicit?
    Tacksam LillWicke om du kan förklara hur du har kommit fram till den slutsatsen?

    Tack//

    Comment


    • #17
      Här är lite vidareutvecklat, är inte helt hundra på om allt är korrekt:

      $par1:=3
      $par2:=2
      $par3:=100

      today=div(sub(c,aref(c,1)),aref(c,1))
      retval(today,2)
      antal=sum(lt(today,getval(2)),$par3)
      percent_rank=mult(div(antal,$par3),$par3)

      {Streak}
      streak_up=if(gt(c,aref(c,1)),topbars(lt(c,aref(c,1)),add($par2,1),1),0)
      streak_down=if(lt(c,aref(c,1)),sub(0,topbars(gt(c,aref(c,1)),add($par2,1),1)),0)
      streak_nr=add(streak_up,streak_down)

      {RSIWS scriptat för streak}
      a1=if(gt(streak_nr,aref(streak_nr,1)),sub(streak_nr,aref(streak_nr,1)),0)
      d1=if(lt(streak_nr,aref(streak_nr,1)),sub(aref(streak_nr,1),streak_nr),0)
      as1=ema(a1,period)
      ds1=ema(d1,period)
      comp2=sub(100,div(100,add(div(as1,ds1),1)))

      ConnorsRSI=div(add(add(RSIWS($par1),comp2),percent_rank),3)
      add(connorsrsi,0)


      RSI-formeln är scriptat för att kunna beräkna streak, men sen är frågan hur streak självt definieras. Får tex aldrig värden på Connors RSI över runt 60, så något verkar lite skumt.
      Attached Files

      Comment


      • #18
        Uppenbarligen är inte Rikards försök att scripta ConnorsRSI(3,2,100) hundra ännu då grafen fastnar vid värdet 60 på uppsidan vilket förstås inte är korrekt. Henrik och LillWicke tacksam om ni kan bidra med er script expertis för att se om ni kan hitta den felande pusselbiten i Rikards ovan script.

        Tack//
        Last edited by CALDERON; 2014-06-01, 14:56.

        Comment


        • #19
          Har sett din fråga CALDERON kollar igenom alltihop igen lite senare ikväll/natt. Det var ju ett tag sedan detta skrevs och tar ett tag att uppdatera sig. Numera finns även en loopfunktion att tillgå i NAT som kanske kan bli användbar.

          Comment


          • #20
            Låter bra LillWicke!
            Ser fram emot att du knäcker kodningen.
            Detta är en indikator som är mycket intressant och som fler än jag kan få nytta av.
            Du har har en detalj beskrivning i följande dokument - http://www.marketcalls.in/wp-content...-Guidebook.pdf - över hur man räknar fram de 3 delkomponenterna i ConnorsRSI(3,2,100):
            • RSIWS(Close,3)
            • RSIWS(Streak,2)
            • PercentRank(100)

            Tack//

            Comment


            • #21
              rank1U=ge(c,aref(c,1))
              rank1D=lt(c,aref(c,1))
              rank2U=hhvbars(rank1D,20)
              rank2D=hhvbars(rank1U,20)
              rank3U=if(rank1U,rank2U,0)
              rank3D=if(rank1D,rank2D,0)
              rsU=ema(rank3U,2)
              rsD=ema(rank3D,2)
              rsT1=div(rsU,rsD)
              rsT2=sub(100,div(100,add(1,rsT1)))

              pd1=div(sub(c,aref(c,1)),aref(c,1))
              SetGvarIf(pd1,104,1)
              pd2=sum(lt(pd1,GetGvar(104)),100)


              connor=div(add(add(rsiws(3),rsT2),pd2),3)
              {extra kolumner}
              SetGvarIf(rsiws(3),100,1)
              SetGvarIf(rsT2,101,1)
              SetGvarIf(pd2,102,1)
              SetGvarIf(connor,103,1)

              add(mov(connor,3,s),0)


              Jag har inte kollat om alla uträkningar stämmer med din önskan, men kanske en start.

              Comment


              • #22
                Nu ska vi se, fick lite annat att göra som tog lite längre tid än väntat.

                Henric har ju redan kommit med en alldeles utmärkt lösning som jag tycker vi kör på.
                Jag tar mig friheten att editera den lite grann främst ur ett pedagogiskt perspektiv.
                Han får väl hojta till om han inte samtycker.


                1) Lägger till några rubriker så att det blir lättare att följa.
                2) Lägger till period om man vill labba med detta.
                3) Lägger till ritning så att kurvan syns i analysområde A
                4) Lägger till en glömd rad.
                5) Editerar en rad så att division med 0 undviks vid fler dagar/perioder med samma stängningskurs.
                6) Editerar en rad till.
                7) Å en till.

                Koppla scriptet till ett diagram och testa.
                Scriptet är gjort så att det anpassar sig till den upplösning man väljer i diagrammet. (Orginalet ska köras i dagsupplösning)


                { Henric/Connors RSI }

                period:=100 {tillagd}

                {Streak 20 dagar}
                rank1U=gt(c,aref(c,1)) {editerad}
                rank1D=lt(c,aref(c,1))
                rank2U=hhvbars(rank1D,20)
                rank2D=hhvbars(rank1U,20)
                rank3U=if(rank1U,rank2U,0)
                rank3D=if(rank1D,rank2D,0.0001) {editerad}

                {RSI(Streak,2)}
                rsU=ema(rank3U,2)
                rsD=ema(rank3D,2)
                rsT1=div(rsU,rsD)
                rsistreak2=sub(100,div(100,add(1,rsT1)))

                {Percent Rank}
                pd1=div(sub(c,aref(c,1)),aref(c,1))
                SetGvarIf(pd1,104,1)
                pd2=sum(lt(pd1,GetGvar(104)),period)
                percentrank=mult(div(pd2,period),100) {glömd}

                ConnorsRSI=div(add(add(rsiws(3),rsistreak2),percentrank),3) {editerad}

                draw(ConnorsRSI,2,bsa)
                draw(99,3,rsaw)
                draw(1,4,rsaw)

                Mult(1,0)


                Last edited by LillWicke; 2014-06-05, 16:16.

                Comment


                • #23
                  Jag föreslår lite ändring så att scriptet passar direkt att lägga in som en custom toolknapp: (bytte också till vanlig "lokal" cell istället för att låsa upp en global.

                  { Henric/Connors RSI }

                  $par1:=100 {tillagd}

                  {Streak 20 dagar}
                  rank1U=gt(c,aref(c,1)) {editerad}
                  rank1D=lt(c,aref(c,1))
                  rank2U=hhvbars(rank1D,20)
                  rank2D=hhvbars(rank1U,20)
                  rank3U=if(rank1U,rank2U,0)
                  rank3D=if(rank1D,rank2D,0.0001) {editerad}

                  {RSI(Streak,2)}
                  rsU=ema(rank3U,2)
                  rsD=ema(rank3D,2)
                  rsT1=div(rsU,rsD)
                  rsistreak2=sub(100,div(100,add(1,rsT1)))

                  {Percent Rank}
                  pd1=div(sub(c,aref(c,1)),aref(c,1))
                  retval(pd1,4)
                  pd2=sum(lt(pd1,getval(4)),$par1)
                  percentrank=mult(div(pd2,$par1),100) {glömd}

                  ConnorsRSI=div(add(add(rsiws(3),rsistreak2),percentrank),3) {editerad}

                  draw(99,3,rsrw)
                  draw(1,4,rsrw)

                  Mult(1,ConnorsRSI)
                  Attached Files

                  Comment


                  • #24
                    Rikard, LillWicke, Henric snyggt jobbat!

                    Dock är det fortfarande en sak som gör mig brydd - vid test av ConnorsRSI på 5 sample aktier från OMXS30 - ATCO A, AZN, SEB A, NDA SEK, SAND
                    på DAGS upplösning så kommer ConnorsRSI aldrig över 90 som jag sätter som min gräns för en överköpt aktie
                    - mellan de datum som jag testar som sträcker sig från 2009 fram till idag. Faktum är att det ser ut som att ConnorsRSI aldrig går över 85 i mina 5 testscenarion.
                    Däremot dippar ConnorsRSI frekvent under 10 som jag sätter som min gräns för en översåld aktie.
                    Har ni några teorier om vad det kan bero på att ConnorsRSI inte en enda gång når över 90 i mina 5 testscenarion om vi nu förutsätter att er programmering är korrekt?

                    Tack//

                    Comment


                    • #25
                      Jag testade på NDA SEK och fick värden upp mot 95 enligt bifogad bild. Tror att det kanske behövs lite mer för att pressa upp (och även ner) Connors-varianten mot sina extremvärden eftersom flera komponenter ingår osv. Man får nog labba lite med gränsvärdena i sin tradingmodell.

                      Attached Files

                      Comment


                      • #26
                        Jag såg vad som var fel - ställbara parametervärdet $par1:=100 slår inte automatiskt igenom till den ställbara knappen utan man måste ändå manuellt gå in och ändra värdet i den ställbara knappen till 100 - då blir det slutligen korrekt.

                        Så med andra ord allt ser nu helt ok ut med ConnorsRSI värden över 90 och vi har "case closed".

                        Tack för hjälpen//

                        Comment


                        • #27
                          Kan man lägga in koden för indikatorn någon stans centralt så att man kan anropa funktionen i script på liknande sätt som detta. (dvs utanför själva Köp-scriptet)

                          värdePaConnors=ConnorsRSI(3,2,100)

                          Comment


                          • #28
                            Det går ju alltid att lägga scriptet separat och låta det skjuta in värdet i en global cell som du kan läsa av från vilket annat script som helst.


                            $par1:=100

                            {Streak 20 dagar}
                            rank1U=gt(c,aref(c,1))
                            rank1D=lt(c,aref(c,1))
                            rank2U=hhvbars(rank1D,20)
                            rank2D=hhvbars(rank1U,20)
                            rank3U=if(rank1U,rank2U,0)
                            rank3D=if(rank1D,rank2D,0.0001)

                            rsU=ema(rank3U,2)
                            rsD=ema(rank3D,2)
                            rsT1=div(rsU,rsD)
                            rsistreak2=sub(100,div(100,add(1,rsT1)))

                            pd1=div(sub(c,aref(c,1)),aref(c,1))
                            retval(pd1,4)
                            pd2=sum(lt(pd1,getval(4)),$par1)
                            percentrank=mult(div(pd2,$par1),100) {glömd}

                            ConnorsRSI=div(add(add(rsiws(3),rsistreak2),percentrank),3) {editerad}
                            setgvarif(connorsrsi,80,1)
                            and(0,0)




                            Därefter är det bara att läsa av värdet med:

                            getgvar(80)



                            Comment

                            Working...
                            X