Allmänt meddelande

Collapse
No announcement yet.

Tidsfönster för handel

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

  • Tidsfönster för handel

    Hej,

    jag har skapat nedan 'tidsfönster' i grönt som bara tillåter att affär tas mellan 10:00 och 17:00 - vilket fungerar felfritt när börsens öppetider är 09:00-17:30:

    efter10=gt(frac(date()),0.4167)
    innan17=lt(frac(date()),0.7118)
    tidsfönster=and(efter10,innan17)
    xsig5=and(aref(xsig6,1),tidsfönster)


    Dock när jag simulerar i Analysbänken på OMXS30 data före oktober 2004 då börsen öppnade först 09:30 och inte 09:00 som idag så funkar
    inte ovan script som tänkt när jag simulerar med en upplösning på 60 minuter. Tanken är ju då att affär bara skall tillåtas att tas mellan 10:30 och 17:00.

    Rikard har föreslagit nedan script i rött för åstadkomma det ovan önskade för OMXS30 data före oktober 2004 men som även automatiskt anpassar sig till börsens
    ändrade öppettider 09:00-17:30 från och med oktober 2004 och framåt - så att affär inte tillåts att tas under börsens första öppna timme.
    Dock funkar inte Rikards föreslagna nedan script utan 0 signaler genereras vid körning i Analysbänken.
    Då Rikard nu är på semester så vänder jag mig till scriptkungarna LillWicke och Henric - kan ni se vad som felar med tidsfönstret i nedan script - varför genereras
    överhuvudtaget inga signaler?

    öppning=ge(mult(1440,sub(market(o),frac(date()))),60)
    stängning=le(mult(1440,sub(market(c),frac(date()))),30)
    tidsfönster2=and(öppning,stängning)
    xsig5=and(aref(xsig6,1),tidsfönster2)


    Tack//

  • #2
    öppning=ge(mult(1440,sub(frac(date()),market(o))),60)
    stängning=ge(mult(1440,sub(market(c),frac(date()))),30)
    tidsfönster2=and(öppning,stängning)

    Om inte detta fungerar vet jag ej varför.

    Comment


    • #3
      öppning, stängning, tidsfönster2, bör fungera precis som Henric säger.
      Det jag undrar lite över är den här raden:
      xsig5=and(aref(xsig6,1),tidsfönster2)

      Om jag förstått det hela rätt har du sex tidigare triggervillkor fram till xsig6?
      Prova istället att skriva:
      xsig7=and(aref(xsig6,1),tidsfönster2)
      och avsluta scriptet med:
      mult(xsig7,10)
      För att få ett mer distinkt triggeravslut, så får vi se om det hjälper.

      Comment


      • #4
        Henric och LillWicke tack för era svar.

        Henric jag är tacksam om du kan göra ett tillägg i ditt scriptförslag
        så att även den färdiga kurstapeln mellan 16:00-17:00 kan trigga en signal om vi tänker i termer av
        60 minuters upplösning och börsens öppetider 09:00-17:30 från oktober 2004 och framåt.
        Som ditt scriptförslag jobbar nu så är den sista färdiga 60 minuters kurstapel som triggar
        signaler kursstapeln som löper mellan 15:00-16:00 från oktober 2004 och framåt.

        Detta att jämföras med före oktober 2004 där börsens öppettider är 09:30-17:30 och där sista färdiga
        60 minuters kurstapeln som kan trigga signal under innevarande dag är
        färdiga kursstapeln som sträcker sig mellan 15:30-16:30.

        LillWicke signal villkoren och det 'distinkta triggeravslutet' / returnerande funktionen är utelämnat i denna tråd
        då det är utprovat och väl fungerande i mitt totala script och inget som ni behöver se här då fokus ligger på att få Rikards ovan föreslagna tidsfönster att fungera.

        Tack//

        Comment


        • #5
          Här kan du styra i mer detalj och justerara tiderna/datum mer exakt efter dina önskemål. Tänk på att inte vara för snål med tiderna så stapeln hinner gå klart.
          Eftersom att det är fullbordade staplar kan du ha lite marginal.

          start1=if(and(le(yearnumber(),2004),le(monthnumber(),9)),0.4375,0.4167)
          start2=gt(frac(date()),start1)
          slut1=if(and(le(yearnumber(),2004),le(monthnumber(),9)),0.6880,0.7118)
          slut2=lt(frac(date()),slut1)
          and(start2,slut2)

          Comment


          • #6
            Tack för svaret Henric.

            Vi har nästan nått fram men inte riktigt - fortfarande slinker 4 köp/sälj affärer igenom med ett klockslag 10:00 före oktober 2004 när det tidigast skall kunna ske klockan 10:30 -
            övriga tidigare felaktiga köp/sälj affärer klockan 10:00 före oktober 2004 har nu korrigerats till det korrekta klockslaget 10:30.
            Jag blir inte klok på hur ovan 4 affärer fortfarande kan slinka igenom på klockslaget 10:00 före oktober 2004 - när ett antal affärer blir som förväntat 10:30 med tidsfönster filtret.
            Jag har justerat 0.4375 till 0.4377 i ovan script för att ha god marginal förbi klockslaget 10:30 men det hjälper inte.
            Henric har du några teorier om vad dessa 'fyra kvardröjande felaktiga affärer' kan bero på?

            Tack//

            Comment


            • #7
              Vet ej. Kanske uppehåll i datainsamlingen eller liknande och aref kommer från dagen innan. Du kan prova om villkoren nedan hjälper.


              idag1=eqv(int(d),int(date()))
              och/eller
              idag2=eqv(int(d),aref(int(d),1))

              Comment


              • #8
                Kör du även på data från 2003 eller tidigare? Då måste if-satsen utökas.

                or(and(le(yearnumber(),2004),le(monthnumber(),9)),le(yearnumber(),2003))

                Comment

                Working...
                X