Allmänt meddelande

Collapse
No announcement yet.

scripthjälp

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

  • scripthjälp

    jag har en idé om en indikator (i) som funkar lite som en trigger och stoploss i ett.

    tänk att man börjar vid tiden t med att
    i = close

    vid t+1 blir indikatorn , om close > i , i(t-1) + x
    om den är mindre blir den istället i(t-1) + x

    när de korsar varann så läggs även ett stopploss-utrymme till eller drar ifrån, beroende på från vilket håll de korsar...

    mitt problem:
    värdet på indikatorn och de första vändningarna kommer att i början bero på var jag startar, så hur kan jag sätta en start-tidpunkt, som sen är samma för alltid?

  • #2
    Vill du ha en ny starttid för varje dag?

    Comment


    • #3
      nej, det ska vara en starttid som sätts en gång, sen ska den vara samma

      problemet som jag ser det är att bara en viss del av scriptet ska "loopas"

      1. sätt i(t0) = close(t0)

      2. if close(t) > i
      i(t) = i(t-1) + x
      else
      i(t) = i(t-1) - x

      3. vid nästa t return to 2

      Hoppas du hänger med i mitt hittapå-programspråk!
      Last edited by nyrn2k; 2011-10-20, 17:37.

      Comment


      • #4
        Jag vet inte vilken faktor x du använder. Jag använde 0,2% på dagskursen. Principen kanske kan fungera?

        indikatori=Retval(if(le(Getval(5),0),aref(c,1),if(ge(c,Getval(5)),mult(Getval(5),1.002),mult(Getval(5),0.998))),5)

        Comment


        • #5
          tack för hjälpen,
          det funkar ungefär som det var tänkt!
          jag ändrade lite på några saker, då blev den iofs specifik för terminen,
          men man kan väl lägga till att den känner av ticksizen och adderar/subtraherar en viss procent av den, om man vill ha den till nåt annat instrument...

          i1(
          indikatori=Retval(if(le(Getval(5),0),aref(c,1),if(ge(c,Getval(5)),add(Getval(5),0.02),sub(Getval(5),0.025))),5)
          )

          om vi kunde bygga in en "stoploss" i det hela så skulle den bli bättre...
          ifall close korsar över så dras det ifrån 2.5 (10tick) från indikatorn och ifall close korsar under så läggs det till 2.5 (10tick)

          Comment


          • #6
            Är det något liknande detta du vill ha?

            korsö=and(and(cross(c,Getval(5)),gt(c,Getval(5))),gt(Getval(5),0))
            korsu=and(and(cross(c,Getval(5)),lt(c,Getval(5))),gt(Getval(5),0))
            diff1=abs(mult(sub(c,aref(c,1)),0.2))
            diff2=if(or(korsu,korsö),-2.5,diff1)
            indikatori=Retval(if(le(Getval(5),0),aref(c,1),if(ge(c,Getval(5)),add(Getval(5),diff2),sub(Getval(5),diff2))),5)

            draw(indikatori,3,yqb)

            i1(
            signal=add(0,0)
            )

            Comment


            • #7
              ja, det funkar bra förutom ett par saker.

              1. När det körs nu när marknaden är öppen, så verkar det som logiken triggar cross
              medans stapeln håller på att bildas.
              om indikatorn ligger för nära kursen, så antar jag att ett köp kommer att triggas,
              ,inte bra...

              2. hur kan man sätta en fix tidpunkt t.ex. kl 9.01 den 21/8 2011 som indikatorn
              alltid börjar räkna ifrån, för som det är nu så får den olika värden beroende på hur
              långt bak man tittar i grafen?
              jag var medveten om problemet med startpunkten när jag fick idén, men tänker mig
              att med olika startpunkter, borde ändå indikatorn så småningom ändå konvergera
              mot ett "verkligt" värde, så att med tiden spelar det ingen roll.
              det verkar dock ta riktigt långt tid...

              3. slutligen en kort fråga,
              vad gör egentligen kodsnutten

              i1(
              signal=add(0,0)
              )

              Comment


              • #8
                1. Graf och simulering vid testing kör på fullbordad minut, medan live på varje tick. Är det då lite svängit så kan det bli många signaler under en minut. Ett sätt är att bara släppa signal en gång i minuten eller vald upplösning.

                2. Tex sätta då kl <=9:02
                le(mult(frac(date()),1440),542)
                För visst datum får Rikard svara. Tex eqv(int(d),?)
                Scriptet borde automatiskt sätta förstar värdet till close(t-1) beroende på när diagrammet börjar.

                3. Ingenting, av gammal vana. Det är där triggern sedan ska ligga.
                Last edited by seadragon; 2011-10-21, 12:23.

                Comment


                • #9
                  1. nu är index runt 942
                  grafen låg vid förra stapeln strax över 930
                  "stoppen" är satt till -2% (sub(0,mult(c,0.02)) , allstå den du satte till -2.5)
                  ändå slår den om...

                  2. var sätter jag in den raden i scriptet?
                  och betyder inte det att den kommer att börja räkna från 9.02 på morgonen från
                  varje ny dag? jag vill sätta en tidpunkt en gång t.ex 9.02 21/8 2011, så att den
                  fortfarande år 2025 räknar från 21/8 2011...

                  Comment


                  • #10
                    1. Kanske Getval(0)=0 ibland vid livekörning och Retval hämtar då aref(c,1). Rikard kan svara på detta.

                    2. Vet ej hur datumvärderna lagras i databasen. Borde gå att hämta tex lt(int(d),?)

                    Comment

                    Working...
                    X