Allmänt meddelande

Collapse
No announcement yet.

skript skolan

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

  • skript skolan

    HejLasse!
    Jag minglar runt bland skripten och upptäcker att jag inte förstår (and) funktionen som används flitigt för att koppla samman delar i ett skript.

    Här är ditt skript som du hjälpte Money Management med för ett tag sen.

    kortmedel:=20
    långtmedel:=50
    r1:=lt(ref(c,1),ref(c,2))
    r2:=gt(c,ref(c,1))
    r3:=eqv(sum(r1,3),3)
    rallt:=and(r3,r2)
    m1:=gt(c,mov(ref(c,1),kortmedel,s))
    m2:=gt(c,mov(ref(c,1),långtmedel,s))
    mallt:=and(m1,m2)
    and(rallt,mallt)

    and betyder ju ”och”
    men jag har inte förstått hur ”och” kopplar i hopp rallt:= med (r3,r2). Mallt:= med (m1,m2)
    Hur läser jag de raderna så att jag förstår inebörden?

    Är det viktigt att ”rallt” hamnar precis efter ”r3” Och om det sista i skriptet
    and(rallt,mallt) är en förlängning av (mallt) raden.

  • #2
    Sista raden

    and(rallt,mallt)

    kopplar ihop de övriga.

    Varje And() har ju max 2 parametrar. Så för att få fler ingångar så stackar man dem i varandra.

    Det har ingen betydelse vilken rad t.ex r3 står på, förutom att ett namn som används måste finnas före den raden.

    Comment


    • #3
      Aha.... det hade jag inte tänkt på

      Lasse

      det här att datanamnen måste komma i en viss inbördes ordning betyder alltså att nedanstående script inte skulle fungera?

      kortmedel:=20
      långtmedel:=50

      rallt:=and(r3,r2)

      r1:=lt(ref(c,1),ref(c,2))
      r2:=gt(c,ref(c,1))
      r3:=eqv(sum(r1,3),3)
      m1:=gt(c,mov(ref(c,1),kortmedel,s))
      m2:=gt(c,mov(ref(c,1),långtmedel,s))
      mallt:=and(m1,m2)
      and(rallt,mallt)


      Jag har trott att hela scriptet togs in i kompilatorn och därefter lagrades upp i en tabell och att det därför inte spelade någon roll i vilken ordning datanamnen skrevs, bara de alla var olika.

      Comment


      • #4
        Det skulle inte fungera som skrivet.

        Se det som ett word-dokument där man gör en sök-ersätt uppifrån och ned bara. Det är precis det som görs.

        Resultatet är en oläslig massa på slutet men den som kompilatorn behöver för att göra det körbart.

        Comment


        • #5
          Hej Lasse!
          Detta är inte helt “glasklart” med “And” funktionen än så jag försöker mej på att bena upp ett skript till (bara att skriva ned dem så här gör att jag förstår dem bättre),sen måste jag få veta om det är rätt tänkt.

          tittabakåt:=2
          mnu:=mov(c,200,s)
          mdå:=mov(ref(c,1),200,s)
          mökar:=gt(mnu,mdå)

          mtest1:=and(and(lt(l,mnu),gt(h,mnu)),mökar)

          mtest2:=hhv(mtest1,tittabakåt)
          p1:=add(hhvbars(mtest1,tittabakåt),1)
          high1:=gt(h,aref(h,p1:tittabakåt))

          mult(and(high1,mtest2),20)

          ”mtest1”=Low är mindre än medelvärde 200
          och High är större än medelvärde 200 {lite underlig logik}
          och bägge dessa sammanlänkas med ”And”
          sen ska nuvarande 200dagars vara större än föregående period ”mdå”
          som vävs in i ”mtest1” av ”And” på slutet

          nu har vi täckt upp alla rader till ”mtest1”

          En fundering sen om resten av skriptet som ska sammanknytas av ”high1”
          mult(and(high1,mtest2),20)

          Det räcker tydligen att ”mtest1” är sammanlänkad med ”high1” under ”mtest2” för att hela resten av skriptet skall minnas ”mtest1” på sista raden
          Har jag tänkt rätt?
          Det är knepigt att enkelt förklara vad jag undrar över så att du förstår att förklara.
          Detta ditt skript som jag hittat är förövrigt grymt bra men jag undrar mest över uppbyggnaden av skript med hjälp av ”And” funktionen.

          Comment


          • #6
            Jag tycker det ser förträffligt ut. Även hanteringen av dynamisk periodberäkning är helt rätt.

            Imponerande

            Sedan förstår jag inte exakt din fråga om mtest1 och mtest2.

            mtest2 ser ju till att du kan få signal även om mtest1 haft signal bara någon enda gång inom 'titabakåt' perioder. Det blir ett lite uppmjukat villkor kan man säga.

            Om du hade använt mtest1 i And() med high1 så hade det varit ett hårdare villkor eftersom villkoren i mtest1 måste vara uppfylla i nuvarande period.

            Så i mtest2 körs mtest1 i 2 perioder(nuvarande och förgående) och är det sant i någon enda så får du sant tillbaka till And()-funktionen med high1.

            Comment


            • #7
              Jag förstår inte riktigt den här raden:

              high1:=gt(h,aref(h,p1:tittabakåt))


              Vad innebär "p1:tittabakåt"?

              Comment


              • #8
                Ett kolon i periodparameter anger maxvärdet till höger som det kan anta när man har ett dynamiskt framtaget periodvärde. Detta för att kompilatorn skall kunna reservera tillräckligt med utrymme för de dataserier som kan uppstå i returvärden.

                (OBS enbart i ActiveTrader)

                Aref() här har ju ett periodvärde som levereras av scriptet och är ingen konstant som det oftast är annars.

                Dynamisk period fungerar i alla funktioner med periodvärde utom Ref(). Därför används Aref() istället i detta fallet som dessutom fungerar på alla typer av dataserier.

                Comment


                • #9
                  Glömde svara på hela frågan.

                  Den raden plockar alltså fram High från den period där mtest1 är sann senast, och kollar ifall nuvarande High är högre.

                  Comment

                  Working...
                  X