Allmänt meddelande

Collapse
No announcement yet.

rsi+sto+mv-script

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

  • rsi+sto+mv-script

    Hej lfm.

    Jag kör nedanstående script:

    sl) jg-Rsi+Sto+Mv-faller-SÄLJ
    ag11:=Lt(LlvBars(Rsi(14),2),1)
    ag21:=Lt(LlvBars(Stoch(5),2),1)
    ag31:=Lt(LlvBars(Mov(C,20,s),2),1)
    ag33:=Hhv(ag31,5)
    i15(And(ag11,And(ag21,ag33)))

    sl) jg-Rsi+Sto+Mv-stiger-KÖP
    ag11:=Lt(HhvBars(Rsi(14),2),1)
    ag21:=Lt(HhvBars(Stoch(5),2),1)
    ag31:=Lt(HhvBars(Mov(C,20,s),2),1)
    ag33:=Hhv(ag31,5)
    i15(And(ag11,And(ag21,ag33)))

    Resultatet blir inte så bra ibland, köp och sälj sker varannan minut, se log:
    15:45 ORDER "sl) jg-Rsi+Sto+Mv-faller-SÄLJ OMX4B" kurs 700.2500
    15:45:42 Order skickad!
    16:01 ORDER "sl) jg-Rsi+Sto+Mv-stiger-KÖP OMX4B" kurs 700.0000
    16:01:10 Order skickad!
    16:12 ORDER "sl) jg-Rsi+Sto+Mv-faller-SÄLJ OMX4B" kurs 700.0000
    16:12:19 Order skickad!
    16:12 ORDER "sl) jg-Rsi+Sto+Mv-stiger-KÖP OMX4B" kurs 700.0000
    16:12:42 Order skickad!
    16:13 ORDER "sl) jg-Rsi+Sto+Mv-faller-SÄLJ OMX4B" kurs 699.7500
    16:13:41 Order skickad!
    16:15 ORDER "sl) jg-Rsi+Sto+Mv-stiger-KÖP OMX4B" kurs 699.7500
    16:15:42 Order skickad!
    16:16 ORDER "sl) jg-Rsi+Sto+Mv-faller-SÄLJ OMX4B" kurs 699.5000
    16:16:42 Order skickad!
    16:17 ORDER "sl) jg-Rsi+Sto+Mv-stiger-KÖP OMX4B" kurs 699.7500
    16:17:42 Order skickad!
    16:18 ORDER "sl) jg-Rsi+Sto+Mv-faller-SÄLJ OMX4B" kurs 699.2500
    16:18:41 Order skickad!
    16:19 ORDER "sl) jg-Rsi+Sto+Mv-stiger-KÖP OMX4B" kurs 699.7500
    16:19:42 Order skickad!
    16:23 ORDER "sl) jg-Rsi+Sto+Mv-faller-SÄLJ OMX4B" kurs 699.2500
    16:23:41 Order skickad!
    17:03 ORDER "sl) jg-Rsi+Sto+Mv-stiger-KÖP OMX4B" kurs 700.0000

    Hur kan jag komma runt varannan minut-problematiken?
    Nu skall ju mv vara stigande 5 perioder bakåt för köp, är inte 5 perioder*5 minuter -25 min?, hur kan då sälj ske en minut efter köp?

  • #2
    Det kan ev. vara att denna

    ag11:=Lt(LlvBars(Rsi(14),2),1)

    konstruktionen också ger sant vid oförändrat.

    Så det blir sjunkande eller oförändrat som blir riktigare beskrivning.

    Kanske ändra till

    r1:=Rsi(14)
    ag11:=Lt(r1,Aref(r1,1))

    sjunker ovan då.

    r1:=Rsi(14)
    ag11:=Gt(r1,Aref(r1,1))

    stiger ovan då.

    OBS! Assistenten kan inte användas mer på dessa script då.

    sl) jg-Rsi+Sto+Mv-faller-SÄLJ

    r1:=Rsi(14)
    s1:=Stoch(5)
    m1:=Mov(C,20,s)
    ag11:=Lt(r1,Aref(r1,1))
    ag21:=Lt(s1,Aref(s1,1))
    ag31:=Lt(m1,Aref(m1,1))
    ag33:=Hhv(ag31,5)
    i15(And(ag11,And(ag21,ag33)))

    sl) jg-Rsi+Sto+Mv-stiger-KÖP
    r1:=Rsi(14)
    s1:=Stoch(5)
    m1:=Mov(C,20,s)
    ag11:=Gt(r1,Aref(r1,1))
    ag21:=Gt(s1,Aref(s1,1))
    ag31:=Gt(m1,Aref(m1,1))
    ag33:=Hhv(ag31,5)
    i15(And(ag11,And(ag21,ag33)))

    Prova om det går bättre.

    Comment


    • #3
      Tack, lfm. Har lagt in scripten för test i simulerings-läge imorgon.

      Comment


      • #4
        Hej lfm

        Jag tänkte komplettera scriptet med test om konsolidering pågår enligt script framtagit här i forumet av rickard med dina modifieringar- Bollinger-test vid konsolidering:

        Så här ser scriptet ut:

        mittövrigascript:= .....................
        ag12:=BolBands(20,2.0,u)
        ag21:=BolBands(20,2.0,l)
        bolma1:=Mov(ag12,6,s)
        bolma2:=Mov(ag21,6,s)
        diff1:=Gt(Div(ag12,ag21),1.006)
        diff2:=Gt(Div(bolma1,bolma2),1.005)
        i15(okbol=And(diff1,diff2)
        and(mittövrigascript,okbol))

        Ditt kompletterande script av mitt script:
        sl) jg-Rsi+Sto+Mv-stiger-KÖP
        r1:=Rsi(14)
        s1:=Stoch(5)
        m1:=Mov(C,20,s)
        ag11:=Gt(r1,Aref(r1,1))
        ag21:=Gt(s1,Aref(s1,1))
        ag31:=Gt(m1,Aref(m1,1))
        ag33:=Hhv(ag31,5)
        i15(And(ag11,And(ag21,ag33)))

        Om jag nu skall AND:a ihop scripten blir det så här?

        sl) jg-Rsi+Sto+Mv-stiger-KÖP
        r1:=Rsi(14)
        s1:=Stoch(5)
        m1:=Mov(C,20,s)
        ag11:=Gt(r1,Aref(r1,1))
        ag21:=Gt(s1,Aref(s1,1))
        ag31:=Gt(m1,Aref(m1,1))
        ag33:=Hhv(ag31,5)
        test:=(And(ag11,And(ag21,ag33)))

        ag12:=BolBands(20,2.0,u)
        ag21:=BolBands(20,2.0,l)
        bolma1:=Mov(ag12,6,s)
        bolma2:=Mov(ag21,6,s)
        diff1:=Gt(Div(ag12,ag21),1.006)
        diff2:=Gt(Div(bolma1,bolma2),1.005)
        i15(okbol=And(diff1,diff2)
        and(test,okbol))

        Jag är lite osäker om test:=(And... kommer att fungera?
        Tanken är att köp ej skall ske om det är konsolidering.

        Comment


        • #5
          Tjena!
          Jag skulle nog skrivit det som nedan, så det blir tydligare vad som menas. Hittade ett par parenteser för mycket i raden om "test".

          sl) jg-Rsi+Sto+Mv-stiger-KÖP
          r1:=Rsi(14)
          s1:=Stoch(5)
          m1:=Mov(C,20,s)
          ag11:=Gt(r1,Aref(r1,1))
          ag21:=Gt(s1,Aref(s1,1))
          ag31:=Gt(m1,Aref(m1,1))
          ag33:=Hhv(ag31,5)
          test:=And(ag11,And(ag21,ag33)) (Raden rättad)

          ag12:=BolBands(20,2.0,u)
          ag21:=BolBands(20,2.0,l)
          bolma1:=Mov(ag12,6,s)
          bolma2:=Mov(ag21,6,s)
          diff1:=Gt(Div(ag12,ag21),1.006)
          diff2:=Gt(Div(bolma1,bolma2),1.005)
          i15(
          okbol=And(diff1,diff2)
          signal=And(test,okbol)
          signal)

          Comment


          • #6
            Hej Rickard

            Sista delen i scriptet:

            i15(okbol=And(diff1,diff2)
            signal=And(test,okbol)
            signal)

            skiljer sig från det tidigare:

            i15(okbol=And(diff1,diff2)
            and(test,okbol))

            Fungerar detta?

            Comment


            • #7
              Japp, det ska det göra om jag fatta det hela rätt.
              Du vill alltså att både test och okbol ska vara uppfyllt för att köp skall ske?

              okbol är sant om bollingerbanden är tillräckligt långt ifrån varandra.

              Comment


              • #8
                Ja, jag vill att test och okbol ska vara sant för köp.
                Jag testar scripten senare i em när jag kommer hem.

                Comment


                • #9
                  Den sista omskrivningen behövs inte egentligen. Det har bara funktion när det är tilldelade namn.

                  Nu plockar man från minnet i signal.
                  Det är alltid sista uttryckets resultat som returneras från scriptet.

                  Behåll denna


                  i15(okbol=And(diff1,diff2)
                  and(test,okbol))

                  De utförs i radordning, så okbol får sitt värde före sista And() körs.

                  Comment


                  • #10
                    Jag har testat scripten, fungerar ok.

                    Det jag sett är ibland att larmen i egna larm kommer annorlunda än de visuella flaggorna för köp/sälj.

                    Detta beror ju på att egna larm visar larmen när de kommer, den visuella flaggan i kursstaplar visas bara när det ex varit köp i hela 15 minuter, då får flaggan vara tänd.

                    Backtestning av script visar ju inte hela sanningen när man kör vinsttest-kontrollerar visuella flaggor och jag skulle på något sätt vilja få till att egna larm signalerar när flaggan varit aktiv i 15 minuter.

                    Ex: egna larm kl.12.45-köp omx4b 695-flagga tänds - ordermodellen aktiveras och köp utförs
                    kl.12.46 - flaggan släcks, det är ej köp längre
                    kl.12.47 - flaggan släckt.
                    kl.13.01 - flaggan släckt.

                    Nu har ett köp skett kl.12.45, fastän ingen flagga syns i intraday-graf.

                    Går det att hålla inne köp i ordermodellen tills flaggan varit tänd i 15 minuter i scripten?

                    Comment


                    • #11
                      Vet inte hur det skall kunna bli skillnad när flagga visas mot när det blir larm. Det är bara längre total dataserie i en graf som man glider över s a s mot larmtesten som lägger upp så att scripten får tillräckligt bakåt för att köra i en enda period dvs nu.(står i syntaxtesten hur många perioder kompilatorn kommer att lägga upp).

                      Så sista datat i en graf är exakt samma data som det scriptet körs på.

                      Det enklaste är ju att agera på färdiga kursstaplar.

                      scriptet:=
                      Aref(scriptet,1)

                      räcker.

                      Att det har varit larm si eller så lång tid under en stapel kan du dock inte göra utan att skriva i annan upplösning.

                      Men en variant kan vara att ha triggerscriptet som vanligt men ovanstående med Aref() i kontrollscript istället.

                      Du får larm direkt och försök att lägga order när triggern slår till. Men inget går iväg förrän 15-minuters perioden är klar och det fortfarande är signal vid utgången av perioden.

                      Sedan är det ju ingen garanti att signalen varit aktiv under 15 hela minuter det kan ju trigga 12 minuter i på perioden och ha varit aktivt i 3 minuter när utgången period slutligen löser ut en order.

                      Comment


                      • #12
                        Hej lfm.

                        I scriptet:

                        sl) jg-Rsi+Sto+Mv-stiger-KÖP
                        r1:=Rsi(14)
                        s1:=Stoch(5)
                        m1:=Mov(C,20,s)
                        ag11:=Gt(r1,Aref(r1,1))
                        ag21:=Gt(s1,Aref(s1,1))
                        ag31:=Gt(m1,Aref(m1,1))
                        ag33:=Hhv(ag31,5)
                        test:=And(ag11,And(ag21,ag33))
                        ag12:=BolBands(20,2.0,u)
                        ag21:=BolBands(20,2.0,l)
                        bolma1:=Mov(ag12,6,s)
                        bolma2:=Mov(ag21,6,s)
                        diff1:=Gt(Div(ag12,ag21),1.006)
                        diff2:=Gt(Div(bolma1,bolma2),1.005)
                        test2:=(okbol=And(diff1,diff2)
                        and(test,okbol))
                        i15(test2)

                        Hur gör jag för kontroll-script med Aref och intraday-prefix?

                        i15(test2)
                        Aref(test2,1)

                        eller ta bort i15() i original-script, ändra till:
                        i15(Aref(test2,1))

                        Comment


                        • #13
                          Alla rader som inte har := i sig är exekverbara rader, och måste omslutas av intradayprefixet.

                          Detta är ok syntax

                          test2:=And(diff1,diff2)
                          i15(Aref(test2,1))

                          om du rättar raden för 'test2' som har extra parenteser och minnesreferens etc.



                          Vet inte riktigt vad du vill göra här:

                          test2:=(okbol=And(diff1,diff2)
                          and(test,okbol))
                          i15(test2)

                          raden and(test,okbol)) är något som kommer att försöka exekveras och har inte rätt antal parenteser. Osäkert vad som händer.

                          Om tanken är att eliminera kod för att provköra annan kod eliminera raden så här kanske. Det har i alla fall ingen funktion här. Något exekveras men landar ingenstans. Sista uttrycket returneras från scriptet.

                          test2:=(okbol=And(diff1,diff2)
                          xx:=and(test,okbol))
                          i15(test2)

                          Comment

                          Working...
                          X