Allmänt meddelande

Collapse
No announcement yet.

Flytande stoploss

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

  • Flytande stoploss

    Hej

    jag hittade detta stoploss från en av Rikards trådar. Dock vill den inte riktigt samarbeta med mig. Tänkte mig att ändra orginalet som är i % till antal punkter i ex ett index eller kr i aktier. Vore snällt om någon kunde hitta felet, eftersom den aldrig ger ut några säljsingnaler

    Orginal

    { STOPLOSS }
    flytnivå:=0.98
    bakåt1:=480
    lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
    efterinköp=if(ge(d,getval(3)),h,0)
    highlevelb=hhv(efterinköp,bakåt1)
    stoppok=gt(getval(3),getval(4))
    köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
    stoppkurva=mult(highlevelb,flytnivå)
    stoppsälj=and(stoppok,le(l,stoppkurva))
    lasttrades=Retval(if(And(stoppsälj,gt(getval(3),getval(4))),D,Getval(4)),4)
    draw(if(stoppok,stoppkurva,0),2,rqb)
    mult(stoppsälj,25)

    Nytt

    { STOPLOSS }
    flytnivå:=20 {Förut var det i procent och jag vill ha i punkter på ett index}
    bakåt1:=480
    lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
    efterinköp=if(ge(d,getval(3)),h,0)
    highlevelb=hhv(efterinköp,bakåt1)
    stoppok=gt(getval(3),getval(4))
    köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
    stoppkurva=sub(highlevelb,flytnivå) {Byter ut mult till sub eftersom jag vill ta bort de 20 punkterna från högsta värdet från last trade}
    stoppsälj=and(stoppok,le(l,stoppkurva))
    lasttrades=Retval(if(And(stoppsälj,gt(getval(3),getval(4))),D,Getval(4)),4)
    draw(if(stoppok,stoppkurva,0),2,rqb)
    mult(stoppsälj,25)

  • #2
    Sl

    Hej,

    Har du kopplat någon köpsignal till variabeln "köpentry"?
    T.ex. köpentry:=Gt(C,Ref(C,1)) annars funkar det inte...
    NiclasGBG

    Comment


    • #3
      Hej, tack Niclas

      jag har ett köp skript kopplat till det och det löse sig ok.Problemet är bara att Autostock nu stängs ner när jag kör det i analysbänken.


      Två nya frågor

      jag testade och köra det här mot index, dock blir det en massa noll affärer även fast jag har 40 i flytnivå....varför?

      Sedan undrar jag hur man kan koppla ihop ett säljskript som går vid sidan om stoplossen?

      m1:=mov(c,5,s)
      m2:=Mov(c,100,e)
      stigande:=gt(m1,aref(m1,3))
      köpentry:=and(cross(m1,m2),stigande)

      { STOPLOSS }
      flytnivå:=40
      bakåt1:=480
      lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
      efterinköp=if(ge(d,getval(3)),h,0)
      highlevelb=hhv(efterinköp,bakåt1)
      stoppok=gt(getval(3),getval(4))
      köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
      stoppkurva=sub(highlevelb,flytnivå)
      stoppsälj=and(stoppok,le(l,stoppkurva))
      lasttrades=Retval(if(And(stoppsälj,gt(getval(3),getval(4))),D,Getval(4)),4)
      draw(if(stoppok,stoppkurva,0),2,rqb)
      mult(stoppsälj,25)

      Comment


      • #4
        hmm jag får ingen retsida på detta.

        jag testade nu att köra skriptet nedan i omx de senaste 20 dagarna i analys bänken. Men får en massa noll avslut, vad gör jag för fel?
        ----------------------------------------

        2010-02-09 16:12:00 OMXS30 K 951,03 Innehav
        2010-02-09 16:12:00 OMXS30 S 951,03 0,00 0,00 00:00:00
        2010-02-10 16:08:00 OMXS30 K 934,73 Innehav
        2010-02-10 16:08:00 OMXS30 S 934,73 0,00 0,00 00:00:00
        2010-02-11 09:01:00 OMXS30 K 945,10 Innehav
        2010-02-11 09:01:00 OMXS30 S 945,10 0,00 0,00 00:00:00
        2010-02-12 11:30:00 OMXS30 K 935,45 Innehav
        2010-02-12 11:30:00 OMXS30 S 935,45 0,00 0,00 00:00:00
        2010-02-15 16:49:00 OMXS30 K 920,00 Innehav
        2010-02-15 16:49:00 OMXS30 S 920,00 0,00 0,00 00:00:00
        2010-02-16 09:01:00 OMXS30 K 931,03 Innehav
        2010-02-16 09:01:00 OMXS30 S 931,03 0,00 0,00 00:00:00
        2010-02-16 10:30:00 OMXS30 K 933,16 Innehav
        2010-02-16 10:30:00 OMXS30 S 933,16 0,00 0,00 00:00:00
        2010-02-17 09:01:00 OMXS30 K 940,58 Innehav
        2010-02-17 09:01:00 OMXS30 S 940,58 0,00 0,00 00:00:00
        2010-02-17 16:34:00 OMXS30 K 945,02 Innehav
        2010-02-23 16:17:00 OMXS30 S 943,35 -1,67 -0,18 33:43:00
        2010-02-23 16:17:00 OMXS30 K 943,35 Innehav
        2010-02-09 10:16 - 2010-02-23 00:00 OMXS30 -0,18% 33:43:00 00:00:00 33:43:00 59:47:00 36,06 0,00 36,06 63,94
        --------------------------------
        Totalt Avkastning -1.67 kr -0.18% på 9 affärer under 33:43:00 timmar
        Av dessa blankat 0 st med avkastning 0.00 kr 0.00%
        Innehav 8 st med vinst 0.00 kr 0.00%
        Innehav 1 st med förlust -1.67 kr -0.18%
        Blankning 0 st med vinst 0.00 kr 0.00%
        Blankning 0 st med förlust 0.00 kr 0.00%


        -----------------------------------






        sl) Flytstopp inkl 1 min Macd köp och tp

        köpentry:=Macd(b)

        { STOPLOSS }
        flytnivå:=15
        takeprofit:=5
        bakåt1:=480
        i1(
        lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
        efterinköp=if(ge(d,getval(3)),h,0)
        highlevelb=hhv(efterinköp,bakåt1)
        stoppok=gt(getval(3),getval(4))
        köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
        stoppkurva=sub(highlevelb,flytnivå)
        stoppsälj=and(stoppok,le(l,stoppkurva))
        sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
        lasttrades=Retval(if(And(Or(sellprofit,stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
        draw(if(stoppok,stoppkurva,0),2,rqb)
        mult(Or(stoppsälj,sellprofit),25)
        )

        Comment


        • #5
          Hej,

          Sälj är alltid aktiv eftersom du säljer samtidigt som du köper. Testa genom att tex sätta klammer runt ett vilkor åt gången och sätt in noll istället för att kolla om detta vilkor är aktivt. Ex: mult(Or({stoppsälj}0,sellprofit),25). Fortsätt så bakåt i kedjan och du hittar ditt fel.

          Kanske är flytnivån för högt, du har 15 och tidigare var det 0.98.
          Last edited by JBG; 2010-03-08, 21:46.

          Comment


          • #6
            Det fungerar när jag provar. Det är viktigt att man kör simuleringen med Animering aktiverad. Anslut scriptet till instrumentet så kan du även se stoppkurvan och när TP löser ut.

            Comment


            • #7
              Hej,

              Tack för all hjälp! men något är galet.
              Det jobbiga är att autostock stängs ner varannan gång jag kör detta skript i analysbänken, lite irriterande.

              För jag antar att jag måste lägga in macd skriptet som ett köpskript bland köpskitpen och sedan väljer jag skriptet ovan som säljskript, ändå så blir det inga affärer även fast grafen ser bra ut.

              och jag kör med animeringen aktiverad.

              Någon kanske kan klistra in i forumet de exakta skripten på på köp och sälj=(skriptet som jag la in tidigare) för att se vad för fel jag gör.


              En annan mer teoretisk fråga är hur man kopplar ihop ett säljskript vid sidan om den flytande stoplossen.

              Blir det en Or( , ) eller är det fel sätt att lösa det på.

              Sälj:=Or(stoploss,Säljskript)
              i1(
              mult(sälj,10)
              )

              Comment


              • #8
                Om det kraschar är ju något garanterat fel, så jag skulle kolla så att värdena för "Max datastack" och "Max antal anrop" i Preferenser > Övrigt är tilltagna ordentligt. Datastacken kan man sätta till minst 50000 och max anrop till 2000.

                Jag provade med följande och fick helt ok resultat: (Ändrade till 3 minuters upplösning så att signalerna kommer något glesare)

                Köpscript

                i3(
                Macd(b)
                )


                Stoploss:

                köpentry:=Macd(b)

                { STOPLOSS }
                flytnivå:=5
                takeprofit:=3
                bakåt1:=480
                i3(
                lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
                efterinköp=if(ge(d,getval(3)),h,0)
                highlevelb=hhv(efterinköp,bakåt1)
                stoppok=gt(getval(3),getval(4))
                köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
                stoppkurva=sub(highlevelb,flytnivå)
                stoppsälj=and(stoppok,le(l,stoppkurva))
                sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
                lasttrades=Retval(if(And(Or(sellprofit,stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
                draw(if(stoppok,stoppkurva,0),2,rqb)
                mult(Or(stoppsälj,sellprofit),25)
                )



                2010-03-02 10:06:00 OMXS300C K 964,00 Innehav
                2010-03-02 12:45:00 OMXS300C S 971,00 7,00 0,67 02:39:00
                2010-03-02 13:49:00 OMXS300C K 970,50 Innehav
                2010-03-03 09:13:00 OMXS300C S 974,50 4,00 0,35 03:54:00
                2010-03-03 10:32:00 OMXS300C K 975,75 Innehav
                2010-03-03 15:49:00 OMXS300C S 979,00 3,25 0,27 05:17:00
                2010-03-03 17:04:00 OMXS300C K 980,50 Innehav
                2010-03-03 17:25:00 OMXS300C S 983,00 2,50 0,19 00:21:00
                2010-03-03 17:26:00 OMXS300C K 982,50 Innehav
                2010-03-04 09:56:00 OMXS300C S 981,75 -0,75 -0,14 01:00:00
                2010-03-04 10:50:00 OMXS300C K 981,50 Innehav
                2010-03-04 12:45:00 OMXS300C S 984,50 3,00 0,25 01:55:00
                2010-03-04 13:12:00 OMXS300C K 984,50 Innehav
                2010-03-04 16:16:00 OMXS300C S 982,00 -2,50 -0,31 03:04:00
                2010-03-04 16:44:00 OMXS300C K 980,50 Innehav
                2010-03-04 17:24:00 OMXS300C S 985,00 4,50 0,40 00:40:00
                2010-03-05 09:59:00 OMXS300C K 986,50 Innehav
                2010-03-05 11:55:00 OMXS300C S 989,25 2,75 0,22 01:56:00
                2010-03-05 13:17:00 OMXS300C K 989,00 Innehav
                2010-03-05 14:30:00 OMXS300C S 992,50 3,50 0,29 01:13:00
                2010-03-05 15:04:00 OMXS300C K 993,00 Innehav
                2010-03-05 15:47:00 OMXS300C S 996,25 3,25 0,27 00:43:00
                2010-03-05 17:23:00 OMXS300C K 998,25 Innehav
                2010-03-08 09:00:00 OMXS300C S 1001,75 3,50 0,29 00:07:00
                2010-03-08 10:03:00 OMXS300C K 1001,75 Innehav
                2010-03-08 15:41:00 OMXS300C S 1004,25 2,50 0,19 05:38:00
                2010-03-08 16:20:00 OMXS300C K 1004,75 Innehav
                2010-03-09 09:38:00 OMXS300C S 1000,75 -4,00 -0,46 01:48:00
                2010-03-09 10:11:00 OMXS300C K 999,00 Innehav
                2010-03-09 16:59:00 OMXS300C S 1002,25 3,25 0,27 06:48:00
                2010-03-02 10:06 - 2010-03-09 00:00 OMXS300C 2,75% 37:03:00 00:00:00 37:03:00 13:57:00 72,65 0,00 72,65 27,35
                --------------------------------
                Totalt Avkastning 35.75 kr 2.75% på 15 affärer under 37:03:00 timmar
                Av dessa blankat 0 st med avkastning 0.00 kr 0.00%
                Innehav 12 st med vinst 43.00 kr 3.66%
                Innehav 3 st med förlust -7.25 kr -0.91%
                Blankning 0 st med vinst 0.00 kr 0.00%
                Blankning 0 st med förlust 0.00 kr 0.00%
                Attached Files

                Comment


                • #9
                  hmm

                  jag testade klistra in dina skript och grafen blir som din, så det är något med analysbänken som spökar.

                  Animering per minus i kryssat
                  animera stapel hela stapeln
                  returvärde köp-sälj

                  Handelsstrategier Innehav - kontant - innehav

                  periodisera ingen.

                  Problemet är att den köper och säljer på samma punkt i omx


                  exempel av en lång lista

                  2010-02-25 12:22:00 OMXS30 K 0,00 Innehav
                  2010-02-25 12:38:00 OMXS30 K 0,00 Innehav
                  2010-02-25 12:40:00 OMXS30 K 0,00 Innehav
                  2010-02-25 12:41:00 OMXS30 K 0,00 Innehav
                  2010-02-25 13:39:00 OMXS30 K 0,00 Innehav
                  2010-02-25 13:40:00 OMXS30 K 0,00 Innehav
                  2010-02-25 13:41:00 OMXS30 K 0,00 Innehav
                  2010-02-25 14:34:00 OMXS30 S 0,00 0,00 -1,#J 03:13:00
                  2010-02-25 15:42:00 OMXS30 K 0,00 Innehav
                  2010-02-25 15:43:00 OMXS30 K 0,00 Innehav
                  2010-02-25 15:44:00 OMXS30 K 0,00 Innehav
                  2010-02-26 09:01:00 OMXS30 K 0,00 Innehav
                  2010-02-26 09:01:00 OMXS30 S 0,00 0,00 -1,#J 01:49:00
                  2010-02-26 10:32:00 OMXS30 K 0,00 Innehav
                  2010-02-26 10:33:00 OMXS30 K 0,00 Innehav
                  2010-02-26 10:34:00 OMXS30 K 0,00 Innehav
                  2010-02-26 12:51:00 OMXS30 K 0,00 Innehav
                  2010-02-26 12:52:00 OMXS30 K 0,00 Innehav
                  2010-02-26 12:53:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:00:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:01:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:02:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:17:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:18:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:19:00 OMXS30 K 0,00 Innehav
                  2010-02-26 14:38:00 OMXS30 S 0,00 0,00 -1,#J 04:06:00
                  2010-02-26 14:47:00 OMXS30 K 0,00 Innehav
                  2010-02-26 15:12:00 OMXS30 S 0,00 0,00 -1,#J 00:25:00
                  2010-02-26 16:17:00 OMXS30 K 0,00 Innehav
                  2010-02-26 16:39:00 OMXS30 S 0,00 0,00 -1,#J 00:22:00
                  2010-02-26 17:17:00 OMXS30 K 0,00 Innehav

                  Comment


                  • #10
                    Aha, du kör på index. Jag körde direkt på terminen. Vet inte på rak arm varför det blir fel på index, men jag får samma problem. Ska kolla med Lasse vad som spökar.

                    Det finns en sammansatt termin på forumet som man kan ladda hem och simulera långa körningar på. Om du söker på Sammansatt så hittar du tråden direkt.

                    Den är hyggligt ok fram till mitten av 2009 tror jag, men vi skulle behöva komplettera upp den med terminerna som följer efter.

                    Comment


                    • #11
                      ok tack för hjälpen

                      En annan mer teoretisk fråga är hur man kopplar ihop ett säljskript vid sidan om den flytande stoplossen.

                      Blir det en Or( , ) eller är det fel sätt att lösa det på.

                      Sälj:=Or(stoploss,Säljskript)
                      i1(
                      mult(sälj,10)
                      )

                      Comment


                      • #12
                        Det stämmer, man kopplar på ev villkor med OR-sats om man vill ha stoppsignal eller säljsignal (den som slår till först). Notera att det är kopplat på två ställen nedan, detta för att man ska få med sig tidstämpel på säljsignalen.




                        köpentry:=Macd(b)
                        säljscript:=xxxxxxxxxx

                        { STOPLOSS }
                        flytnivå:=5
                        takeprofit:=3
                        bakåt1:=480
                        i3(
                        lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
                        efterinköp=if(ge(d,getval(3)),h,0)
                        highlevelb=hhv(efterinköp,bakåt1)
                        stoppok=gt(getval(3),getval(4))
                        köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
                        stoppkurva=sub(highlevelb,flytnivå)
                        stoppsälj=and(stoppok,le(l,stoppkurva))
                        sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
                        lasttrades=Retval(if(And(Or(Or(säljscript,sellprofit),stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
                        draw(if(stoppok,stoppkurva,0),2,rqb)
                        mult(Or(Or(säljscipt,stoppsälj),sellprofit),25)
                        )

                        Comment


                        • #13
                          Hej o tack Rikard
                          En följdfråga på det där.

                          Om det är så att jag har ett triggerscript i indexet men skulle vilja att ha stoplossen under värdepappret istället. Hur förmedlar jag via de globala cellerna när "Last trade" inträffar.

                          alltså

                          analyserar med köpskript på index
                          de globala cellerna köper ett annat värdepapper1
                          Då vill jag att stoplossen ska starta i värdepapper1

                          Eftersom det blir väldigt omständligt att ha stoplossen i triggerskriptet som analyserar indexet

                          hoppas du förstår

                          Comment


                          • #14
                            Skulle jag kunna ha köpskriptet under indexet och koppla köpentry i detta skript till de globala cellerna så att den blir en etta när köpskriptet triggar??

                            Då skulle jag inte behöva köpskriptet här ovanför stoplossen?

                            köpentry:=SetGvar(100)

                            { STOPLOSS }
                            flytnivå:=5
                            takeprofit:=3
                            bakåt1:=480
                            i3(
                            lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
                            efterinköp=if(ge(d,getval(3)),h,0)
                            highlevelb=hhv(efterinköp,bakåt1)
                            stoppok=gt(getval(3),getval(4))
                            köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)
                            stoppkurva=sub(highlevelb,flytnivå)
                            stoppsälj=and(stoppok,le(l,stoppkurva))
                            sellprofit=And(stoppok,Gt(c,Add(köppris,takeprofit)))
                            lasttrades=Retval(if(And(Or(Or(säljscript,sellprofit),stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
                            draw(if(stoppok,stoppkurva,0),2,rqb)
                            mult(Or(Or(säljscipt,stoppsälj),sellprofit),25)
                            )

                            Comment


                            • #15
                              För skarp drift är det inga problem att skicka signaler via globala celler, men oftast kan man lösa det enklare genom att koppla scriptet direkt till instrumentet som ska handlas och plocka in index som Extra objekt med Cmpref() för att göra analys på det den vägen.

                              Backtest funkar bara om man tar in index som extra objekt, men för skarp drift fungerar båda varianterna. Så jag skulle behöva veta lite vad du vill göra.

                              Comment

                              Working...
                              X