Allmänt meddelande

Collapse
No announcement yet.

Nybörjarhjälp till script

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

  • Nybörjarhjälp till script

    Ok, då tänkte jag ge mig på mitt andra script och den här gången ska jag försöka sätta ihop det lite mer själv istället för att få allt serverat av Rikard. Det blir proffsigt och det är skönt men man lär sig inte så mycket på det. Men jag kommer behöva mycket hjälp ändå eftersom jag är nybörjare. Jag uppskattar förklaringar till varför och hur det funkar osv. Bra med kommentarer! Vi tar det lite steg för steg:

    Jag har börjat med att jag vill testa ny low inom x bars. Är detta en bra lösning på det?

    LT(LLVBARS(L,x),1)

    Jag vill också kunna testa motsatsen att jag inte fått low inom x bars. Kan man då använda samma funktion men testa om ovanstående är falskt?
    "Nothing noble is done without risk." - André Gide

  • #2
    Härligt med "script-hungriga" AT-användare!

    Om jag förstår rätt så vill du alltså testa om det kommit en ny lägre Low inom x staplar bakåt? Alltså om nuvarande Low är lägre än samtliga Low under de senaste x staplarna bakåt?

    Comment


    • #3
      Ja helt korrekt!

      Dessutom vill jag som en annan del av scriptet kolla att det INTE blivit ny low under x bars. Det borde väl bara vara att kolla att ett liknande villkor är falskt eller hur?
      "Nothing noble is done without risk." - André Gide

      Comment


      • #4
        Exemplet du skrivit borde fungera fint. LlvBars(L,x) returnerar vilken period bakåt som har lägsta värdet i dataserien L inom x perioder bakåt. Ut kommer alltså numret på stapeln som har lägsta värdet i L. Om det numret är mindre än 1 borde det ju vara i innevarande period, så det är helt rätt tänkt.

        Bara att prova!


        test:=LT(LLVBARS(L,6),1)
        Mult(test,20)

        Scriptet ritar en 20% hög flagga om Low i innevarande period är lägre än alla Low 6 staplar bakåt.
        Attached Files

        Comment


        • #5
          Är Mult endast för att få en 20%-ig flagga eller har den någon annan funktion?

          Jag vill testa ny low enligt ovan och efter det vill jag inte ha ny low under x perioder.

          För att testa att det INTE blivit ny low kan jag använda GT(LLVBARS(L,x),1) då eller finns det något bättre sätt?

          Om jag kombinerar dessa två blir det ju tokigt eftersom det aldrig kan bli uppfyllt. Hur testar jag de olika villkoren på olika perioder. Ex. villkor1 testas under period 1-5 och är uppfyllt under period 5 och då ska villkor2 uppfyllas under period 6-8?
          "Nothing noble is done without risk." - André Gide

          Comment


          • #6
            Det stämmer, Mult är en multiplikation för att få tex 20% rithöjd på flagga. Utsignalen från scriptet är ju egentligen bara SANT eller FALSKT eller 1 -0 och med multiplikationen blir det 0 eller 20 istället.

            Det går att använda GT(LLVBARS(L,x),1) för att testa att nuvarande period inte är en ny Low. En annan variant är Gt(L,Aref(L,1)) som jämför nuvarande Low med föregående periods Low. Det blir sant så länge Low är högre nu än förra perioden.

            Jag är inte riktigt med på hur du vill testa period 6-8? Menar du att Low senaste 3 perioderna ska vara högre än Low perioderna 3-8 bakåt?

            Comment


            • #7
              Svårt att överföra ens tankar ibland! Sådant som låter självklart i ens eget huvud blir nonsens när man ska förklara...

              Jag vill testa om jag fått en ny low inom en viss period. Om det inträffar vill jag efter detta att det INTE ska inträffa någon ny low. Se bifogad bild.

              Jag har ett villkor för båda men jag behöver ha hjälp med att få till detta med att det ska testas under olika tidsperioder och inte bara de senaste perioderna eftersom det aldrig kan bli sant.


              Vart det klarare nu?
              Attached Files
              Last edited by SalK; 2009-03-14, 09:25.
              "Nothing noble is done without risk." - André Gide

              Comment


              • #8
                Någon som kan hjälpa mig lite på traven?
                Last edited by SalK; 2009-03-14, 12:26.
                "Nothing noble is done without risk." - André Gide

                Comment


                • #9
                  Det jag söker är lite likt Hong Kong Olas punkt 1 och 2 nedan faktiskt.

                  Ursprungligen postat av Hong Kong Ola Visa inlägg
                  Tar ett ex med siffror, känner mig lite osäker på om jag var tydlig när jag ställde förra frågan för jag får inte riktigt ihop det.


                  1 inträffar den dag ett nytt High bildas jmf med de 9 föregående dagarna dvs sista dagen i 10 dagars perioden bildar ett nytt High. Exvis100:-
                  Efter detta trendar priset ner för att sedan börja återhämta sig

                  2 inträffar TIDIGAST 8 dagar efter att 1 bildats genom att den dagen testas High från 1 Ex vis genom ett nytt High på 101:- bildas

                  3 (dagen efter 2) skall Close bli under High från 1(100:-) Exvis C=99:-

                  4 (dagen efter 3) uppstår sälj om det handlas under Low för dag 3

                  Väntar med övriga villkor för 2 så blir det enklare o tydligare
                  "Nothing noble is done without risk." - André Gide

                  Comment


                  • #10
                    Man kan testa om nytt High finns inom de senaste 8 staplarna tex:

                    hibakåt:=Hhv(Aref(h,1),8)

                    som kollar högsta värdet på H från förra perioden och 8 perioder bakåt.

                    Näste rad:

                    högrenu:=Gt(h,hibakåt)

                    kollar om H i nuvarande period är högre än hibakåt, dvs det högsta värdet på H från förra stapeln och 8 perioder bakåt.

                    Om det är sant blir högrenu sant.


                    Om man därefter vill testa om något är sant minst x perioder framåt kan man tex göra så här:

                    sant:=Llv(högrenu,5)

                    som blir sant när det gått minst 5 staplar sedan högrenu var sant senast.


                    På det viset kan man pussla ihop villkor för att nå dit man vill.

                    Men ett konkret exempel skulle sitta fint, gärna en screenshot från en typisk situation så kan vi nog reda ut det.

                    Comment


                    • #11
                      Jag vill hitta en ny low, rekyl upp efter det!

                      På bilden noteras en ny low inom x perioder. Efter att det skett noteras ingen ny low inom x perioder. Det är detta jag vill programmera. Vad är det som är så svårt att förstå?

                      Jag har hittat två villkor som jag kan använda:

                      villkor1:=LT(LLVBARS(L,2),1)
                      villkor2:=GT(LLVBARS(L,2),1)

                      Men jag har problem med perioderna... Första ska ju villkor 1 uppfyllas och sedan villkor 2.
                      Attached Files
                      "Nothing noble is done without risk." - André Gide

                      Comment


                      • #12
                        Jo precis, man får först leta efter den nya botten. Det villkoret får lagras i x antal perioder för att kunna testa mot rekyl. Då vill du alltså ha SANT från scriptet i sin helhet när en ny botten konstaterats med efterföljande rekyl?


                        botten:=Lt(LlvBars(L,2),1)
                        lagra:=Hhv(botten,5) {lagra i 5 perioder}
                        rekyl:=Llv(Gt(l,Aref(l,1)),3) {kolla så att L är stigande minst 3 senaste perioder}
                        signal:=And(rekyl,lagra)
                        Mult(signal,20)

                        Det här kollar så att de 3 senaste perioderna har stigande L i villkor "rekyl". Dessutom kollas att det funnits ny Low någon gång inom de senaste 5 perioderna. Om båda villkoren är sanna blir hela scriptet sant.
                        Attached Files

                        Comment


                        • #13
                          Tack för hjälpen!

                          Jag försökte mig på nästa steg själv men det verkar inte som om jag fått det rätt.

                          Tanken är att efter steg 1 och 2 ska det bli ny low. Alltså den gamla low nivån ska brytas men inte förrän upprekylen är avklarad. Kolla i koden nedan och se vad jag gjort för fel. Ny low under x1 perioder, rekyl under x2 perioder och sedan ny low av x1+x2 perioder.

                          low1:=Lt(LlvBars(L,5),1) {testa ny low}
                          lagra:=Hhv(low1,10) {lagra i x perioder}

                          rekyl:=Llv(Gt(l,Aref(l,1)),4) {kolla så att L är stigande minst x senaste perioder}
                          lagra2:=Hhv(rekyl,5) {lagra i x perioder}

                          low2:=Lt(LlvBars(L,10),1) {testa ny low}

                          signal:=And(And(lagra,lagra2)low2)
                          Mult(signal,20)

                          Tack på förhand!
                          "Nothing noble is done without risk." - André Gide

                          Comment


                          • #14
                            Ett par missar hittar jag, men frågan är om scriptet gör det du vill. Raden low2 testar ju för ny Low jämfört med lägsta Low 10 perioder bakåt, vilket blir sant väldigt sällan eftersom det inte är den lägsta nivån som low1 testade mot. Jag skulle föreslå att man ändrar 10:an till samma antal perioder som används i villkoret "rekyl".

                            Det går också att ta fram nivån för Low som var när low1 blev sant med Find-kommandot. Det värdet kan man använda för test med low2 senare. Men om det ändå är så här du tänkt så kan vi ju åtminstone göra det här scriptet klart:


                            low1:=Lt(LlvBars(L,5),1) {testa ny low}
                            lagra:=Hhv(low1,10) {lagra i x perioder} (lagra är delnamn av lagra2 senare)

                            rekyl:=Llv(Gt(l,Aref(l,1)),4) {kolla så att L är stigande minst x senaste perioder}
                            lagra2:=Hhv(rekyl,5) {lagra i x perioder}

                            low2:=Lt(LlvBars(L,10),1) {testa ny low}

                            signal:=And(And(lagra,lagra2)low2) (här fattas ett komma)
                            Mult(signal,20)



                            Rättat blir det:

                            low1:=Lt(LlvBars(L,3),1) {testa ny low - minst 3 staplar med fallande Low}
                            lagra1:=Hhv(low1,10) {lagra i 10 perioder}

                            rekyl:=Llv(Gt(l,Aref(l,1)),2) {kolla så att L är stigande minst 2 senaste perioderna}
                            lagra2:=Hhv(rekyl,8) {lagra i 8 perioder}

                            low2:=Lt(LlvBars(L,8),1) {testa ny low jämfört med 8 senaste staplarna}

                            signal:=And(And(lagra1,lagra2),low2)
                            Mult(signal,20)

                            Comment


                            • #15
                              Tanken är precis som du uppfattat att använda low från low 1, visste bara inte hur man skulle göra. Så hjälp mig gärna ta fram det med find.
                              "Nothing noble is done without risk." - André Gide

                              Comment

                              Working...
                              X