Allmänt meddelande

Collapse
No announcement yet.

problem med "find()"

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

  • problem med "find()"

    Prøver å kode et script til å ikke handle, dersom en gitt trigger har skjedd mollom 09:01 och 09:08. Har prøvd meg frem med denne koden:

    i1(
    klokken_melom_0901_og_0908=and(ge(frac(d),0.3757),le(frac(d),0.38055))
    kjop1=lt(c,mov(c,100,s))
    samme_dag=eqv(int(d),int(date()))
    trigger=and(and(klokken_melom_0901_og_0908,kjop1),samme_dag)
    utloser_har_hendt1=find(trigger,650,frac(d),2)
    utloser_har_hendt2=not(and(ge(utloser_har_hendt1,0.3757),le(utloser_har_hendt1,0.38055)))
    )

    Den kjøper, selv om jeg ser i "debug" at "utloser_har_hendt2" blir "0". Noen som kan fatte noen åpenbare feil?

  • #2
    Alla trigger skript jag har sett har avslutats med ett uttryck och inte en tilldelning. Testa att lägga till en sista rad i triggerskriptet som inte innehåller en tilldelning med "=" utan bara ett uttryck. T.ex

    "mult(utloser_har_hendt2,10)"

    Mvh,
    Anders

    Comment


    • #3
      Problemet är att du använder Date() i tidsvillkoren, det är systemklockan och inte databastid. Det gör det omöjligt för Find() att "hitta" tidpunkten historiskt.

      Så prova att byta ut Date() till D.

      Comment


      • #4
        "samme_dag"=eqv(int(d),int(date())) behöver inte vara med i find. Går att ha som villkor för handel längre ner i scriptet eller skippa helt om det är diagramritning.

        Comment


        • #5
          Kjørte scriptet idag uten "samme_dag" i "find" og med siste rad uten "=", men selv om det står "0" i debugen på "utloser_har_hendt2", så handler den i aksjen likevel. :/

          Et eksempel fra idag mår jeg kjørte med dette scriptet:
          i1(
          klokken_melom_0901_og_0908=and(ge(frac(d),0.3757),le(frac(d),0.38055))
          kjop1=lt(c,mov(c,100,s))
          trigger=aand(klokken_melom_0901_og_0908,kjop1)
          utloser_har_hendt1=find(trigger,650,frac(d),2)
          utloser_har_hendt2=not(and(ge(utloser_har_hendt1,0.3757),le(utloser_har_hendt1,0.38055)))
          samme_dag=eqv(int(d),int(date()))
          and(utloser_har_hendt2,samme_dag)
          )

          så får jeg dette i "debug":
          "utloser_har_hendt1= 0,03791666"
          "utloser_har_hendt2= 0"
          "samme_dag=1"

          men så har den handlet i aksjen. Det samme skjer, dersom jeg kjører scriptet i analysbanken...

          Comment


          • #6
            @rikard
            Hvor mener du jeg har feil i tidsvilkåret? Under "samme_dag"? eller briker jeg jo frac(d)?

            Comment


            • #7
              Inte helt med vad du vill göra. Du kanske vill kolla att kursen inte spiller över från gårdagen och feeden har kommit igång. Eftersom att date() inte ska fungera skulle jag leta upp gårdagens sista i 1 minut och kolla att kursen inte är den samma. Du frågade Rikard så jag lämnar frågan sist.

              Ursprungligen postat av slvpilen Visa inlägg
              @rikard
              Hvor mener du jeg har feil i tidsvilkåret? Under "samme_dag"? eller briker jeg jo frac(d)?

              Comment


              • #8
                Det jeg vil er å teste at "triggeren" ikke har hendt på morgenen (altså mellom 09:01 og 09:08).

                Comment


                • #9
                  Ursprungligen postat av slvpilen Visa inlägg
                  @rikard
                  Hvor mener du jeg har feil i tidsvilkåret? Under "samme_dag"? eller briker jeg jo frac(d)?
                  Alla ställen där Date() används som läses av Find() behöver du byta ut mot databastid D istället. Annars kan Find inte titta bakåt och få träff på senaste tillfället.

                  Comment


                  • #10
                    Ja ok. Prøver uten "samme_dag", selv om den ikke er i find. Det er den enste date() som er i scriptet (?).

                    Comment


                    • #11
                      När man analyserar i simulatorn och skarpt med 5 sek animering hanteras innevarande period för den senaste inkomna close, date(), etc. Find och andra funktioner som tittar bakåt kan bara läsa staplarnas utgående värde med tidsstämplen d. För tex 60 minuter hämtas värden var 60 minut och allt emellan ignoreras. För en minut en gång per minut, osv.

                      Jag vet inte riktigt vad du försöker göra med scriptet. Med find kan det ju bli så att kursen som hittas spiller över från dagen innan och och istället för eqv(int(d),int(date())) kan man se till att kursen inte är den samma som gårdagens sista intradag. Om det verkar rörigt. Hoppa över detta.

                      Comment


                      • #12
                        Jeg forstår meg ikke helt på find(). Jeg prøver å finne volymet mellom 09:05 og 09:15. Så jeg prøvde meg på dette scriptet:
                        i1(
                        kl0915=and(eqv(xtime(d,h),9),eqv(xtime(d,m),15))
                        volym_etter_opning1=find(kl0915,600,sum(mult(c,v),10),1)
                        )

                        Grafen jeg får går opp og ned, gjennom hele dagen, mens den egentlig bare skal finne volymet mellom 09:05 og 09:15.volym profil.PNG

                        Comment

                        Working...
                        X