Allmänt meddelande

Collapse
No announcement yet.

Lokal topp resp botten?

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

  • Lokal topp resp botten?

    Hej!

    Jag har en fråga runt kodning av lokala toppar resp bottnar. Så här vill jag definiera en lokal topp resp botten (i 5-minupplösning).

    En topp: stapel 1, 2, 4 och 5 har lägre högsta än stapel 3 (i mitten).
    En botten: stapel 1, 2, 4 och 5 har högre lägsta än stapel 3 (i mitten).

    Hur gör jag för att identifiera senaste topp resp botten, samt att rita aktuella nivåer?

    Då en ny topp eller botten identifierats, hur gör jag för att fastställa om denna är högre eller lägre än föregående topp resp botten?

    Vore tacksam för hjälp.

  • #2
    Härligt! Det går att fixa med lite tester med Aref() och därefter Find() för att testa mot föregående toppar osv.

    Definiera topp:
    höger2=lt(aref(h,1),aref(h,2))
    höger1=lt(h,aref(h,2))
    vänster4=lt(aref(h,3),aref(h,2))
    vänster5=lt(aref(h,4),aref(h,2))
    topp=and(and(höger2,höger1),and(vänster4,vänster5))
    draw(mult(topp,10),2,rsbf)
    kurs_första=find(topp,100,aref(h,2),1)
    kurs_förra=find(topp,100,aref(h,2),2)
    draw(kurs_första,3,bqb)
    draw(kurs_förra,4,rqb)
    mult(0,0)
    Attached Files

    Comment


    • #3
      Tack, nu har jag lite att jobba med. Jag hade tänkt mig att inte ta några övernattande positioner och inte heller "ärva" lokala toppar/bottnar från föregående dag. Vad är det enklaste för att inte ärva lokala toppar/bottnar, nollställa kurs_första och kurs_förra om klockan är mindre än 09.01? Samt att sedan bara ta position baserat på toppar/bottnar som är större än 0?

      Comment


      • #4
        Kolla om detta hjälper. Annars har kanske Rikard en bättre lösning.

        höger2=lt(aref(h,1),aref(h,2))
        höger1=lt(h,aref(h,2))
        vänster4=lt(aref(h,3),aref(h,2))
        vänster5=lt(aref(h,4),aref(h,2))
        topp=and(and(höger2,höger1),and(vänster4,vänster5))
        kurs_första=find(topp,100,aref(h,2),1)
        kurs_förra=find(topp,100,aref(h,2),2)
        förra_dag=find(topp,100,aref(d,4),2)
        högretopp=and(and(eqv(int(d),int(förra_dag)),gt(kurs_första,kurs_förra)),topp)
        draw(if(eqv(int(d),int(förra_dag)),kurs_första,0),2,yqb)
        draw(if(eqv(int(d),int(förra_dag)),kurs_förra,0),3,wqb)
        draw(mult(topp,12),4,rsbf)
        draw(mult(högretopp,10),5,ysbF)
        mult(0,0)

        Edit: Det beror på vad du menar med ärva. Om själva toppen skett dagen innan eller om första perioden i en topp tillhör gårdagen.
        Last edited by Henric; 2015-09-21, 20:14.

        Comment


        • #5
          Tack Henric, jag ska testa detta. Vad jag menar är att topp/botten räknas fram uteslutande från dagens staplar (alla fem staplarna). Jag tänkte kombinera detta med att hindra att position tas före kl 10.

          Comment


          • #6
            Henric, din kod fungerar nästan. Ofta missar den första toppen en eller de två första topparna på morgonen.
            Last edited by Christer; 2015-09-25, 07:37.

            Comment


            • #7
              Ge ett exempel, dag och upplösning?

              Comment


              • #8
                Ursprungligen postat av Henric Visa inlägg
                Ge ett exempel, dag och upplösning?
                Tack Henric och Rikard för att ni hjälper mig. Här är några exempel på missade lokala toppar:
                23 sept, ca kl 09.55 i 5-minupplösning
                24 sept, ca kl. 09.15 i 5-minupplösning
                25 sept, ca kl 09.20 i 5-minupplösning

                Det verkar ofta vara de tidiga topparna som missas! Eller rättare sagt toppen noteras, men "kurs_första" beräknas/ritas inte som den ska.

                Vad jag menar med att inte "ärva" är följande:
                - toppens alla fem staplar måste ligga på innevarande dag, dvs. fr.o.m. 09.00-stapeln
                - innan dagens första topp bildats ska "kurs_första" och "kurs_förra" vara 0, alltså inte ärva värdet från föregående dags sista topp
                Attached Files
                Last edited by Christer; 2015-09-27, 15:02.

                Comment


                • #9
                  Är det så här du vill definiera högre topp?

                  högretopp=and(and(gt(kurs_första,if(gt(int(d),int(förra_dag)),0,kurs_förra)),topp),eqv(int(d),aref(int(d),4)))

                  Comment


                  • #10
                    Hej Henric, egentligen så är det inte "högretopp" som spökar, utan det det faktum att första toppen missas. T.ex. toppen kl 09.15 den 24 september (se bilden i inlägg #8) identifieras, men kurvan "kurs_först" ritas inte upp. Prova gärna scriptet nedan. Ritar bara "kurs_första"-kurvan, men missar toppen t.ex. kl 09.15 den 24 september.


                    höger2=lt(aref(h,1),aref(h,2))
                    höger1=lt(h,aref(h,2))
                    vänster4=lt(aref(h,3),aref(h,2))
                    vänster5=lt(aref(h,4),aref(h,2))
                    topp=and(and(höger2,höger1),and(vänster4,vänster5))
                    kurs_första=find(topp,100,aref(h,2),1)
                    förra_dag=find(topp,100,aref(d,4),2)
                    draw(if(eqv(int(d),int(förra_dag)),kurs_första,0),2,drqb)
                    draw(mult(topp,12),4,rsbf)
                    mult(0,0)
                    Last edited by Christer; 2015-09-28, 22:00.

                    Comment


                    • #11
                      {bara ritningen för kurs_första som inte nollställs i ritning, men ser ut att träffa rätt som du vill}

                      höger2=lt(aref(h,1),aref(h,2))
                      höger1=lt(h,aref(h,2))
                      vänster4=lt(aref(h,3),aref(h,2))
                      vänster5=lt(aref(h,4),aref(h,2))
                      topp=and(and(and(höger2,höger1),and(vänster4,vänster5)),eqv(int(d),int(aref(d,4))))
                      kurs_första=find(topp,100,aref(h,2),1)
                      kurs_förra=find(topp,100,aref(h,2),2)
                      igår=gt(int(d),find(topp,100,int(aref(d,4)),2))
                      högretopp=and(gt(kurs_första,if(igår,0,kurs_förra)),topp)
                      draw(kurs_första,2,yqb)
                      draw(if(igår,0,kurs_förra),3,wqb)
                      draw(mult(topp,12),4,rsbf)
                      draw(mult(högretopp,10),5,ysbF)
                      mult(0,0)

                      Comment


                      • #12
                        Tack, det där ser ut att fungera! Endast då alla fem staplarna ligger på samma dag så gills toppen!

                        Jag ska försöka skruva in en tidskontroll så att kurvan nollställs kl 09.00.

                        Stort tack än en gång, Henric!

                        Comment


                        • #13
                          Men hur gör man för att returnera hur många perioder det är mellan topparna i exemplet?

                          Comment


                          • #14
                            tid_första=find(topp,100,d,1)
                            tid_förra=find(topp,100,d,2)
                            skillnad=sub(tid_förra,tid_första)

                            Comment

                            Working...
                            X