Allmänt meddelande

Collapse
No announcement yet.

Typning/syntax

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

  • Typning/syntax

    Jag tycker typning och syntax är aningen förvirrande. Kanske någon scripträv kan förklara.

    Har hämtat följande från Raptor-koden:

    ej_ras1 = or( hhv(gt(h,mov(c,20,s)),22), gt(ma50,ma200) )

    FRÅGA 1: Enligt scriptreferensen returnerar HHV "Dataserie med högstavärden". Vad betyder det? Returnerar den inte högstavärdet från en dataserie, dvs ett enskilt värde?

    FRÅGA 2: Oavsett om HHV returnerar ett tal eller en serie, hur kan det då ingå i en OR() funktion som tar två BOOL värden som inparametrar???


  • #2
    1. hhv returnerar högsta enskilda värdet som kan vara indikator, kurs, boolean, mm
    2. varför inte?, dvs det räcker att en av två boolean är sann.

    gt(h,mov(c,20,s)) är dataserien vid varje enskild dag och om villkoret varit sann minst en gång under de senaste 22 dagarna.

    Comment


    • #3
      OK, tack. Jag fattade inte att HHV även tar en serie bool som inparameter och således tolkar sant som "större än" falskt (1>0).

      Med flödesorienterad pseudokod så skulle logiken då vara som följer:

      MA20 = [ma0, ma1,..., maT]
      H = [h0, h1,..., hT]

      def HHV(H, MA20, period = 22):
      for t = (T-period) to T:
      if H[t] > MA20[t]:
      return True
      return False

      Comment


      • #4
        Stämmer, och här har vi en av styrkorna i scriptspråket: en enda funktion kan hantera hela dataserier i ett nafs och snabbt testa om något varit sant någon gång inom x perioder osv. Man slipper krångla med loopar etc.

        Det blir lite kod men mycket jobb gjort.

        Comment


        • #5
          Det självklara som man inte tänker på i början är att allt redan är serverat och att de flesta beräkningar kan göras direkt på dataserien. Inga datatyper behöver deklareras, etc. Vill man ha en boolean scriptar man ett villkor som bara kan blir sant eller falskt.

          Comment


          • #6
            Det är superelegant på många sätt men det tar ett tag att ställa om huvet.

            När jag har er på tråden: Hur exekveras ordermodellerna, dvs med vilken frekvens? Finns det någon bakgrundsprocess som hela tiden kör scripten eller hur funkar det?

            Comment


            • #7
              Var 5:e sekund går NAT igenom alla anslutna ordermodeller i bokstavsordning (eller annan underliggande numrering) för respektive konto. Detta görs konto för konto.
              Om man önskar snabbare exekvering kan man ändra värdet i en parameter i ini-filen, men då får man inte ha för tunga eller för många anslutna script för då kan datorn/NAT storkna (dvs inte hinna igenom alla script innan nästa omgång), och då vet man ju inte med vilken frekvens som man kör scripten.

              mvh
              Bertil
              Last edited by Bertil; 2017-03-29, 18:12.

              Comment


              • #8
                Tack för det!

                Comment

                Working...
                X