Allmänt meddelande

Collapse
No announcement yet.

Terminator

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

  • #46
    Jo, den ligger där som en rest från lite labb-övningar. Det är bara att ta bort den.

    Comment


    • #47
      Lite uppdateringar för Terminator som ger bättre resultat i backtester. Perioden behöver nu inte stänga utanför break-nivåerna, men däremot har vi lagt till en punkt på köpnivån och dragit av en punkt på säljnivån. Dessutom en HHV-sats som "kommer ihåg" om kursen korsat en breaknivå inom 3 perioder för att säkerställa att man får signal tidigare på dagen om trenden var stark dagen innan osv.

      {Terminator long }
      { 110922 30 min }
      { }
      innehav_ok:=Le(Portfolio(v),0)
      period2:=Gt(Frac(d),0.395)
      öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
      stoppsets=And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1)
      stoppsetk=And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1)
      i30(
      stoplevels=Sub(Find(stoppsets,30,Aref(l,2),1),1)
      stoplevelk=Add(Find(stoppsetk,30,Aref(h,2),1),1)
      Draw(stoplevelk,2,dgqb)
      signalk=And(Gt(c,stoplevelk),hhv(lt(aref(l,1),stoplevelk),3))
      köp1=And(And(signalk,period2),öppet)
      köp2=And(köp1,innehav_ok)
      köp3=And(köp2,Gt(l,stoplevels))
      SetGVarIf(0,35,1)
      SetGVarIf(1,35,köp3)
      Mult(köp3,5)
      )



      {Terminator short }
      { 110922 30 min }
      { }
      stängning:=le(mult(1440,sub(market(c),frac(date()))),20)
      innehav_ok:=Ge(Portfolio(v),0)
      period2:=Gt(Frac(d),0.395)
      öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
      stoppsets=And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1)
      stoppsetk=And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1)
      i30(
      stoplevels=Sub(Find(stoppsets,30,Aref(l,2),1),1)
      stoplevelk=Add(Find(stoppsetk,30,Aref(h,2),1),1)
      Draw(stoplevels,2,rqb)
      signals=And(Lt(c,stoplevels),hhv(gt(aref(h,1),stoplevels),3))
      sälj1=And(And(signals,period2),öppet)
      sälj2=And(sälj1,innehav_ok)
      sälj3=And(sälj2,Lt(c,stoplevelk))
      SetGVarIf(0,36,1)
      SetGVarIf(2,36,sälj3)
      Mult(or(stängning,sälj3),5)
      )

      Comment


      • #48
        Är triggern rätt för short. Kanske kommer från backtesting då short blir exit för long.
        Varför inte behålla en vinnande position i mål till tex 7 minuter innan stängning eller kolla om korta trenden är åt rätt håll?

        Comment


        • #49
          Ah, tackar! Rester kvar från backtestningen. Jag korrigerar i manualen.

          Comment


          • #50
            En ändring till, om man skippar sista villkoret får man några punkter till.

            {Terminator long }
            { 110923 30 min }
            { }
            innehav_ok:=Le(Portfolio(v),0)
            period2:=Gt(Frac(d),0.395)
            öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
            stoppsets=And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1)
            stoppsetk=And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1)
            i30(
            stoplevels=Sub(Find(stoppsets,30,Aref(l,2),1),1)
            stoplevelk=Add(Find(stoppsetk,30,Aref(h,2),1),1)
            Draw(stoplevelk,2,dgqb)
            signalk=And(Gt(c,stoplevelk),hhv(lt(aref(l,1),stoplevelk),3))
            köp1=And(And(signalk,period2),öppet)
            köp2=And(köp1,innehav_ok)
            SetGVarIf(0,35,1)
            SetGVarIf(1,35,köp2)
            Mult(köp2,5)
            )


            {Terminator short }
            { 110923 30 min }
            { }
            stängning:=le(mult(1440,sub(market(c),frac(date()))),20)
            innehav_ok:=Ge(Portfolio(v),0)
            period2:=Gt(Frac(d),0.395)
            öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
            stoppsets=And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1)
            stoppsetk=And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1)
            i30(
            stoplevels=Sub(Find(stoppsets,30,Aref(l,2),1),1)
            stoplevelk=Add(Find(stoppsetk,30,Aref(h,2),1),1)
            Draw(stoplevels,2,rqb)
            signals=And(Lt(c,stoplevels),hhv(gt(aref(h,1),stoplevels),3))
            sälj1=And(And(signals,period2),öppet)
            sälj2=And(sälj1,innehav_ok)
            SetGVarIf(0,36,1)
            SetGVarIf(2,36,sälj2)
            Mult(sälj2,5)
            )

            Comment


            • #51
              Jag körde några tester och det verkar som att man får bättre resultat med triggervillkoren sälj2 och köp3. Det blir färre trades och bättre resultat. Särskilt på index. På terminen blir det likvärdiga resultat, men färre trades.

              Comment


              • #52
                Bra dagar för Terminator:



                2011-09-22 +16,75
                2011-09-23 +33,25
                2011-09-26 +12,0
                2011-09-27 +15,0

                Comment


                • #53
                  Ursprungligen postat av Rikard Nilsson Visa inlägg
                  Bra dagar för Terminator:



                  2011-09-22 +16,75
                  2011-09-23 +33,25
                  2011-09-26 +12,0
                  2011-09-27 +15,0


                  Skumt om jag testar i AT8 så får jag bara +1 idag och 68,75 punkter för alla fyra dagarna tillsammans. Är backtestning så orealistisk?

                  Finns det någon sammansatt termin för backtestning? Jag har för mig att jag har läst om det tidigare i forumet...


                  Anders

                  Comment


                  • #54
                    Nja, det går inte att testa så enkelt när det rör sig om både köpta och blankade positioner samtidigt som Exit. Däremot brukar det stämma väldigt bra om man kör backtestning enligt Innehav - Kontant - Innehav, eller Innehav - Blankning - Innehav utan exit-signaler.


                    Hur fick du signalerna idag? Kör du på senaste scriptversionerna ovan?

                    Comment


                    • #55
                      Ursprungligen postat av Rikard Nilsson Visa inlägg
                      Nja, det går inte att testa så enkelt när det rör sig om både köpta och blankade positioner samtidigt som Exit. Däremot brukar det stämma väldigt bra om man kör backtestning enligt Innehav - Kontant - Innehav, eller Innehav - Blankning - Innehav utan exit-signaler.


                      Hur fick du signalerna idag? Kör du på senaste scriptversionerna ovan?

                      Jag har inte kört Terminatorn skarpt idag och i AT8.ans backtestning kör jag med senaste versionen.


                      Anders

                      Comment


                      • #56
                        Jo, men hur ser signalerna ut i backtesten? Vi kan ju dissekera dagens handel och använda signalerna som bra material för att sprida lite ljus över backtestningen i AT8.

                        Comment


                        • #57
                          Jag testade lite snabbt med Kundservice-data:

                          2011-09-27 09:30:00 OMXS301J K 896,50 Innehav
                          2011-09-27 14:41:00 OMXS301J S 901,75 5,25 0,53 05:11:00
                          2011-09-27 15:30:00 OMXS301J K 907,00 Innehav

                          Det stämmer i princip exakt med det jag fick "live" i NAT idag. Till detta ska läggas exit-signalen som kommer kl 17:15 på 921,5. Det blir:

                          Long 896,5
                          Short 901,75 (+5,25)
                          Long 907 (-5,25)
                          Exit 921,5 (+14,5)

                          Summa +14,5

                          Comment


                          • #58
                            Lite mer uppdatering för Terminator-scripten, vi har lagt till ett villkor som kan flytta motsatta break-nivån om H resp L befinner sig "utanför" båda nivåerna. Det betyder i praktiken att man tenderar att "låsa in" en vinst aningen snabbare. I simulering ger det klart bättre resultat.


                            {Terminator long }
                            { 111008 30 min }
                            { }
                            innehav_ok:=Le(Portfolio(v),0)
                            period2:=Gt(Frac(d),0.395)
                            öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
                            stoppsets=And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1)
                            stoppsetk=And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1)
                            i30(
                            stoplevels1=Sub(Find(stoppsets,30,Aref(l,2),1),1)
                            stoplevelk1=Add(Find(stoppsetk,30,Aref(h,2),1),1)
                            stoplevelk2=if(lt(h,stoplevels1),sub(stoplevels1,sub(aref(h,1),aref(l,1))),stoplevelk1)
                            Draw(stoplevelk2,2,dgqb)
                            signalk=and(And(Gt(c,stoplevelk2),gt(c,aref(h,1))),hhv(lt(l,stoplevelk2),2))
                            köp1=And(And(signalk,period2),öppet)
                            köp2=And(köp1,innehav_ok)
                            SetGVarIf(0,35,1)
                            SetGVarIf(1,35,köp2)
                            Mult(köp2,5)
                            )



                            {Terminator short }
                            { 111008 30 min }
                            { }
                            stängning:=le(mult(1440,sub(market(c),frac(date()))),20)
                            innehav_ok:=Ge(Portfolio(v),0)
                            period2:=Gt(Frac(d),0.395)
                            öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
                            stoppsets=And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1)
                            stoppsetk=And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1)
                            i30(
                            stoplevels1=Sub(Find(stoppsets,30,Aref(l,2),1),1)
                            stoplevelk1=Add(Find(stoppsetk,30,Aref(h,2),1),1)
                            stoplevels2=if(gt(l,stoplevelk1),add(stoplevelk1,sub(aref(h,1),aref(l,1))),stoplevels1)
                            Draw(stoplevels2,2,rqb)
                            signals=and(and(lt(c,stoplevels2),lt(c,aref(l,1))),hhv(gt(h,stoplevels2),2))
                            sälj1=And(And(signals,period2),öppet)
                            sälj2=And(sälj1,innehav_ok)
                            SetGVarIf(0,36,1)
                            SetGVarIf(2,36,sälj2)
                            Mult(sälj2,5)
                            )

                            Comment


                            • #59
                              Detta tror jag är en bra ide´ hur gick denna variant i fredags i backtest ?
                              Det var förra varianten i statistiken va ?

                              Mvh
                              Rikard B

                              Comment


                              • #60
                                Stämmer, det var förra versionen. Nya gick så här:

                                2011-10-07 10:59:00 Short 915,50
                                2011-10-07 14:15:00 Long 922,00
                                2011-10-07 15:06:00 Short 924,75
                                2011-10-07 17:15:00 Exit 915,50


                                Comment

                                Working...
                                X