Allmänt meddelande

Collapse
No announcement yet.

Antal perioder in på dagen

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

  • Antal perioder in på dagen

    Hallå!

    Håller på med ett script som skall göra olika saker ett antal perioder in på dagen.

    Använde koden härifrån

    http://www.autostock.se/vbulletin/ar...php?t-144.html

    Dock verkar det som setgvarif aldrig blir sann. Vad är fel?

    Tack på förhand!



    tittabakåt:=160 {Antal staplar in på en dag 160 3 min upplösning}
    omidag:=eqv(int(ref(d,1)),int(d))
    inpådagen:=sum(omidag,tittabakåt)

    titta_bak2:=5 {Håll koll på när det gått 15 min}

    i3(


    setgvarif(eqv(inpådagen,titta_bak2),21,o) {ok nu är vi vid femte stapeln spara open i cell 20}

    etc....

  • #2
    Såg precis felet testet är i slutet inte början (som i vanliga if)......

    ändrade till

    setgvarif(o,21,eqv(inpådagen,titta_bak2))

    men det fungerade inte heller?

    Tack på förhand!
    Last edited by Nungwe; 2018-10-18, 08:47.

    Comment


    • #3
      ge(mult(frac(date()),1440),555) =15 min in på dagen eller 9:15
      540=9:00
      570=9:30
      600=10:00
      osv...

      Comment


      • #4
        Tack för tipset. Verkar onekligen enklast.

        Antar att jag kan använd eqv för att få den att skriva vid exakta tidpunkten.

        Comment


        • #5
          Ursprungligen postat av Nungwe Visa inlägg
          Tack för tipset. Verkar onekligen enklast.

          Antar att jag kan använd eqv för att få den att skriva vid exakta tidpunkten.

          Japp, men skriv så här:
          tid1=eqv(int(mult(frac(d),1440)),660)
          så att villkoret blir sant under en hel minut. Annars är det inte säkert att 5 s scanningen träffar tidpunkten då villkoret är sant.
          mvh
          Bertil

          Comment


          • #6
            Jag tror inte d är så lyckat om upplösningen inte är i1.

            eqv(int(mult(frac(date()),1440)),555)

            ...eller...

            and(eqv(xtime(date(),h),9),eqv(xtime(date(),m),15))


            Oftast vill man trigga vid en exakt tidpunkt eftersom att stapeln precis är fullbordad och villkoren uppfyllda. Då räcker aref(signal,1)

            Comment


            • #7
              Hmm hur menar du med aref? (Aref tittar väl enbart tillbaka i en serie?)

              Om jag tex vill skriva värden till celler exakt efter säg 3, 15 och 30 min?


              eller menar du ungefär

              setgvarif(aref(1,O),20,and(eqv(mult(frac(date()),1440),tid1),samma_dag)) {Fånga först stapelns öppningskurs och skriv till 20}

              (testade precis ovan men det funkar inte, inte heller med and(eqv(xtime(date(),h),9),eqv(xtime(date(),m),15))
              )

              Tack på förhand
              Last edited by Nungwe; 2018-10-18, 14:18.

              Comment


              • #8
                FYI så har jag gjort så här. Se nedan

                Nedan fångar open (första stapeln), högsta, lägsta och close tom utgången av den tredje minuten.

                Tanken är att sedan lägga till i princip samma kod för 15 min och 30 min som skriver till andra globala variabler.

                Efter en halvtimme skall man kunna se vad hur börsöppningen såg ut efter 3, 15 och 30 min. Det är dock viktigt att den gör detta löpande. Det kommer finnas script som läser cellerna redan efter 10 min - 15 min beroende på.

                Det kanske finns ett enklare sätt?




                {Trend-indikator 181011}
                {Denna indikator förösker avgöra trenden efter 3, 15, 30 min}

                {Kör i tre min upplösning }
                {Skriver till ett antal celler}


                tid1:=542 {Håll koll på när det gått 2 min, egentligen 1 min men det måste gått över en extra för att titta på senaste}
                tid2:=544
                tid3:=555
                tid4:=570

                i1(

                samma_dag=eqv(int(d),int(date())) {Kolla att det är samma dag}
                setgvarif(O,20,and(le(mult(frac(date()),1440),tid1),samma_dag)) {Fånga först stapelns öppningskurs och skriv till 20}

                högsta=Getgvar(21)
                lägsta=GetgVar(22)
                lägsta=if(eqv(lägsta,0),L,lägsta) {Hantera när lägast är noll i början }

                högsta=if(gt(högsta,H),högsta,H) {Spara högsta värdet}
                lägsta=if(lt(lägsta,L),lägsta,L) {Spara lägsta värdet}

                setgvarif(högsta,21,and(le(mult(frac(date()),1440),tid2),samma_dag))
                setgvarif(lägsta,22,and(le(mult(frac(date()),1440),tid2),samma_dag))
                setgvarif(c,23,and(le(mult(frac(date()),1440),tid2),samma_dag))

                and(1,1)


                )

                Comment


                • #9
                  Om jag har förstått det rätt vill du ha dagens öppning, lägsta och högsta. Detta hittills efter 3,15 respektive 30 minuter. I så fall kan du använda 30 minuters upplösning eller 30 minuters upplösning som extraobjekt. Sedan läses värdena av när det ska och sparas i cellerna. Ny lägsta kan bara vara samma eller lägre. Samma princip för högsta. För att kolla att du är på dagens första 30min stapel kan följande användas:
                  gt(int(d),int(aref(d,1)))
                  Du kan även använda find om detta inte fungerar eller utveckla det du har gjort ovan.
                  Lycka till.

                  Comment


                  • #10
                    Hallå igen...använde nu istället extraobjekt vilket minskar koden betydligt men jag kan fortfarande inte köra eqv på tiden. Det funkar inte. Men det är ok.

                    {Trend-indikator 181011}
                    {Denna indikator försöker avgöra trenden efter 3, 15, 30 min}

                    {Kör i tre min upplösning }
                    {Skriver till ett antal celler}


                    tid1:=542 {Håll koll på när det gått 15 min}
                    tid2:=544
                    tid3:=555
                    tid4:=570

                    i3(

                    samma_dag=eqv(int(d),int(date())) {Kolla att det är samma dag}
                    setgvarif(Cmpref(O,0,A),20,1)



                    setgvarif(Cmpref(H,0,A),21,and(le(mult(frac(date()),1440),tid2),samma_dag))
                    setgvarif(Cmpref(L,0,A),22,and(le(mult(frac(date()),1440),tid2),samma_dag))
                    setgvarif(Cmpref(C,0,A),23,and(le(mult(frac(date()),1440),tid2),samma_dag))

                    and(1,1)


                    )

                    {@A(0,OMX Stock )}

                    Comment


                    • #11
                      kör du som Bertil beskrev ovan eller tex and(eqv(xtime(date(),h),9),eqv(xtime(date(),m),3))

                      Öppningskursen kan bli konstig i simulatorn om feeden inte kommer igång direkt. Jag har modifierat ett script som jag använder. Kanske går att göra enklare för ditt behov.

                      timme:=eqv(xtime(date(),h),9)
                      {tid1:=and(timme,eqv(xtime(date(),m),2))}
                      tid2:=and(timme,eqv(xtime(date(),m),3))
                      tid3:=and(timme,eqv(xtime(date(),m),15))
                      tid4:=and(timme,eqv(xtime(date(),m),30))

                      i1(

                      {öppningskurs}
                      SetGvarIf(c,18,gt(frac(date()),0.5))
                      FeedIgår=gt(int(date()),int(GetGvar(19)))
                      sättöppning=and(not(eqv(c,GetGvar(18))),FeedIgår)
                      setGvarIf(0,20,FeedIgår)
                      setGvarIf(0,21,FeedIgår)
                      setGvarIf(0,22,FeedIgår)
                      setGvarIf(0,23,FeedIgår)
                      SetGvarIf(c,20,sättöppning)
                      SetGvarIf(date(),19,sättöppning)


                      tidOK=and(or(or(or(sättöppning,tid2),tid3),tid4),eqv(int(date()),int(GetGvar(19))))
                      SetGvarIf(cmpref(h,0,a),21,tidOK)
                      SetGvarIf(cmpref(l,0,a),22,tidOK)
                      SetGvarIf(c,23,tidOK)

                      and(eqv(xtime(date(),h),9),le(xtime(date(),m),32))


                      )

                      {@A(0,)}

                      Comment


                      • #12
                        Tack för info.

                        Jag kör vidare med extraobjekt variant. Snackade lite med Rickard om öppningen i fm som kan vara lite si och så beroende på när feeden kommer igång

                        Comment


                        • #13
                          Jo, öppningskursen kan bli si och så beroende på när feeden börjar. Det finns ingen officiell öppningskurs. Däremot är det viktigt att gårdagens feed inte spiller över till nästa dag i simulatorn. Den lösningen finns i mitt script. Du måste även tänka på att nollställa eller på något sätt "reseta" de globala cellerna vid ny dag. Det har du säkert redan koll på.

                          Comment


                          • #14
                            Jag har också brottats med gårdagens stängningskurs och dagens öppningskurs.
                            Så här kan man göra om man inte önskar använda globala variabler.
                            Perioder01 är antal 1-minutersperioder in på handelsdagen som vi befinner oss i just nu.
                            igårclose01 är kursen INNAN slutcallen om man i inifilen? sagt att handelsdagen slutar kl 17.30 för aktuellt instrument (default). Terminen handlas åtminstone 15 minuter till under låg omsättning


                            perioder01=Sub(int(mult(frac(d),1440)),541)
                            igårclose01=aref(c,add(perioder01,6):600)
                            idagopen01=aref(c,add(perioder01,1):600)
                            diff03=sub(idagopen01,igårclose01)

                            Då man plottar kurvorna igårclose01 och idagopen01 så blir de lite hackiga, men det är sådana smällar som man får ta.

                            mvh
                            Bertil


                            Edit Man får INTE skriva perioder01=Sub(int(mult(frac(date()),1440)),541) för då blir det fel. Ser man lätt om man försöker att plotta och simulering ger andra resultat.

                            Edit2: Tillagt fetstil
                            Last edited by Bertil; 2020-03-10, 14:23.

                            Comment


                            • #15
                              Gör samma sak med en rad.

                              find(gt(int(d),int(aref(d,1))),520,aref(c,1),1)

                              Nu vill han bestämma en öppningskurs och att han sparar värden som inte spiller över från gårdagen. Det går även att flytta fram tiden, men då kan man missa väsentliga rörelser. Öppningskursen går bara att bestämma när ny feed har kommit in., men man vet inte när. I 1min upplösning kan man avgöra om kursen inte är den samma som igår eller om kursen inte är samma som föregående period. Vill man ha en lösning oberoende av upplösning är nog en cell föredra.

                              Comment

                              Working...
                              X