Allmänt meddelande

Collapse
No announcement yet.

metastock formula

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

  • metastock formula

    Trading the Trend Indicator (TTT) by Andrew Abraham


    VOLAInd :=Mov(ATR(21),1,W)*3;
    If(C>Ref(C,-21) AND C>VOLAInd, HHV(H,21)-Ref(VOLAInd,-1), Ref(VOLAInd,-1)+LLV(L,21))

    En till synes intressant stopp/loss indikator.
    Kan någon tyda ut metastock språket?
    De kör så långa haranger. Tacka vet jag när man namn sätter
    rad för rad.

  • #2
    Direkt omskrivet nedan:

    VOLAInd:=Mult(Mov(ATR(21),1,W),3)
    If(And(Gt(C,Ref(C,21)),Gt(C,VOLAInd)),Sub(HHV(H,21),Aref(VOLAInd,1)),Add(Aref(VOLAInd,1),LLV(L,21)))

    (OBS! Skall bara vara 2 rader ovan, ifall det råkar brytas i flera rader)

    Lite mer läsbart:

    VOLAInd:=Mult(Mov(ATR(21),1,W),3)
    signal:=And(Gt(C,Ref(C,21)),Gt(C,VOLAInd))
    alt1:=Sub(HHV(H,21),Aref(VOLAInd,1))
    alt2:=Add(Aref(VOLAInd,1),LLV(L,21))
    If(signal,alt1,alt2)

    Comment


    • #3
      Tack Lasse!
      Sjyst att du skrev en rak översättning också. Det blir mycket roligare när jag
      upptäcker att det inte längre är helt obegripligt att tyda skriptspråket.
      Jag har kommit till årskurs 2s mattebok.:=)
      Hoppas jag får återkomma lite då och då i ämnet.

      Comment


      • #4
        Hej!
        Eftersom jag är såld på kurvor undrar jag om jag kunde få dessa 3 formler översatta från det metastocianska språket?


        Landis Multiple Time Periods Formula #1

        mov(((Stoch(8,3)*.05)+(Stoch(89,21)*.43)+(Stoch(55,13)*.26)+
        (Stoch(34,8)*.16)+(Stoch(21,5)*.10)),15,s)

        Multiple Slopes of Landis Formula #1

        linregslope(mov(((Stoch(8,3)*.05)+(Stoch(89,21)*.43)+
        (Stoch(55,13)*.26)+(Stoch(34, 8)*.16)+(Stoch(21,5)*.10)),15,s),2)

        Forseindex:smooth:=input(“forceindex
        Smoothing”,1,260,3);
        Mov(v*(c-ref(c,-1)),smooth,E)

        Comment


        • #5
          Landis Multiple Time Periods Formula #1

          mov(Add(Add(Mult(Mov(Stoch(8),3),0.05),Mult(Mov(Stoch(89),21),0.43)),Add(Add(Mult(Mov(Stoch(55),13),0.26), Mult(Mov(Stoch(34),8),0.16)),Mult(Mov(Stoch(21),5),0.10)))),15,s)


          eller lite omskrivet

          st1:=Mov(Stoch(8),3)
          st2:=Mov(Stoch(89),21)
          st3:=Mov(Stoch(55),13)
          st4:=Mov(Stoch(34),8)
          st5:=Mov(Stoch(21),5)
          ad1:=Add(Mult(st1,0.05),Mult(st2,0.43))
          ad2:=Add(Mult(st3,0.26),Mult(st4,0.16))
          ad3:=Add(ad1,Add(ad2,Mult(st5,0.10)))
          mov(ad3,15,s)

          Slår syntaxtesten i taket ersätt := med bara = från slutet räknat.



          Multiple Slopes of Landis Formula #1

          st1:=Mov(Stoch(8),3)
          st2:=Mov(Stoch(89),21)
          st3:=Mov(Stoch(55),13)
          st4:=Mov(Stoch(34),8)
          st5:=Mov(Stoch(21),5)
          ad1:=Add(Mult(st1,0.05),Mult(st2,0.43))
          ad2:=Add(Mult(st3,0.26),Mult(st4,0.16))
          ad3:=Add(ad1,Add(ad2,Mult(st5,0.10)))
          landis:=mov(ad3,15,s)
          linreg(landis,2)

          Forseindex:smooth:=input(“forceindex
          Smoothing”,1,260,3);
          Mov(v*(c-ref(c,-1)),smooth,E)

          blir enligt nedan

          smooth:=5
          Mov(Mult(v,sub(c,ref(c,1))),smooth,E)

          Mer sådant iceage. Det är kul.

          Comment


          • #6
            Tack Lasse!
            det här är det roligaste jag vet så nu vill jag testa ett helt handlar system.Det ska bli väldigt spännande att se vad det blir.

            Coppock Curve - Signal Formulas
            Enter Long:

            Fml("Coppock Curve - CCT") > Ref(Fml("Coppock Curve - CCT"), -1) AND
            ((Close > Ref(Open,-1) AND Ref(Black(),-1)) OR
            (Close > Ref(Close,-1) AND Ref(White(),-1)))


            Close Long:

            Fml("Coppock Curve - CCT") < Ref(Fml("Coppock Curve - CCT"),-1) AND
            ((Close < Ref(Open,-1) AND Ref(White(),-1)) OR
            (Close < Ref(Close,-1) AND Ref(Black(),-1)))


            Enter Short:

            Fml("Coppock Curve - CCT") < Ref(Fml("Coppock Curve - CCT"),-1) AND
            ((Close < Ref(Close,-1) AND Ref(Black(),-1)) OR
            (Close < Ref(Open,-1) AND Ref(White(),-1)))


            Close Short:

            Fml("Coppock Curve - CCT") > Ref(Fml("Coppock Curve - CCT"),-1) AND
            ((Close > Ref(Close,-1) AND Ref(White(),-1)) OR
            (Close > Ref(Open,-1) AND Ref(Black(),-1)))

            Tack på förhand

            Comment


            • #7
              Vad Coppock CCT har för värden får du kolla

              m1:=3
              p1:=5
              a1:=3
              scale:=1
              coppock:=div(sumw(roc(mov(c,m1,s),p1,%),a1),scale)
              white:=gt(c,o)
              black:=lt(c,o)

              Ovan del som är gemensamt för alla 4 scripten nedan nedan

              Coppock Curve - Signal Formulas
              Enter Long:

              Fml("Coppock Curve - CCT") > Ref(Fml("Coppock Curve - CCT"), -1) AND
              ((Close > Ref(Open,-1) AND Ref(Black(),-1)) OR
              (Close > Ref(Close,-1) AND Ref(White(),-1)))

              cp1:=gt(coppock,aref(coppock,1))
              op1:=And(gt(c,ref(o,1)),Aref(black,1))
              op2:=And(gt(c,ref(c,1)),Aref(white,1))
              And(cp1,or(op1,op2))



              Close Long:

              Fml("Coppock Curve - CCT") < Ref(Fml("Coppock Curve - CCT"),-1) AND
              ((Close < Ref(Open,-1) AND Ref(White(),-1)) OR
              (Close < Ref(Close,-1) AND Ref(Black(),-1)))

              cp1:=lt(coppock,aref(coppock,1))
              op1:=And(lt(c,ref(o,1)),Aref(white,1))
              op2:=And(lt(c,ref(c,1)),Aref(black,1))
              And(cp1,or(op1,op2))


              Enter Short:

              Fml("Coppock Curve - CCT") < Ref(Fml("Coppock Curve - CCT"),-1) AND
              ((Close < Ref(Close,-1) AND Ref(Black(),-1)) OR
              (Close < Ref(Open,-1) AND Ref(White(),-1)))

              cp1:=lt(coppock,aref(coppock,1))
              op1:=And(lt(c,ref(c,1)),Aref(black,1))
              op2:=And(lt(c,ref(o,1)),Aref(white,1))
              And(cp1,or(op1,op2))


              Close Short:

              Fml("Coppock Curve - CCT") > Ref(Fml("Coppock Curve - CCT"),-1) AND
              ((Close > Ref(Close,-1) AND Ref(White(),-1)) OR
              (Close > Ref(Open,-1) AND Ref(Black(),-1)))

              cp1:=gt(coppock,aref(coppock,1))
              op1:=And(gt(c,ref(c,1)),Aref(white,1))
              op2:=And(gt(c,ref(o,1)),Aref(black,1))
              And(cp1,or(op1,op2))

              Comment


              • #8
                Coppock Curve - CCT är någon libraryfunktion i Metastock.

                Om du hittar källkoden till den kan vi försöka översätta den så det blir komplett.

                Det jag föreslog med bara Coppock ovan är nog inte helt samma.

                Comment


                • #9
                  Hej Lasse!
                  mycket intressant det här. Jag tror att deras kod för coppock indikator är
                  (MOV(ROC(MOV(C,22,S),250,%),150,E))/100

                  Koden för coppock curve cct tror jag är
                  (ROC(CLOSE,14,percent ) * 10 + ROC(CLOSE,11,percent) * 10 +
                  ROC(Ref(CLOSE,-1),14,percent) * 9 + ROC(Ref(CLOSE,-1),11,percent) *9 +
                  ROC(Ref(CLOSE,-2),14,percent) * 8 + ROC(Ref(CLOSE,-2),11,percent) *8 +
                  ROC(Ref(CLOSE,-3),14,percent) * 7 + ROC(Ref(CLOSE,-3),11,percent) *7 +
                  ROC(Ref(CLOSE,-4),14,percent) * 6 + ROC(Ref(CLOSE,-4),11,percent) *6 +
                  ROC(Ref(CLOSE,-5),14,percent) * 5 + ROC(Ref(CLOSE,-5),11,percent) *5 +
                  ROC(Ref(CLOSE,-6),14,percent) * 4 + ROC(Ref(CLOSE,-6),11,percent) *4 +
                  ROC(Ref(CLOSE,-7),14,percent) * 3 + ROC(Ref(CLOSE,-7),11,percent) *3 +
                  ROC(Ref(CLOSE,-8),14,percent) * 2 + ROC(Ref(CLOSE,-8),11,percent) *2 +
                  ROC(Ref(CLOSE,-9),14,percent) + ROC(Ref(CLOSE,-9),11,percent)) / 2

                  Om jag sen fattat detta rätt så skall fortsättningen bli 2st kurvor.

                  Coppock Curve - CCT II
                  PK:=(ROC(CLOSE,14,percent )*10 + ROC(CLOSE,11,percent)*10 +
                  ROC(Ref(CLOSE,-1),14,percent)*9 + ROC(Ref(CLOSE,-1),11,percent)*9 +
                  ROC(Ref(CLOSE,-2),14,percent)*8 + ROC(Ref(CLOSE,-2),11,percent)*8 +
                  ROC(Ref(CLOSE,-3),14,percent)*7 + ROC(Ref(CLOSE,-3),11,percent)*7 +
                  ROC(Ref(CLOSE,-4),14,percent)*6 + ROC(Ref(CLOSE,-4),11,percent)*6 +
                  ROC(Ref(CLOSE,-5),14,percent)*5 + ROC(Ref(CLOSE,-5),11,percent)*5 +
                  ROC(Ref(CLOSE,-6),14,percent)*4 + ROC(Ref(CLOSE,-6),11,percent)*4 +
                  ROC(Ref(CLOSE,-7),14,percent)*3 + ROC(Ref(CLOSE,-7),11,percent)*3 +
                  ROC(Ref(CLOSE,-8),14,percent)*2 + ROC(Ref(CLOSE,-8),11,percent)*2 +
                  ROC(Ref(CLOSE,-9),14,percent) + ROC(Ref(CLOSE,-9),11,percent))/2;
                  Per1:=30;
                  MN:=Mov(Pk,Per1,S);
                  SD:=Stdev(Pk,Per1);
                  Val1:=If(MN+(1.33*SD)>2.08,MN+(1.33*SD),2.08);
                  Val2:=If(MN-(1.33*SD)<-1.92,MN-(1.33*SD),-1.92);
                  LN:=If(Ref(Pk,-1)>=0 AND Pk>0,Val1,If(Ref(Pk,-1)<=0 AND Pk<0,Val2,0));
                  Zielony:=If(PK>Ref(PK,-1),PK,0);
                  Czerwony:=If(PK<Ref(PK,-1),PK,0);
                  Sygnal:=Mov(PK,5,S);
                  LN;
                  Sygnal;
                  Zielony;
                  Czerwony;

                  Här får nog t.o.m du lite och bita i. Kan du förklara vad coppoc curve cct gör,tar den fram nått form av medelvärde i %.
                  Är roc= Rate Of Change och coppoc likartade indikatorer?
                  m1:=3 =medelvärde
                  p1:=5 =perioder
                  a1:=3 =????

                  Comment


                  • #10
                    Utöka antalet scriptanrop i Preferenser fliken Övrigt till 200 innan du provkör långa scriptet.

                    (MOV(ROC(MOV(C,22,S),250,%),150,E))/100

                    i Metastock blir i Friendly

                    Div(MOV(ROC(MOV(C,22,S),250,%),150,E)),100)


                    Den som finns i databaserna i era installationer 'Coppock lite modifierat'

                    p1:=11
                    p2:=14
                    a1:=10
                    scale:=2
                    coppock:=div(add(sumw(roc(c,p1,%),a1),sumw(roc(c,p2,%),a1)),scale)

                    blir som Coppock CCT nedan med ovanstående värden.

                    (ROC(CLOSE,14,percent ) * 10 + ROC(CLOSE,11,percent) * 10 +
                    ROC(Ref(CLOSE,-1),14,percent) * 9 + ROC(Ref(CLOSE,-1),11,percent) *9 +
                    ROC(Ref(CLOSE,-2),14,percent) * 8 + ROC(Ref(CLOSE,-2),11,percent) *8 +
                    ROC(Ref(CLOSE,-3),14,percent) * 7 + ROC(Ref(CLOSE,-3),11,percent) *7 +
                    ROC(Ref(CLOSE,-4),14,percent) * 6 + ROC(Ref(CLOSE,-4),11,percent) *6 +
                    ROC(Ref(CLOSE,-5),14,percent) * 5 + ROC(Ref(CLOSE,-5),11,percent) *5 +
                    ROC(Ref(CLOSE,-6),14,percent) * 4 + ROC(Ref(CLOSE,-6),11,percent) *4 +
                    ROC(Ref(CLOSE,-7),14,percent) * 3 + ROC(Ref(CLOSE,-7),11,percent) *3 +
                    ROC(Ref(CLOSE,-8),14,percent) * 2 + ROC(Ref(CLOSE,-8),11,percent) *2 +
                    ROC(Ref(CLOSE,-9),14,percent) + ROC(Ref(CLOSE,-9),11,percent)) / 2

                    Det är bara en linjär viktning period för period av ROC() 11 perioder och 14 perioder på Close.

                    Kalla det sedan 'Pk' så blir fortsättningen rätt lika

                    p1:=11
                    p2:=14
                    a1:=10
                    scale:=2
                    Pk:=div(add(sumw(roc(c,p1,%),a1),sumw(roc(c,p2,%),a1)),scale)

                    Per1:=30
                    MN:=Mov(Pk,Per1,S)
                    SD:=Stdev(Pk,Per1)
                    Zielony:=If(Gt(PK,Aref(PK,1)),PK,0)
                    Czerwony:=If(Lt(PK,Aref(PK,1)),PK,0)
                    Sygnal:=Mov(PK,5,S)
                    Val1=If(Gt(Add(MN,Mult(1.33,SD)),2.08),Add(MN,Mult(1.33,SD)),2.08)
                    Val2=If(Lt(Sub(MN,Mult(1.33,SD)),-1.92),Sub(MN,Mult(1.33,SD)),-1.92)
                    LN=If(And(Ge(Aref(Pk,1),0),Gt(Pk,0)),Val1,If(And(Le(Aref(Pk,1),0),Lt(Pk,0)),Val2,0))
                    Add(ln,0)

                    Prova sedan var och en av dessa raderna nedan en i taget för ritning i sista ADD().

                    Add(LN,0)
                    Add(Sygnal,0)
                    Add(Zielony,0)
                    Add(Czerwony,0)

                    Anledningen till ADD() sist är att det är minnesreferenser på de sista raderna,
                    och man styr upp den med en funktion för att bestämma vilket värde som returneras.

                    Skall de utvärdas sida vid sida så gör var sitt script till vart och en av dem.

                    Utöka antalet scriptanrop i Preferenser fliken Övrigt till 200 innan du provkör långa scriptet.

                    Comment


                    • #11
                      Hej Lasse!
                      Jag har samlat på mej lite nya “secret indicaters” som jag undrar om du har lust att översätta.Det blev lite mycket så du får gärna ta ett då och då.Jag är tacksam hur du en gör.

                      Elliot Oscillator

                      Mov((H+L)/2,5,S)-Mov((H+L)/2,34,S)

                      SPECIAL TRIX

                      trix(12)-ref((trix(12)),-1)


                      Elder's Force Index V*(C-ref(C,-1))

                      Ergodic Candlestick Oscillator II

                      ave1:=11; {ms says 25, esignal default is 32,vlad uses 11}
                      ave2:=4; {ms says 13, esignal default is 12,vlad uses 4}
                      ave3:=5; {esignal says5}
                      eco:=(Mov(Mov(C-O,ave1,E),ave2,E)/Mov(Mov(H-L,ave1,E),ave2,E))*100;
                      signal:=Mov(eco,ave3,E);
                      eco;
                      signal


                      Transform with Signal pr:=(H+L)/2;len:=10;maxh:=HHV(pr,len);minl:=LLV(pr,len);val1:=.33*2*((pr-minl)/(maxh-minl)-.5)+.67*PREV;value1:=If(val1>.99,.999,If(val1<-.99,-.999,val1));fish:=.5*Log((1+value1)/(1-value1))+.5*PREV;fish;Ref(fish,-1);

                      Transform with Rate of Changepr:=(H+L)/2;len:=10;maxh:=HHV(pr,len);minl:=LLV(pr,len);val1:=.33*2*((pr-minl)/(maxh-minl)-.5)+.67*PREV;value1:=If(val1>.99,.999,If(val1<-.99,-.999,val1));fish:=.5*Log((1+value1)/(1-value1))+.5*PREV;fish;10*ROC(fish,1,$)

                      Comment


                      • #12
                        Elliot Oscillator

                        Metastock-------

                        Mov((H+L)/2,5,S)-Mov((H+L)/2,34,S)

                        Friendly-----

                        mittpris:=Div(Add(H,L),2)
                        Sub(Mov(mittpris,5,S),Mov(mittpris,34,S))



                        SPECIAL TRIX

                        Metastock-------

                        trix(12)-ref((trix(12)),-1)

                        Friendly-----

                        period:=12
                        m1:=mov(c,period,e)
                        m2:=mov(m1,period,e)
                        m3:=mov(m2,period,e)
                        trix:=mult(roc(m3,1,%),10)
                        sub(trix,aref(trix,1))


                        Metastock-------
                        Elder's Force Index V*(C-ref(C,-1))

                        Friendly-----

                        mult(V,Sub(C-ref(C,1)))


                        Metastock-------
                        Ergodic Candlestick Oscillator II

                        ave1:=11; {ms says 25, esignal default is 32,vlad uses 11}
                        ave2:=4; {ms says 13, esignal default is 12,vlad uses 4}
                        ave3:=5; {esignal says5}
                        eco:=(Mov(Mov(C-O,ave1,E),ave2,E)/Mov(Mov(H-L,ave1,E),ave2,E))*100;
                        signal:=Mov(eco,ave3,E);
                        eco;
                        signal

                        Friendly-----
                        ave1:=11
                        ave2:=4
                        ave3:=5
                        eco:=Mult(Div(Mov(Mov(Sub(C,O),ave1,E),ave2,E),Mov(Mov(Sub(H,L),ave1,E),ave2,E)),100)
                        signal:=Mov(eco,ave3,E)
                        {gör två script ena med 'eco' andra med 'signal'}
                        eco



                        Metastock-------
                        Transform with Signal

                        pr:=(H+L)/2;
                        len:=10;
                        maxh:=HHV(pr,len);
                        minl:=LLV(pr,len);
                        val1:=.33*2*((pr-minl)/(maxh-minl)-.5)+.67*PREV;
                        value1:=If(val1>.99,.999,If(val1<-.99,-.999,val1));
                        fish:=.5*Log((1+value1)/(1-value1))+.5*PREV;
                        fish;
                        Ref(fish,-1);

                        Friendly-----

                        pr:=Div(Sub(H,L),2)
                        len:=10
                        maxh:=HHV(pr,len)
                        minl:=LLV(pr,len)
                        val1=retval(Add(Mult(Mult(0.33,2),Sub(Div(Sub(pr,minl),Sub(maxh,minl)),0.5)),Mult(0.67,Getval(2))),2)
                        value1=If(Gt(val1,0.99),0.999,If(Lt(val1,-0.99),-0.999,val1))
                        fish=Retval(Add(Mult(0.5,Log(Div(Add(1,value1),Sub(1,value1)))),Mult(0.5,Getval(3))),3)
                        {gör två script ena med 'Add(fish,0)' andra med 'Aref(fish,1)'}
                        {Add(fish,0)}
                        {ARef(fish,1)}

                        OBS! Minnesreferenser på 3 rader 'val1', 'value1' och 'fish'

                        Metastock-------

                        Transform with Rate of Change pr:=(H+L)/2;len:=10;maxh:=HHV(pr,len);minl:=LLV(pr,len);val1:=.33*2*((pr-minl)/(maxh-minl)-.5)+.67*PREV;value1:=If(val1>.99,.999,If(val1<-.99,-.999,val1));fish:=.5*Log((1+value1)/(1-value1))+.5*PREV;fish;10*ROC(fish,1,$)

                        Friendly-----

                        pr:=Div(Sub(H,L),2)
                        len:=10
                        maxh:=HHV(pr,len)
                        minl:=LLV(pr,len)
                        val1=retval(Add(Mult(Mult(0.33,2),Sub(Div(Sub(pr,minl),Sub(maxh,minl)),0.5)),Mult(0.67,Getval(2))),2)
                        value1=If(Gt(val1,0.99),0.999,If(Lt(val1,-0.99),-0.999,val1))
                        fish=Retval(Add(Mult(0.5,Log(Div(Add(1,value1),Sub(1,value1)))),Mult(0.5,Getval(3))),3)
                        {gör två script ett med vardera raden nedan avkommenterad}
                        {Add(fish,0)}
                        {Mult(10,ROC(fish,1,$))}

                        OBS! Minnesreferenser på 3 rader 'val1', 'value1' och 'fish'

                        Comment


                        • #13
                          Kommentar

                          Sista två "Transform with signal" och "Transform with rate of change" använder succesiva approximationer(eller vad det kallas).

                          Dvs du använder förgående periodsvärden och viktar ihop med denna periodens värden.

                          Dessa kurvor får därför inte förväntat resultat om du skulle lägga till en test i dem, för att få larm. Test för larm eller order testar ju något i en period bara.

                          Så när du ser i en graf vad sista perioden vid signal ger så blir det inte alls samma sak när du testar för larm i den perioden online i realtid.

                          Skriv om formeln i så fall så du inte är beroende av en graf.

                          Dvs konstanten PREV skall ej användas på de två platser i varje Metastock-script som görs.

                          Du summerar ju ihop 2/3 av värdet i förgående period med 1/3 av värdet i denna perioden. Det blir en exponentiell funktion av detta. Testa fram t.ex ett exponentiellt medel av lämplig period för att få fram samma sak.

                          Och på slutet görs samma sak fast med 1/2 i nuvarande period och 1/2 från förra.

                          Comment


                          • #14
                            Utan dej Lasse, skulle inte frendly eller forumet vara lika kul.
                            Tack!

                            Comment


                            • #15
                              Hej Lasse!
                              Som en påskkärring kommer jag och tigger om lite hjälp med lite kodning.


                              AVGC20.40 II

                              Ref(Mov(C,20,S),-40)
                              Eftersom jag inte får denna metastock att fungera
                              Vad är skillnaden till denna kurva som fungerar?
                              ARef(Mov(C,20,S),40)


                              Bollinger Band Histogram
                              ((C+2*Std(C,20) - Mov(C,20,S)) / (4*Std(C,20)))*4 - 2

                              Buff Averages
                              X:=Input("Time Periods",1,500,25);
                              Sum(V*C, X) / (Cum(V) - Ref( Cum(V), -X))

                              Dahl Volume Trend Mov(C,55,VOL)-Ref(Mov(C,55,VOL),-15)

                              Dahl PVT Trend Mov((PVT()-Ref( PVT(),-15)),55,E)

                              Dahl Smoothed OBV Vol 88 Mov((OBV()-Mov(OBV(),88,VOL)),55,E)

                              Dahl OBV Trend Mov((OBV()-Ref(OBV(),-15)),55,E)

                              Comment

                              Working...
                              X