Allmänt meddelande

Collapse
No announcement yet.

Dagens högsta med extraobjekt

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

  • Dagens högsta med extraobjekt

    Hej,
    jobbar i ett certifikat på minutnivå, certifikatet har OMX som underliggande papper. Jag vill hämta nuvarande dagshögsta från OMX.
    För att testa detta så jobbar jag i OMX med OMX som extraobjekt.

    När jag ritar ut H från dags-extraobjektet för OMX så ritas ett rakt streck med den slutgiltiga högsta kursen från dagen.

    Är detta något som blir bara i grafen?
    Skall inte "Animera dagskurser" fixa detta?

    Så för att komma runt detta använde jag mig av HHVBARS och HHV för att leta det högsta värdet bakåt.

    Exempelscript:
    i1(
    DH0=cmpref(H,0,A)
    1mH0=cmpref(H,0,B)

    draw(DH0,2,kqb)

    firstPeriod=not(eqv(int(d),aref(int(d),1)))
    periods=hhvbars(firstPeriod,510)
    highest=hhv(1mH0,periods:510)
    draw(highest,3,rqb)

    add(0,0)
    )

    {@A(0,OMX Stock )@B(1,OMX Stock )}


    Observera att jag var tvungen att använda mig av ":510" i hhv uttrycket. Om jag inte gjorde det så ritades bara högsta värdet för de sju första staplarna ut. Gissar att det har med minnestilldelning till stacken i kompilatorn, kom ihåg något inlägg om detta - och det fungerar.

    Men märker att det blir väldigt segt - och kan förstå varför eftersom scriptet letar 510 perioder tillbaka varje gång. Känns ju helt fel.

    Men kan inte förstå varför inte H i extraobjektet på dagnivå uppdateras kontinuerligt. Eller gör det det - och det är bara i grafen som det inte syns?

    Om detta inte fungerar så får man väl göra en global variabel som sätts till H för första perioden och sedan uppdateras kontinuerligt, men känns ju också lite B

    Tacksam för hjälp!

  • #2
    Det är bara i grafen som ritningen ställer till det. När man kör högupplösta script som 1 min och så i kombination med extra objekt i EOD-upplösning är det inte alltid som ritningen klarar av det. Scriptet har dock rätt värde. Du kan testa det genom att rita ut något annat villkor som testar om dagshögsta har tangerats eller liknande.

    Comment


    • #3
      Tack för svar, nej det fungerar inte att rita ut något annat villkor. Det villkoret är bara sant vid ett tillfälle - då periodens högsta är samma som dags-extraobjektets högsta:

      draw(mult(50,eqv(1mH0,DH0)),3,rsaF)

      Comment


      • #4
        Stämmer det Rikard? Och isåfall hur långt in på dagen behöver man vänta för att vara säker på att det inte är gårdagens högsta du får? Jag jobbar en del med formationer och även dagshögsta/dagslägsta samt även högsta och lägsta värdet sedan entry. Jag har gett upp att använda H,L,O

        Denna använder jag för att sedan kunna kolla gårdagens högsta
        SETGvarIF(c,134,and(le(mult(1440,sub(market(c),frac(date()))),5),ge(mult(1440,sub(market(c),frac(date()))),sub(5,1))))

        och denna för att sätta dagens
        dagshögsta=IF(ge(frac(date()),0.37510),IF(gt(c,GetGvar(400)),c,GetGvar(400)),0)
        SETGvarIF(dagshögsta,400,1)

        Klart enklare att kunna använda extraobjekt i dagsupplösning.

        /Erik

        Comment


        • #5
          Jag använder ofta cmpref(H,0,a)
          {@A(0,)}
          utan några problem. Vill man rita ut kan man använda nedanstående script

          i1(
          perioder01=Sub(int(mult(frac(d),1440)),550)
          dagshögstahitintills=HHV(H,perioder01:600)
          Draw(dagshögstahitintills,2,gqb0)
          mult(0,1)
          )

          Med vänlig hälsning
          Bertil

          Comment


          • #6
            Ursprungligen postat av matsarvendal Visa inlägg
            Tack för svar, nej det fungerar inte att rita ut något annat villkor. Det villkoret är bara sant vid ett tillfälle - då periodens högsta är samma som dags-extraobjektets högsta:

            draw(mult(50,eqv(1mH0,DH0)),3,rsaF)
            Men om du testar mot objektet förskjutet 1 steg så att du får gårdagens högsta tex, så är det enklare att testa mot något villkor. Ett annat sätt är att minska upplösningen, tex i60() så bör du få utritat mer av extra objektet.



            Ursprungligen postat av e-Rik Visa inlägg
            Stämmer det Rikard? Och isåfall hur långt in på dagen behöver man vänta för att vara säker på att det inte är gårdagens högsta du får? Jag jobbar en del med formationer och även dagshögsta/dagslägsta samt även högsta och lägsta värdet sedan entry. Jag har gett upp att använda H,L,O

            Denna använder jag för att sedan kunna kolla gårdagens högsta
            SETGvarIF(c,134,and(le(mult(1440,sub(market(c),frac(date()))),5),ge(mult(1440,sub(market(c),frac(date()))),sub(5,1))))

            och denna för att sätta dagens
            dagshögsta=IF(ge(frac(date()),0.37510),IF(gt(c,GetGvar(400)),c,GetGvar(400)),0)
            SETGvarIF(dagshögsta,400,1)

            Klart enklare att kunna använda extraobjekt i dagsupplösning.

            /Erik

            Enklare? Hehe, ja vi har ju olika uppfattning. Gårdagens högsta kan man skriva:

            high_igår=cmpref(h,1,a)

            För att testa att databastid och systemtid är på samma dag brukar jag använda:

            tid_ok=eqv(int(d),int(date()))



            Om tid_ok är sant ska alla andra databaser också visa rätt dag.

            Comment


            • #7
              Ursprungligen postat av Rikard Nilsson Visa inlägg
              Enklare? Hehe, ja vi har ju olika uppfattning. Gårdagens högsta kan man skriva:

              high_igår=cmpref(h,1,a)

              För att testa att databastid och systemtid är på samma dag brukar jag använda:

              tid_ok=eqv(int(d),int(date()))



              Om tid_ok är sant ska alla andra databaser också visa rätt dag.

              Ok?, Så om man enbart tar hänsyn till high_igår ifall tid_ok är sant så får man aldrig fel? Har gjort massor simuleringar som gett mig konstiga värden och felaktiga formationer av att jag använt open, high och low. Close funkar nog typ alltid. Dessutom har jag problem med att om jag gör en affär för tidigt på morgonen så händer det i simuleringen att jag får gårdagens stängningskurs som pris vilket ibland påverkar resultatet ganska mycket.

              /Erik

              Comment


              • #8
                Ursprungligen postat av e-Rik Visa inlägg
                Ok?, Så om man enbart tar hänsyn till high_igår ifall tid_ok är sant så får man aldrig fel? Har gjort massor simuleringar som gett mig konstiga värden och felaktiga formationer av att jag använt open, high och low. Close funkar nog typ alltid. Dessutom har jag problem med att om jag gör en affär för tidigt på morgonen så händer det i simuleringen att jag får gårdagens stängningskurs som pris vilket ibland påverkar resultatet ganska mycket.

                /Erik
                Innan dagens första skarpa avslutet skett så anges gårdagens Close som aktuellt Close. Om man köper mot aktuell säljkurs slipper man det problemet.

                Med vänlig hälsning
                Bertil

                Comment


                • #9
                  Ursprungligen postat av Bertil Visa inlägg
                  Innan dagens första skarpa avslutet skett så anges gårdagens Close som aktuellt Close. Om man köper mot aktuell säljkurs slipper man det problemet.

                  Med vänlig hälsning
                  Bertil
                  Smart, tack!

                  Comment


                  • #10
                    Ursprungligen postat av Rikard Nilsson Visa inlägg
                    Men om du testar mot objektet förskjutet 1 steg så att du får gårdagens högsta tex, så är det enklare att testa mot något villkor. Ett annat sätt är att minska upplösningen, tex i60() så bör du få utritat mer av extra objektet.
                    Hej,
                    förstår inte vad du menar här. Jag vill ju kontrollera dagens 1-minuts staplar, det har inget med gårdagens att göra. Dessutom vill jag köra på 1-minut och inte på 60-minuter.

                    Men finns det en begränsning i mjukvaran som gör att extraobjektet på dagnivå inte uppdateras förrän dagen är slut?
                    För den varianten som Bertil t.ex. föreslår är ju en loop som körs varenda gång som scriptet exekveras. Jag märker direkt i scriptet att det blir rejält mkt segare.
                    Om det nu inte går, så borde väl en setgvarif-sats vara mer effektiv, dvs sätta den till dagens första high på 1-minutsnivå, sedan kolla mot varje high om denna blir högre. Typ som E-Rik gör?

                    Comment


                    • #11
                      Följdfråga på detta finns här:
                      http://www.autostock.se/vbulletin/sh...9&postcount=54

                      Hela denna tråden behandlar problemet med intradags H,L,O.

                      Comment


                      • #12
                        Ursprungligen postat av matsarvendal Visa inlägg
                        Hej,
                        förstår inte vad du menar här. Jag vill ju kontrollera dagens 1-minuts staplar, det har inget med gårdagens att göra. Dessutom vill jag köra på 1-minut och inte på 60-minuter.

                        Men finns det en begränsning i mjukvaran som gör att extraobjektet på dagnivå inte uppdateras förrän dagen är slut?
                        För den varianten som Bertil t.ex. föreslår är ju en loop som körs varenda gång som scriptet exekveras. Jag märker direkt i scriptet att det blir rejält mkt segare.
                        Om det nu inte går, så borde väl en setgvarif-sats vara mer effektiv, dvs sätta den till dagens första high på 1-minutsnivå, sedan kolla mot varje high om denna blir högre. Typ som E-Rik gör?
                        Nja, jag tänkte mest för att kunna rita ut och verifiera att scripten verkligen har rätt info om EOD-datat.

                        Extra objekt i dagsupplösning uppdateras i realtid.

                        Visst kan du använda en cell om du bara är ute efter momentanvärde, det blir ju ingen dataserie av en cell. Jag brukar rekommendera att undvika globala celler så långt det är möjligt. De har sin plats i vissa fall där script behöver "prata med varandra" etc, men i de flesta fall är det enklare att använda dataserie.

                        Comment


                        • #13
                          Ursprungligen postat av Rikard Nilsson Visa inlägg
                          För att testa att databastid och systemtid är på samma dag brukar jag använda:

                          tid_ok=eqv(int(d),int(date()))


                          Om tid_ok är sant ska alla andra databaser också visa rätt dag.

                          Om det resonemanget stämmer så skulle ju detta fungera för att lagra dagens öppning(nästan iaf), eller??

                          SETGvarIF(0,129,lt(frac(date()),0.3751))
                          SETGvarIF(c,129,AND(eqv(GETGvar(129),0),AND(eqv(int(d),int(date())),AND(gt(frac(date()),0.3751),lt(frac(date()),0.3756)))))

                          Får inte detta att fungera. Kan det vara så att vissa saker fungerar i skarpt läge men inte i Analyzern?

                          Comment


                          • #14
                            Hm, men är skrivs ju bara nytt värde om värdet i cellen är lika med noll. Ser ut som logikfel:

                            SETGvarIF(c,129,AND(eqv(GETGvar(129),0),AND(eqv(int(d),int(date())),AND(gt(frac(date()),0.3751),lt(frac(date()),0.3756)))))


                            PS. Ah, ser hur du menar nu. Man skriver bara första värdet, och låter därefter bli. Hur är du säker på att det inte funkar?

                            Comment


                            • #15
                              Vi har diskuterat detta tidigare. Om feeden inte kommit igång så fyller AT på med gårdagens kurs(eller så fort feeden är nere används senaste insamling). Det kanske är bättre att kolla om close inte är samma som igår och sedan spara, även om detta inte heller blir helt korrekt.

                              Comment

                              Working...
                              X