Allmänt meddelande

Collapse
No announcement yet.

Bollinger Band +antal staplar

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

  • Bollinger Band +antal staplar

    Hej!
    Efter att använt Frendly ett tag kan jag inte längre vara utan Bollinger Band som indikator.
    Vi skrev ett trevligt skript för ett tag sen som lyder:
    okbakåt:=2
    bkrossh:=GT(C,BolBands(25,2.0,U))
    bollnyss:=Hhv(bkrossh,okbakåt)
    closedn:=LT(L,Ref(c,1))
    bsignal:=And(bollnyss,closedn)

    Nu undrar jag om det är möjligt att skriva ett nytt skript baserat på ”bsignal!
    där vi räknar staplar tills det blir kontakt med undre bandet från det att signal givits i ”bsignal”
    Låt oss säga att efter signal på ”bsignal” tar det mindre än 7 staplar att nå undre bandet då vill vi ha en ny signal.
    Är det möjligt?

  • #2
    okbakåt:=2
    bkrossh:=GT(C,BolBands(25,2.0,U))
    bollnyss:=Hhv(bkrossh,okbakåt)
    closedn:=LT(L,Ref(c,1))
    bsignal:=And(bollnyss,closedn)

    En sak jag skulle vilja ändra på först är att testa med High istället för Close på övre bandet. Då får du signal som bättre efterliknar onlinesituationen när du får in kurser minut för minut. High lever ju hela tiden under en period online, och är ett minne för vad kursen varit uppe i någon gång i en period.

    tittabakåt:=50
    okbakåt:=2
    bkrossh:=GT(H,BolBands(25,2.0,U))
    bollnyss:=Hhv(bkrossh,okbakåt)
    closedn:=LT(L,Ref(c,1))
    bsignal:=And(bollnyss,closedn)
    bhighnyss:=hhvbars(bsignal,tittabakåt)
    blowsignal:=BolBands(25,2.0,B)
    blownyss:=HHvbars(blowsignal,tittabakåt)
    bdiffsignal:=sub(bhighnyss,blownyss)
    lt(bdiffsignal,7)

    Så det är bara att fortsätta samma princip med HhvBars() istället för att få reda på antalet perioder till en viss händelse.

    blowsignal:=BolBands(25,2.0,B)

    Denna raden visar ju på en färdig syntax för att få fram Buy-signal från Bollinger, dvs kors under bandet av en stapel.

    Sedan räknas skillnaden i staplar ut i bdiffsignal och slutligen en test om mindre än 7.

    Märk att 'tittabakåt' perioder är viktigt att du tar till tillräckligt stort värde för att få med signal av vardera slaget.

    Comment


    • #3
      Korrigering...

      Denna raden

      blowsignal:=BolBands(25,2.0,B)

      skall vara

      blowsignal:=BolBands(25,-2.0,X)

      för korrekt syntax.

      Korsning med X och ange -2.0 avvikelser för att testa på undre bandet.

      Comment


      • #4
        Tack Lasse,du är otrolig.
        Nu får jag lite och fundera på i helgen.

        Comment


        • #5
          Hej Lasse!
          Det är något skumt med skriptet, staplarna sitter inte där de ska.

          Resultatet blir en hel radda signaler lite var som helst istället för en signal om undre bandet hunnit korsats före det gått mindre än 7 staplar efter att övre bandet lämnat signal av ”bsignal”


          tittabakåt:=50
          okbakåt:=2
          bkrossh:=GT(H,BolBands(25,2.0,U))
          bollnyss:=Hhv(bkrossh,okbakåt)
          closedn:=LT(L,Ref(c,1))
          bsignal:=And(bollnyss,closedn)
          bhighnyss:=hhvbars(bsignal,tittabakåt)
          blowsignal:=BolBands(25,-2.0,x)
          blownyss:=HHvbars(blowsignal,tittabakåt)
          bdiffsignal:=sub(blownyss,bhighnyss)
          {här har jag provat att vända på subtraktionen}
          lt(bdiffsignal,7)



          Hhvbars = det antal perioder(staplar?) bakåt som har högsta värdet i dataserien d inom p perioder.
          #1”blowsignal” är det inte bara en korsnings punkt, kallas det för dataserie?
          #2Är det inte bara en stapel som kan ha det högsta värdet i en data serie?
          #3 50 perioder är det 50x 5 min=250min=4tim=den stapel som har högsta värdet på 4 tim om man har 5min upplösning?Jag förstår att det är fel tolkat.
          Många feltolkningar här säkert, men skriver jag inte som jag tänker förstår du ju inte hur du ska förklara.

          Comment


          • #6
            bolu:=BolBands(25,2.0,x)
            boll:=BolBands(25,-2.0,x)

            Att det ska vara så svårt att skripta vad jag tänker.
            Jag provar att tänka högt och ställer frågan.

            Bolu ger sant
            Boll ger sant om det inte gått mer än 7 staplar sedan Bolu gett sant.
            Signal

            Comment


            • #7
              Hhvbars = det antal perioder(staplar?) bakåt som har högsta värdet i dataserien d inom p perioder.

              Stämmer.

              #1”blowsignal” är det inte bara en korsnings punkt, kallas det för dataserie?

              Det är korsningspunkt ensamt, men det bildas en dataserie när behovet finns dvs då den ingår i en annan funktions som skall titta i en dataserie.

              HhvBars() i blownyss skall ju titta ett antal perioder bakåt, och då kommer blowsignal att leverera det till HhvBars().

              #2Är det inte bara en stapel som kan ha det högsta värdet i en data serie?

              Flera staplar kan iofs ha samma värde, men det första man träffar på bakåt i tiden är det som levereras från t.ex HhvBars().

              #3 50 perioder är det 50x 5 min=250min=4tim=den stapel som har högsta värdet på 4 tim om man har

              Stämmer, 4 timmar i marknaden då. Som jag nämnde tidigare så kan du behövs öka på bakåtvärdet för att säkert träffa på bollingersignal både upptill och nedtill i bandet. Det kanske krävs 500 perioder. Du får experimentera.

              bolu:=BolBands(25,2.0,x)
              boll:=BolBands(25,-2.0,x)


              Var och en av dessa ger sant (1.0) när korsning med respektive övre eller undre bandet.


              bakåt:=200
              bolu:=BolBands(25,2.0,x)
              boll:=BolBands(25,-2.0,x)
              bolunyss:=HhvBars(bolu,bakåt)
              bollnyss:=HhvBars(boll,bakåt)
              dif:=Sub(bolunyss,bollnyss)
              and(gt(dif,0),lt(dif,7))


              Här ser du på sista raden att jag utökat med en test både att större än noll i avstånd, men mindre än 7.

              I tidigare scriptet ändra sista raden till

              and(gt(bdiffsignal,0),lt(bdiffsignal,7))

              Det kan annars ge signal också när skillnanden ger negativt resultat.

              Comment


              • #8
                I min värd kan inte Lasse ha fel I dessa frågor. Skälv tycker jag ändå att jag är på rätt spår i att tänka skript fast det är krångligt.
                Därför provar jag en vända till i denna fråga för att jag om möjligt skall begripa vad skriptet gör.
                Skriptet jobbar inte som jag vill och jag klarar inte av att bena ut vad som är fel. Nu undrar jag om någon annan här har en annan uppfattning och i så fall kan tala om vad jag gör för fel.

                bhighnyss:=hhvbars(bsignal,tittabakåt)
                blownyss:=HHvbars(blowsignal,tittabakåt)

                #1 ”bsignal och blowsignal är varsina 1 signal. Att sätta hhvbars och söka 50 bars bakåt måste innebära att hhvbars letar efter en sådan signal bakåt tills den hittar en och mins hur många staplar det är däremellan?
                #2 Om det resonemanget håller skall det ju bli 7 staplar extra i ”blownyss” och där ge signal när kursen korsar undre bandet och det har skett inom 7 staplar,och annars inte ge signal alls?
                #3 and(gt(bdiffsignal,5),lt(bdiffsignal,7))
                om jag ändrar 0 till x så börjar skriptet räkna staplar från signal i”bsignal” som i och för sig är intressant, men skriptet verkar inte ha någon koll alls på ”blowsignal” som är det väsentliga för att signal skall ges?
                ”tjata,tjata”är allt jag kan.

                Comment


                • #9
                  #1: Stämmer

                  #2: Ja, avståndet till bhighnyss är fler perioder, eftersom blownyss är närmast i tiden.

                  #3: and(gt(bdiffsignal,5),lt(bdiffsignal,7))

                  Här har du ändrat så det måste vara exakt 6 staplar emellan, varken mer eller mindre.

                  Som jag förstod din önskan så ville du att det skulle vara träff i undre bandet någon gång inom 7 perioder dvs 0-7. Jag skrev dock mitt förslag

                  and(gt(bdiffsignal,0),lt(bdiffsignal,7))

                  För det är inte troligt att du får träff i samma period på båda, eller önskar det heller.


                  Några saker att se upp med

                  1. Kör du utan intradayprefix är det grafens upplösning som styr upplösningen i scriptet också.

                  Så fort du ändrar upplösning i grafen flir det alltså flaggor på helt andra ställen.

                  2. Om du kör kontrollkurva med bollinger som stöd för ögat när du utvärderar flaggorna, så tänk på att sätta antalet perioder till 25 osv som du har i scriptet.

                  3. Utvärdera en sak i taget.

                  Det grundläggande felet de flesta gör i början är att försöka göra för mycket på en gång.

                  a) Kolla t.ex på speciellt bollingerbiten ensamt och kontrollera var flaggorna kommer.

                  b) Öka på med din medelvärdestest för lutning om det ingår nu och se att du får flaggor där du förväntar dig.

                  c) Titta på undre bandets formel och studera den separat.

                  Du kan hela tiden använda samma script men du flyttar ner den aktiva koden i olika omgångar.

                  Exempel

                  tittabakåt:=50
                  okbakåt:=2
                  bkrossh:=BolBands(25,2.0,X)
                  bollnyss:=Hhv(bkrossh,okbakåt)
                  closedn:=LT(L,Ref(c,1))
                  bsignal:=And(bollnyss,closedn)
                  bhighnyss:=hhvbars(bsignal,tittabakåt)
                  blowsignal:=BolBands(25,2.0,X)
                  blownyss:=HHvbars(blowsignal,tittabakåt)
                  bdiffsignal:=sub(bhighnyss,blownyss)
                  And(gt(bdiffsignal,0),lt(bdiffsignal,7))

                  Ser nästan skrämmande ut först.

                  Men för att studera en korsning med övre bollinger ge sista raden ett namn som inte används

                  xx:=And(gt(bdiffsignal,0),lt(bdiffsignal,7))
                  bkrossh

                  och skriv sedan bkrossh som sista aktiva rad. Det gör att det enda som körs i detta scriptet är 'bkrossh' dvs bollingertesten mot övre bandet.

                  Hela scriptet ser då ut så här

                  tittabakåt:=50
                  okbakåt:=2
                  bkrossh:=BolBands(25,2.0,X)
                  bollnyss:=Hhv(bkrossh,okbakåt)
                  closedn:=LT(L,Ref(c,1))
                  bsignal:=And(bollnyss,closedn)
                  bhighnyss:=hhvbars(bsignal,tittabakåt)
                  blowsignal:=BolBands(25,2.0,X)
                  blownyss:=HHvbars(blowsignal,tittabakåt)
                  bdiffsignal:=sub(bhighnyss,blownyss)
                  xx:=And(gt(bdiffsignal,0),lt(bdiffsignal,7))
                  bkrossh

                  Den enda raden som inte har := är den som körs. Därför är det en aktiv rad som körs. De övriga raderna med := är enbart definitioner. De gör ingenting förrän man använder dem på en aktiv rad.

                  När du är klar med enbart bollingertesten så kanske du vill se hur kombinationen med lutande medelvärdet ser ut.

                  Ändra sista raden till 'bsignal' istället för bkrossh.

                  Hela scriptet där hela övre bandstesten görs:

                  tittabakåt:=50
                  okbakåt:=2
                  bkrossh:=BolBands(25,2.0,X)
                  bollnyss:=Hhv(bkrossh,okbakåt)
                  closedn:=LT(L,Ref(c,1))
                  bsignal:=And(bollnyss,closedn)
                  bhighnyss:=hhvbars(bsignal,tittabakåt)
                  blowsignal:=BolBands(25,2.0,X)
                  blownyss:=HHvbars(blowsignal,tittabakåt)
                  bdiffsignal:=sub(bhighnyss,blownyss)
                  xx:=And(gt(bdiffsignal,0),lt(bdiffsignal,7))
                  bsignal

                  Sedan för att testa enbart undre bandets test

                  ändra sista raden till 'blowsignal'.

                  hela scriptet som testar undre bara

                  tittabakåt:=50
                  okbakåt:=2
                  bkrossh:=BolBands(25,2.0,X)
                  bollnyss:=Hhv(bkrossh,okbakåt)
                  closedn:=LT(L,Ref(c,1))
                  bsignal:=And(bollnyss,closedn)
                  bhighnyss:=hhvbars(bsignal,tittabakåt)
                  blowsignal:=BolBands(25,2.0,X)
                  blownyss:=HHvbars(blowsignal,tittabakåt)
                  bdiffsignal:=sub(bhighnyss,blownyss)
                  xx:=And(gt(bdiffsignal,0),lt(bdiffsignal,7))
                  blowsignal

                  Ser det ok ut kanske det kan vara intressant att se på själva avståndet mellan signal i övre och undre som en kurva.

                  Ändra sista raden till

                  bdiffsignal

                  Utvärdera vad det är som händer. Man får alltså numeriska värden på hur många perioder det är mellan signaler i övre och undre. Det kan bli ramper och platåer osv.

                  Sedan återställs 'xx'-raden genom att bara skriva xx på sista raden istället för det som stod där innan.

                  På detta sättet kan du bena ut ett stort script och se var det ev. felar.

                  Comment


                  • #10
                    Tack Lasse!
                    Detta sätt att analysera öppnade oanade möjligheter för mej att tränga in i skriptens förtrollande värd av parametrar ,perioder och parenteser.

                    Comment

                    Working...
                    X