Allmänt meddelande

Collapse
No announcement yet.

stoppa ut/ta maxvinst

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

  • stoppa ut/ta maxvinst

    Hej!
    Jag skulle vilja ha hjälp med ett stoppa ut sig skript.
    Jag lägger en säljorder på säg 680 via order läggningen på 3kontrakt
    Samtidigt vill jag lägga automatiskt köp tillbaks alla kontrakt om antingen kursen stiger 2p från köpkurs , eller när kursen går min väg nedåt så köps den tillbaks när kursen vänder 2p från lägsta notering.
    Om jag förstått det rätt så ligger min stoporder hos mej tills mitt program känner av att kursen bryter ett av mina stoppmål och först då skickas stoppordern till nordnet för avslut??

  • #2
    Det är väl bara en liten justering på ett script du höll på med från Per Wahlin.

    Byt multiplikation mot en subtraktion på 2 istället(om jag minns rätt).

    Har du det scriptet kan jag modifiera det här?

    Comment


    • #3
      Hej Lasse!
      Så här ser Pers skript ut

      Först triggerscriptet för stoplossen på såld termin:
      --------------------------------------------------------------------------
      sl) Buy omx - Flytande stoploss 2-4 %
      {För såld OMX-termin }
      {---------------------------------------------}
      {signaler bara vid innehav}
      innehav0:=LT(portfolio(V),0)
      fakeHögsta:=99999
      {---------------för produktion----------------------}
      bakåt1:=300
      eftersälj:=ge(d,LastTrade(s,d))
      säljkurs:=if(eftersälj,LastTrade(s,p),fakeHögsta)
      {-------------------för test---------------}
      bxakåt1:=60
      exftersälj:=1
      sxäljkurs:=fakeHögsta
      {---------------------------------------------}
      {-- Absolut stoploss 2 % av säljkurs --}
      {-- eller flytande stoploss 4 % --}
      absolutStoploss0:=1.02
      flytandeStoploss0:=1.04
      jfrlevel0:=if(eftersälj,l,fakeHögsta)
      min0:=llv(jfrlevel0,bakåt1)
      stoplevel0:=mn(mult(säljkurs,absolutStoploss0),mult(min0,flytandeStoploss0))
      {-- undvik tillfällig spik genom att testa mot de två senaste perioderna --}
      stabiltfall0:=2
      stoploss0:=llv(gt(h,stoplevel0),stabiltfall0)
      i10(and(innehav0,stoploss0))
      --------------------------------------------------------------------------



      Sedan antalsscriptet:
      --------------------------------------------------------------------------
      va) Allt innehav av aktuell säljtermin
      mult(Portfolio(v),-1)
      --------------------------------------------------------------------------

      Om man vill testa scripten flyttar man x i variabelnamnen
      från testavdelningen till produktionsavdelningen,
      så syns det i diagrammet ungefär var den flytande stoplossen skulle ha slagit till
      --------------------------------------------------------------------------

      Comment


      • #4
        sl) Buy omx - Flytande stoploss 2-4 %
        {För såld OMX-termin }
        {---------------------------------------------}
        {signaler bara vid innehav}
        innehav0:=LT(portfolio(V),0)
        fakeHögsta:=99999
        {---------------för produktion----------------------}
        bakåt1:=300
        eftersälj:=ge(d,LastTrade(s,d))
        säljkurs:=if(eftersälj,LastTrade(s,p),fakeHögsta)
        {-------------------för test---------------}
        bxakåt1:=60
        exftersälj:=1
        sxäljkurs:=fakeHögsta
        {---------------------------------------------}
        {-- Absolut stoploss 2 punkter av säljkurs --}
        {-- eller flytande stoploss 4 punkter --}
        absolutStoploss0:=2
        flytandeStoploss0:=4
        jfrlevel0:=if(eftersälj,l,fakeHögsta)
        min0:=llv(jfrlevel0,bakåt1)
        stoplevel0:=mn(add(säljkurs,absolutStoploss0),add(min0,flytandeStoploss0))
        {-- undvik tillfällig spik genom att testa mot de två senaste perioderna --}
        stabiltfall0:=2
        stoploss0:=llv(gt(h,stoplevel0),stabiltfall0)
        i10(and(innehav0,stoploss0))
        --------------------------------------------------------------------------

        stoplevel0:=mn(add(säljkurs,absolutStoploss0),add(min0,flytandeStoploss0))

        Nyckeländringen är här då. Addera i absoluta punkter istället för multiplikation med en faktor.

        Comment


        • #5
          Hemskt mycket tack Lasse!
          Jag var vist närmare lösningen än vad jag fattade. Det är krångligt att begripa sig på dessa stopp/loss skript som inte går att testa så bra. All heder till er som bygger.
          <
          Då behövs inget antal skript antar jag,om jag vill köpa tillbaks rubbet? Är det ”innehav0” som ser till det?


          Motsvarande triggerscript för köpt termin ser "KANSKE" ut så här??
          --------------------------------------------------------------------------
          sl) Sell omx - Flytande stoploss 2-4 p
          {För köpt OMX-termin }
          innehav0:=GT(portfolio(V),0)
          bakåt1:=300
          efterköp:=ge(d,LastTrade(b,d))
          köpkurs:=LastTrade(b,p)
          absolutStoploss0:=2
          flytandeStoploss0:=4
          jfrlevel0:=if(efterköp,h,0)
          max0:=hhv(jfrlevel0,bakåt1)
          {ELLER SKALL DET VARA SUB------------------------------}
          stoplevel0:=mx(add(köpkurs,absolutStoploss0),add(max0,flytandeStoploss0))
          {-- undvik tillfällig spik genom att testa mot de två senaste perioderna --}
          stabiltfall0:=2
          stoploss0:=llv(lt(l,stoplevel0),stabiltfall0)
          i10(and(innehav0,stoploss0))

          Comment


          • #6
            Nja, innehav0 öppnar bara luckan så signalerna kan komma fram alls i sista AND()-gaten. Om man inte har något innehav så kan scriptet inte lösa ut.

            Om scriptet hade en faktor som var mindre än 1.0 så ger ju multiplikation ett mindre tal än det som faktorn multipliceras med.

            Så det skall vara SUB() istället.

            Comment


            • #7
              Kalas bra det här!
              Då skulle jag vilja ha svar på några frågor så att jag känner mej säker i hur det kommer att agera.
              Jag köper på kvällen 3 köp kontrakt för uppgång nästkommande dag för 680.
              #1 kursen öppnar på 675 på morgonen. Får jag avslut på 675 då?
              #2 kursen öppnar på 685 på morgonen ,och börjar sen sjunka .Blir det avslut när kursen når 681?

              sl) Sell omx - Flytande stoploss 2-4 p
              {För köpt OMX-termin }
              innehav0:=3 st kontrakt ???----------
              bakåt1:=300
              efterköp:=ge(d,Lasttrade(b,d))
              köpkurs:=LastTrade(b,680)???--------------
              absolutStoploss0:=2
              flytandeStoploss0:=4
              jfrlevel0:=if(efterköp,h,0)
              max0:=hhv(jfrlevel0,bakåt1)
              {det största av värdena 678 och 681 retuneras ???-----------------}
              stoplevel0:=mx(sub(680,2),sub(685,4))
              {-- undvik tillfällig spik genom att testa mot de två senaste perioderna --}
              stabiltfall0:=2
              stoploss0:=llv(lt(l,681),2)
              {terminen säljs för 681 ???------------}
              i10(and(3st,stoploss0))
              Är detta ett bra resonemang att testa var skriptet kommer att lösa vid detta tillfälle? Har jag resonerat rätt?

              Comment


              • #8
                Du du plockar för mycket med absoluta talvärden.

                Tycker du skall använda tilldelade namn så långt det går.

                datum:=20040525
                timmar:=17
                minuter:=00
                efterköp:=ge(d,add(Date(datum),div(add(mult(timmar,60),minuter),1440))
                köpkurs:=680

                sedan kör du hela scriptet original som det är.

                Så bestäm vilken som är simulerad köptidpunkt och resten ger sig.

                Comment


                • #9
                  Hej!
                  Ibland blir jag så trött på mej skälv, när jag inte förstår. Så här antar jag att du tänkt dej, men jag får error när jag testar, suck.

                  datum:=20040525
                  timmar:=17
                  minuter:=00
                  efterköp:=ge(d,add(Date(datum),div(add(mult(timmar,60),minuter),1440))
                  köpkurs:=680
                  innehav0:=GT(portfolio(V),0)
                  bakåt1:=300
                  absolutStoploss0:=2
                  flytandeStoploss0:=4
                  jfrlevel0:=if(efterköp,h,0)
                  i10(
                  max0=hhv(jfrlevel0,bakåt1)
                  stoplevel0=mx(sub(köpkurs,absolutStoploss0),sub(max0,flytandeStoploss0))
                  stabiltfall0=2
                  stoploss0=llv(lt(l,stoplevel0),stabiltfall0)
                  and(inehav0,stoploss0)
                  )

                  Comment


                  • #10
                    Du använder något som heter inehav0 men har definierat något som heter innehav0.

                    Prova och se om det var allt. Annars såg det bra ut vid en hastig titt.

                    Comment


                    • #11
                      Flytta också upp stabiltfall0 till en rad := ovanför intradayprefixet. Minnesreferenser förväntar sig en funktion som skall ladda ett värde.

                      Annars för om det så det blir

                      stabiltfall0=add(0,2)

                      Egentligen tycker jag det förstnämnda då det är snabbare och inte ger något kod som skall köras.

                      Comment


                      • #12
                        Hej!
                        Efter att jag gjort det du bad mej om och det fortfarande ”errar”så provade jag din andra variant du gav mej i en annan sträng.
                        Nu får jag i alla fall OK men signalerna uteblir.
                        “i10(and(1,stoploss0))” så här får jag signaler men “innehav0” vill inte vara med och leka??

                        efterköp:=ge(d,Date(20040504.5))
                        köpkurs:=687
                        innehav0:=GT(portfolio(V),0)
                        bakåt1:=300
                        absolutStoploss0:=2
                        flytandeStoploss0:=4
                        jfrlevel0:=if(efterköp,h,0)
                        max0:=hhv(jfrlevel0,bakåt1)
                        stoplevel0:=mx(sub(köpkurs,absolutStoploss0),sub(max0,flytandeStoploss0))
                        stabiltfall0:=2
                        stoploss0:=llv(lt(l,stoplevel0),stabiltfall0)
                        i10(and(innehav0,stoploss0))

                        Comment


                        • #13
                          innehav0 är en test att du verkligen har ett innehav. Om du inte har det släpper systemet inte igenom signalen.

                          Så din '1' du satte istället behövs för backtesting, annars inga flaggor såvida du inte har innehav just då du testar.

                          Portfolio(v) plockar ju fram antalet du äger just nu. Och man testar att det innehavet är större än noll. Detta sätts med And() som villkor för att släppa igenom den andra signalen på slutet.

                          Comment


                          • #14
                            Hej.
                            Jag testade detta scriptet i dag men det funkade ju inte som jag trodde att det skulle, antingen har jag kopierat fel eller så har jag fått det om bakfoten hel och hållet.

                            {För såld OMX-termin }
                            {---------------------------------------------}
                            {signaler bara vid innehav}
                            innehav0:=LT(portfolio(V),0)
                            fakeHögsta:=99999
                            {---------------för produktion----------------------}
                            bakåt1:=300
                            eftersälj:=ge(d,LastTrade(s,d))
                            säljkurs:=if(eftersälj,LastTrade(s,p),fakeHögsta)
                            {-------------------för test---------------}
                            bxakåt1:=60
                            exftersälj:=1
                            sxäljkurs:=fakeHögsta
                            {---------------------------------------------}
                            {-- Absolut stoploss 2 punkter av säljkurs --}
                            {-- eller flytande stoploss 4 punkter --}
                            absolutStoploss0:=2
                            flytandeStoploss0:=4
                            jfrlevel0:=if(eftersälj,l,fakeHögsta)
                            min0:=llv(jfrlevel0,bakåt1)
                            stoplevel0:=mn(add(säljkurs,absolutStoploss0),add(min0,flytandeStoploss0))
                            {-- undvik tillfällig spik genom att testa mot de två senaste perioderna --}
                            stabiltfall0:=2
                            stoploss0:=llv(gt(h,stoplevel0),stabiltfall0)
                            i10(and(innehav0,stoploss0))

                            Jag sålde 5 kont. på 674.75 och sedan gick det ner till 670.50 och därefter upp till 672.50 då det enligt min uppfattning borde löst, eller?

                            Under dagen var det uppe i som mest 674.25 utan att köpa tillbaka, vad är fel?

                            Flytande Stoploss 0,35/0,8% Köp löste därimot på 674,25 vilket väl var Ok.

                            Comment


                            • #15
                              Jag får det till följande utifrån dina egna siffror.

                              Minsta av 674.75+2=676.75 och 670.5+4=674.5

                              Så High i en 10-minuters period måste ha varit över 674.5, vilken inte var utan bara upp till 672.5.

                              Så om din avsikt var två punkter från en botten så sätt även andra stoppvärdet till 2.

                              Comment

                              Working...
                              X