Allmänt meddelande

Collapse
No announcement yet.

Behöver hjälp förstå perioder vs "realtid"

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

  • Behöver hjälp förstå perioder vs "realtid"

    Känner mig lite smådum för att jag inte greppat det här med perioder. Skulle behöva lite hjälp med två exempel för att greppa det hela, ett för specifika perioder, det andra "i realtid". Skillnaden mellan exemplen borde göra det hela lite klarare. Minimala script, utan hänsyn till portföljinnehav och annat

    Tittar man i ett grafprogram så kan man ställa in olika tidsintervall; 5m, 20m, 1h etc. Blir enkelt att se staplar / punkter för kurs, RSI m.m., i grafen då.

    Säg vi vill gå lång när RSI14 <= 30 i OMX30 i senaste 1h intervallet, d.v.s., när en punkt skulle ritas ut i en graf. Hur ska ett sådant script set ut? Hur skulle samma script se ut om det triggas så fort RSI <= 30?

    Hmm... och hur skulle vi gå tillväga om vi skulle vilja ha en kombination: RSI14 ska ha varit under 30 i 1h intervall (punkt), men köpsignalen triggas i "realtid", när RSI14 passer 30 uppåt?

  • #2
    Det är absolut ingen dum fråga, tvärtom en riktigt bra sak att belysa lite extra tror jag.

    Det funkar så här:

    Perioder är tidsindelningen som tex medelvärden och andra tekniska indikatorer använder, och om vi utgår från att vi kör tex 60-minutersperioder så får vi en period mellan kl 9 och 10, (det börjar räknas från öppningstidpunkten). Nästa period är kl 10-11 osv.

    Under innevarande period ändras senast betalt C hela tiden, och även högsta notering (H) lägsta notering (L) för innevarande stapel kan ändras när som helst. Det betyder att även medelvärden och andra tekniska indikatorer uppdateras i realtid i takt med att nytt data kommer in, men bara för innevarande period. Först när perioden är slut vet man de slutliga värdena på alla indikatorer osv.

    Därmed kan även en korsning mellan två medelvärden ske mitt i en period. Man får alltså signal från ett script när som helst som villkoren blir uppfyllda. Det kan vara en fördel i vissa fall och en nackdel i andra fall, tex kan en strategi som testar om två medelvärden korsar varande helt plötsligt larma för korsning mitt i en period, för att i nästa sekund åter tycka att det inte är en korsning. Det beror helt på senast betalt, och hur medelvärdena beräknas just i det ögonblicket. Men om man har en stoplossgräns som ska testas i realtid vill man ju att scriptet ska slå till så fort gränsen passeras. I andra fall är det ofta bättre att vänta tills stapeln är fullbordad innan man tar beslut, och då kan man enkelt använda tex Aref() för att titta tillbaka ett steg till förra stapeln.

    Ex:

    medel1=mov(c,10,s)
    medel2=mov(c,20,s)

    över=gt(medel1,medel2)

    Det är scriptet testar om medel1 ligger över medel2. I innevarande period kan det bli sant eller falskt vilken sekund som helst. Det kan inträffa flera gånger under perioden.
    Om man hellre vill veta om korsningen skedde "i slutet av förra perioden" kan man använda följande:

    över=gt(medel1,medel2)
    förra_period=aref(över,1)

    som tittar tillbaka 1 steg i dataserien och returnerar värdet av "över" i förra perioden. Då får man alltid ett konstant värde eftersom en redan fullbordad period inte kan ändras i efterhand. När innevarande stapel blir klar och man kommer in i en ny stapel så räknas den som "förra", och i praktiken får man värdet av den någon sekund efter att den fullbordats.


    Comment


    • #3
      Ok. Så följande script skulle köpa om RSI14 <= 30 i slutet av en 1h period (och väldigt tätt inpå den avslutade perioden eftersom scripten körs var 5:e sekund)?

      i60(
      lastRsi=aref(rsi(14),1)
      isBuySignal=lt(lastRsi,30)
      )

      Och om man istället vill handla om RSI14 <= 30 i realtid så blir det?

      i60(
      isBuySignal=lt(rsi(14),30)
      )

      Och slutligen, om man vill handla när RSI14 var under 30 föregående period och "nu" passerat 30 uppåt?

      i60(
      lastRsi=aref(rsi(14),1)
      isLastRsiBelow30=lt(lastRsi,30)
      isCurrentRsiAbove30=gt(rsi(14),30)
      isBuySignal=and(isLastRsiBelow30,isCurrentRsiAbove30)
      )

      Comment


      • #4
        Ja, det ser rätt ut.

        Comment

        Working...
        X