Allmänt meddelande

Collapse
No announcement yet.

Reducering av parenteser

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

  • Reducering av parenteser

    Hej
    Sitter och gör om ett script från Metastock till NAT och hugger i sten när det gäller att reducera antalet parenteser, så det hamnar innanför de 10 som NAT tillåter.

    Det är ett enklare script, (men nog svårt för min nivå) och syftar till att få fram ett glidande medelvärde som reagerar lite snabbare på kursrörelser än de vanliga.

    Här nedan ser ni det som jag hittills har fått till och det är nog raden IT:=... som ställer till det för mig.
    Vet heller inte om "Aref(c,0)" fungerar som den skall på s1:...
    Ser ni några andra konstigheter, så får ni givetvis rätta eller ge förslag på alternativa lösningar.

    Är tacksam för den hjälp jag kan få

    p:=12 {period}

    TN1:=mov(C,p,S)

    s1:=mult(aref(C,0),div(sub(p,sub(mult(2,0),1)),2))
    s2:=mult(aref(C,1),div(sub(p,sub(mult(2,1),1)),2))
    s3:=mult(aref(C,2),div(sub(p,sub(mult(2,2),1)),2))
    s4:=mult(aref(C,3),div(sub(p,sub(mult(2,3),1)),2))
    s5:=mult(aref(C,4),div(sub(p,sub(mult(2,4),1)),2))
    s6:=mult(aref(C,5),div(sub(p,sub(mult(2,5),1)),2))
    s7:=mult(aref(C,6),div(sub(p,sub(mult(2,6),1)),2))
    s8:=mult(aref(C,7),div(sub(p,sub(mult(2,7),1)),2))
    s9:=mult(aref(C,8),div(sub(p,sub(mult(2,8),1)),2))
    s10:=mult(aref(C,9),div(sub(p,sub(mult(2,9),1)),2))
    s11:=mult(aref(C,10),div(sub(p,sub(mult(2,10),1)),2))
    s12:=mult(aref(C,11),div(sub(p,sub(mult(2,11),1)),2))
    s13:=mult(aref(C,12),div(sub(p,sub(mult(2,12),1)),2))
    s14:=mult(aref(C,13),div(sub(p,sub(mult(2,13),1)),2))
    s15:=mult(aref(C,14),div(sub(p,sub(mult(2,14),1)),2))

    IT:=if(eqv(p,1),S1,if(eqv(p,2),S2,if(eqv(p,3),S3,if(eqv(p,4),S4,if(eqv(p,5),S5,if(eqv(p,6),S6,if(eqv(p,7),S7,if(eqv(p,8),S8,if(eqv(p,9),S9,if(eqv(p,10 ),S10,if(eqv(p,11),S11,if(eqv(p,12),S12,if(eqv(p,13),S13,if(eqv(p,14),S14,if(eqv(p,15),S15,0)))))))))))))))

    PP:=mult(add(p,1),p)

    Indikator=add(TN1,div(mult(add(div(p,2),1),IT),PP))

    //Anders

  • #2
    Du använder dig av fel variabeltilldelningsteknik.

    ":=" använder man för att tilldela ett "enkelt/kort" värde typ "p:=12 {period}"
    "=" använder man för att tilldela funktioner och andra uträkningar.

    ":=" är begränsat till ett parentesdjup om 10, medans "=" har ett "obegränsat" parentesdjup.

    EDIT: Alla ":=" måste dessutom ligga ovanför alla "=" i scriptet.

    Last edited by LillWicke; 2014-08-15, 15:59.

    Comment


    • #3
      Tack LillWicke
      ..för en bra förklaring och beskrivning.

      Har faktiskt alltid haft lite svårt att förstå logiken bakom ":=" och "=". Vad som är möjligt och inte. (Detta säger nog mer om mig, än om variabletilldelningstekniken)

      Tar nya tag och tar mig friheten att återkomma med mer eller mindre intelligenta frågor.

      //Anders

      Comment

      Working...
      X