Allmänt meddelande

Collapse
No announcement yet.

Gårdagens stängingskurs???

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

  • Gårdagens stängingskurs???

    Jag använder följande script (se nedan) för att få stängningsdata på en aktie, genom att spara undan det "när det händer".
    Det som är synd, är att detta blockerar ett lokalt data som jag får spara med mig för varje loop/stapel och jag behöver använda lokala data (0 - 9) till annat.

    Finns det något sätt att ta fram gårdagens slutkurs direkt???? (Du får inte använda globala minnesreferenser/data)?
    Bakvägen hade det gått om jag kunde få fram data för "Diff" eller "Diff %" som redovisas i kurslistorna t.ex. "aktuell kurs/close" - "diff" = gårdagens stänging

    OBS: Jag har redan samtliga 3 extraobjekt upptagna, så jag kan inte använda dagskurser från gårdagen {@A(0,xxxx)} med Cmpref(c,0,A)... Vilket hade varit ett sätt...

    Så här gör jag nu vilket känns omständigt:
    ----------------------------------------------------
    {Slutkurser}
    GetSH:=17
    GetSM:=27
    GetSTime:=ADD(MULT(GetSH,60),GetSM)
    GetEH:=17
    GetEM:=28
    GetETime:=ADD(MULT(GetEH,60),GetEM)
    {Nuvarande tid}
    TimeNow:=MULT(frac(d),1440)

    I1(
    {Tar dagsstängning}
    nClosingTime=And(GE(TimeNow,GetSTime),LE(TimeNow,GetETime))
    nStoreOMX=retval(if(nClosingTime,nQuoteOMX,getval(2)),2)
    ...
    ...
    )
    ----------------------------------------------------
    nQuoteOMX är close på omxs30 och lokalt data 2 sparar undan detta
    Last edited by niclas_gbg; 2009-10-21, 21:53.
    NiclasGBG

  • #2
    Vilken nöt att knäcka!

    Men jag tror det går att få fram med tex Find-kommandot:

    stängning:=Lt(mult(sub(market(c),frac(d)),1440),2)
    slutkurs:=Find(stängning,100,c,1)

    Tar fram Close från den period då villkoret "stängning" var sant senast. Prova så får vi se om det stämmer.

    Comment


    • #3
      Fungerade perfekt... Sista pusselbiten återstår...

      Yes! Tack så mycket det fungerade

      Satte dock 1437 perioder tillbaka (inte 1440)... Kurshistoriken är ofta från kl. 09.02 - 17.29 (Kanske i extremfall kommer progammet att kolla på close två dagar innan). Jag blockar ändå handel fr. kl. 17.17

      OBS: Fattar inte hur detta funkar eftersom "LT/mindre än" returnerar sant eller falskt????

      Skriptet nedan fungerar:
      --------------------------------------------------
      stängning:=Lt(mult(sub(market(c),frac(d)),1440),2)
      slutkurs:=Find(stängning,1437,C,1)


      I1(
      {Visuellt}
      Mult(slutkurs,1)
      )

      ---------------------------------------------------


      Hur som helst nu har jag blivit av med 1 variabel, nu återstår 2 variabler som tar slutkurser från "EXTRA OBJEKT"...

      Hur gör jag med ett extra objekt som jag vill veta slutkursen på (på samma sätt som ovan)????
      NiclasGBG

      Comment


      • #4
        Var inte så svårt:
        -------------------------------------
        stängning:=Lt(mult(sub(market(c),frac(d)),1440),2)
        kurs:=cmpref(c,0,A)
        slutkurs:=Find(stängning,1437,kurs,1)


        I1(
        Mult(slutkurs,1)
        )



        {@A(1,AktieXXX )}
        -------------------------------------

        Fast är ändå intresserad av hur detta kan funka med "LT" som bara returnerar sant eller falskt???

        Är mycket glad att det funkar....
        NiclasGBG

        Comment


        • #5
          Jag överstiger stacken...

          Eftersom jag ska göra detta med 2-3 extra objekt, så blir det alltid 3 st. "find" och AT krashar. Jag ser när jag kör bara 2 st. så börjar tar stacken nästan slut (50000 anrop)...

          Har provat på minst 100 olika sätt nu (kanske inte riktigt) med resultat att AT krashar....

          Finns det någon annan workaround???

          Finns det inget sätt att läsa ut "diff" eftersom detta står i listan på varje aktie??????

          Med "diff" så vet jag slutkurs...
          NiclasGBG

          Comment


          • #6
            Löst

            Så här blev det för den intresserade:
            Med totalt 4 olika aktier. Fuskade och satte 08.57 istället för att räkna med 17.27, Perioderna stämmer ändå...

            ----------------------------------
            {Startkurs}
            GetClH:=08
            GetClM:=57
            nStTime:=ADD(MULT(GetClH,60),GetClM)
            {Nuvarande tid}
            nNowTime:=MULT(frac(d),1440)
            nPeriod:=Sub(nNowTime,nStTime)
            {Kurser slut}
            nClose1:=aref(C,nPeriod)
            nClose2:=CmpRef(C,nPeriod,A)
            nClose3:=CmpRef(C,nPeriod,B)
            nClose4:=CmpRef(C,nPeriod,C)

            I1(
            draw(nClose2,2,gqb)
            draw(nClose3,3,rqb)
            draw(nClose4,4,bqb)
            Mult(nClose1,1)
            )



            {@A(1,Aktie1 )@B(1,Aktie2 )@C(1,Aktie3 )}
            -------------------------------------------
            NiclasGBG

            Comment


            • #7
              Ursprungligen postat av niclas_gbg Visa inlägg
              Eftersom jag ska göra detta med 2-3 extra objekt, så blir det alltid 3 st. "find" och AT krashar. Jag ser när jag kör bara 2 st. så börjar tar stacken nästan slut (50000 anrop)...

              Har provat på minst 100 olika sätt nu (kanske inte riktigt) med resultat att AT krashar....

              Finns det någon annan workaround???

              Finns det inget sätt att läsa ut "diff" eftersom detta står i listan på varje aktie??????

              Med "diff" så vet jag slutkurs...

              Flytta ner en del kod innanför intraday-prefixet och gör om dem till minnesreferenser (ta bort kolon) så blir det lättare att exekvera. Om stacken är farligt nära att ta slut kan man ställa upp det reserverade utrymmet i Inställningar > Preferenser > Övrigt

              Comment

              Working...
              X