Allmänt meddelande

Collapse
No announcement yet.

Torstens flytande stop-loss

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

  • #46
    Det hela har funkat galant idag, med gsm-larm och allt när scriptet ändrade till snävare stopp!
    En liten detalj bara: Level1 och level2 måste byta plats!

    Comment


    • #47
      level1:=mult(h,0.99)
      level2:=mult(h,0.98)
      lastbuy:=LastTrade(B,P)
      isbuyplus5:=gt(c,mult(lastbuy,1.05))
      if(isbuyplus5,level1,level2)

      När man fått 5% avkastning så det 'level1' dvs 1% under som snävar åt. Annars är det 2% under som blir nivån.

      'isbuyplus5' multiplicerar och adderar senaste inköpspris med 5%, och jämför om Close är över den nivån och ger SANT i så fall.

      Vet inte, men jag får det att stämma som det är?
      Men jag har inte haft morgonkaffet än

      Comment


      • #48
        Denna arbetar ju per dagskurser som den är. Det är ju den enkla stoplossen baserat på dagens high.

        Om den skall plockas in som komponent i intraday-script så får man plocka in konstruktionen med ett svep bakåt i tiden för High-kursen redan i 'level1' och 'level2' där. Så det blir den nivån man stramar åt emot.

        Comment


        • #49
          Så man kan inte köra så här då???
          Igår löste den nämligen inte på 1.5 % fastän köp skedde på 9.20 och kursen sen varit upp i 9.50.
          Jag provade att kasta om level1 och level2, då löste den direkt!


          flytnivå1:=0.97
          {3% stopp vid köp}
          flytnivå2:=0.985
          {1.5% stopp vid vinst}
          lastbuy:=LastTrade(B,P)
          isbuyplus:=gt(h,mult(lastbuy,1.03))
          {flytnivå ändras vid 3% vinst}
          flytnivå:=if(isbuyplus,flytnivå1,flytnivå2)
          bakåt1:=300
          kortMA:=MOV(h,2,s)
          {elastisk flytnivå 2 perioder}
          start:=if(ge(d,LastTrade(b,d)),kortMA,0)
          max:=hhv(start,bakåt1)
          gräns:=mult(max,flytnivå)
          medv:=mov(C,2,s)
          {elastisk stopp 2 perioder}
          steg1:=LE(medv,gräns)
          {signaler bara vid innehav}
          innehav:=GT(portfolio(V),0)
          säljsignal:=Mult(innehav,steg1)
          mt1:=mult(sub(market(c),frac(d)),1440)
          mt2:=le(mt1,23)
          {tid från stängning i minuter}
          långtMAnu:=MOV(C,100,s)
          långtMAdå:=MOV(ref(C,1),100,s)
          nedåt:=LT(långtMAnu,långtMAdå)
          slutpådag:=AND(nedåt,mt2)
          sälj:=OR(slutpådag,säljsignal)
          i10(sälj)

          Comment


          • #50
            Jag tror inte scriptet slutligen ser ut som du tänkt dig.

            Denna raden
            flytnivå:=if(isbuyplus,flytnivå1,flytnivå2)


            gör att uttrycken 'flytnivå1' och 'flytnivå2' ersätts med hela raden efter likhetstecknen.

            Jag tror kompilatorn gör sök-ersätt direkt efter likhetstecknen till scriptet slut. Inte från nästa rad.

            Så generellt bör inte ett tilldelat namn någonsin få vara delnamn av ett annat tilldelat namn. Använd siffror i varje tilldelat namn.

            Comment


            • #51
              Test avb Rikards/ Torstens "dubbelscript"

              Jag har testat det ursprungliga scriptet

              flytnivå1:=0.985
              {1.5% stopp vid vinst}
              flytnivå2:=0.95
              {3% stopp vid köp}
              lastbuy:=LastTrade(B,P)
              isbuyplus:=gt(h,mult(lastbuy,1.03)) {här alltså}
              {flytnivå ändras vid 3% vinst}
              flytnivå:=if(isbuyplus,flytnivå1,flytnivå2)
              bakåt1:=300
              kortMA:=MOV(h,2,s)
              {elastisk flytnivå 2 perioder}
              start:=if(ge(d,LastTrade(b,d)),kortMA,0)
              max:=hhv(start,bakåt1)
              gräns:=mult(max,flytnivå)
              medv:=mov(C,2,s)
              {elastisk stopp 2 perioder}
              steg1:=LE(medv,gräns)
              {signaler bara vid innehav}
              innehav:=GT(portfolio(V),0)
              säljsignal:=Mult(innehav,steg1)
              mt1:=mult(sub(market(c),frac(d)),1440)
              mt2:=le(mt1,23)
              {tid från stängning i minuter}
              långtMAnu:=MOV(C,100,s)
              långtMAdå:=MOV(ref(C,1),100,s)
              nedåt:=LT(långtMAnu,långtMAdå)
              slutpådag:=AND(nedåt,mt2)
              sälj:=OR(slutpådag,säljsignal)
              I30(mult(innehav,gräns))

              på Tele2 B inköpt för 207 den 02-11-06 ca kl 10:00.

              Samt även gjort om den som nedan till att visa kurva.

              flytnivå1:=0.985
              {1.5% stopp vid vinst}
              flytnivå2:=0.95
              {3% stopp vid köp}
              lastbuy:=LastTrade(B,P)
              isbuyplus:=gt(h,mult(lastbuy,1.03)) {här alltså}
              {flytnivå ändras vid 3% vinst}
              flytnivå:=if(isbuyplus,flytnivå1,flytnivå2)
              bakåt1:=300
              kortMA:=MOV(h,2,s)
              {elastisk flytnivå 2 perioder}
              start:=if(ge(d,LastTrade(b,d)),kortMA,0)
              max:=hhv(start,bakåt1)
              gräns:=mult(max,flytnivå)
              medv:=mov(C,2,s)
              {elastisk stopp 2 perioder}
              steg1:=LE(medv,gräns)
              {signaler bara vid innehav}
              innehav:=GT(portfolio(V),0)
              säljsignal:=Mult(innehav,steg1)
              mt1:=mult(sub(market(c),frac(d)),1440)
              mt2:=le(mt1,23)
              {tid från stängning i minuter}
              långtMAnu:=MOV(C,100,s)
              långtMAdå:=MOV(ref(C,1),100,s)
              nedåt:=LT(långtMAnu,långtMAdå)
              slutpådag:=AND(nedåt,mt2)
              sälj:=OR(slutpådag,säljsignal)
              I30(mult(innehav,gräns))

              Kurvan visas då snyggt och prydligt men med följande egenheter:

              Efter att ha passerat 3% gränsen vid 213.2 går kurvan snyggt och prydlit upp till nivå 0,985 och stannar där tills kursen börjar gå ner igen vid 215 02-11-07 11:00. Då går den ner och lägger sig på 0,97 nivån igen (208,55) och stannar där tills kurskurvan
              möter den nivån igen underifrån. Då pinnar stpl kurvan snabbt upp igen till nivån 215 igen för att sedan snyggt och prydligt följa kurskurvan upp vid 0,985 under kursnivån. Den ligger just nu på 223 sedan 02-11-15 14:00 dvs senaste topp. OBS jag har i den här beskrivningen inte tagit hänsyn till att scriptet jobbar mot ett medelvärde.

              Även flaggorna i säljscriptet visar samma mönster.

              Tyvärr är jag inte kropp att bifoga diagrammet.



              Iden med två stpl nivåer verkar vettig men den högre nivån bör ju ligga kvar som en riktig stplloss på sin högsta nivå enligt devisen: aldrig sänka en stoploss.
              HMS

              Comment


              • #52
                Beror nog på det som jag tror Lasse menar, flytnivå förväxlas med flytnivå1 och flytnivå2. Ska ändra variablernas namn.
                Jag fick ju samma fenomen igår tror jag, fast jag jar inte ritat upp kurvorna.

                Comment


                • #53
                  'hansko's anmärkning är ju också riktig.

                  Gör en hhv() bakåt på 'isbuyplus'-uttrycket. Så att det räcker att det är uppfyllt inom visst perspektiv bakåt, för att följa den snävare nivån.

                  Comment


                  • #54
                    Räcker det inte med att man testar mot H, som ju redan är dagens högsta?

                    isbuyplus:=gt(h,mult(lastbuy,1.03))

                    Comment


                    • #55
                      Per intraday är ju 'H' bara high för en period i detta fallet 10 minuter.

                      Det är därför konstruktionen med att svepa bakåt med HHV() i 'max'-uttrycket finns. Man plockar alltså fram högsta under ett visst perspektiv bakåt.

                      Och det behövs också för att behålla den snävare nivån tillräckligt länge för att passera nivån nedåt, så man inte plötsligt kommer under 3%-avkastningen och sänker nivån igen, utan tar hem vinster redan på 1.5% fallande från toppen.

                      Skillnaden är att 'isbuyplus' är ett logiskt uttryck bara och man vill plocka att man varit 'hemma' s a s dvs att man nått 3%-nivån från inköp. HHV() åstadkommer då en NYLIGEN-händelse som jag kallat det i scriptskolan dvs man undersöker om det nyligen varit uppfyllt.

                      Comment


                      • #56
                        Ok, då är je med! H funkar bara 1 period bakåt. Det förklarar ju varför jag trodde level1 och level2 skulle byta plats igår.....

                        Då är det bara att bege sig hem och scripta ihop resten!

                        Comment


                        • #57
                          Rikard!
                          Har du fått ihopt det med din Scripta?

                          Nyfiken som frågar.
                          HMS

                          Comment


                          • #58
                            Jo, det tror jag men jag väntar på en köpsignal så att jag kan verifiera.
                            Men jag kan posta det idag ändå. Nån annan kanske vågar prova oxå.

                            Comment


                            • #59
                              Hej! Hoppas denna funkar!
                              Rikard



                              level1:=0.985
                              {1.5% stopp vid vinst}
                              level2:=0.97
                              {3.0% stopp vid köp}
                              bakåt1:=300
                              lastbuy:=LastTrade(B,P)
                              buyplus:=gt(h,mult(lastbuy,1.03))
                              {flytnivå ändras vid 3% vinst}
                              isbuyplus:=Hhv(buyplus,bakåt1)
                              flytnivå:=if(isbuyplus,level1,level2)
                              kortMA:=MOV(h,2,s)
                              {elastisk flytnivå 2 perioder}
                              start:=if(ge(d,LastTrade(b,d)),kortMA,0)
                              max:=hhv(start,bakåt1)
                              gräns:=mult(max,flytnivå)
                              medv:=mov(C,2,s)
                              {elastisk stopp 2 perioder}
                              steg1:=LE(medv,gräns)
                              {signaler bara vid innehav}
                              innehav:=GT(portfolio(V),0)
                              säljsignal:=Mult(innehav,steg1)
                              mt1:=mult(sub(market(c),frac(d)),1440)
                              mt2:=le(mt1,23)
                              {tid från stängning i minuter}
                              långtMAnu:=MOV(C,100,s)
                              långtMAdå:=MOV(ref(C,1),100,s)
                              nedåt:=LT(långtMAnu,långtMAdå)
                              slutpådag:=AND(nedåt,mt2)
                              sälj:=OR(slutpådag,säljsignal)
                              i10(sälj)

                              Comment


                              • #60
                                Ett litet problem!

                                Jaha, så har man då ställts inför en ny situation, köporder lägre än föregående köporder. Vad händer då? Jo, stoplossen går omedelbart över på 1.5% stopp! Varför?

                                Mitt lilla "upplysningsscript" larmade oxå!

                                lastbuy:=LastTrade(B,P)
                                stop:=gt(h,mult(lastbuy,1.025))
                                And(stop,portfolio(v))

                                Har det med att göra att det finns LastTrade på högre nivå än dages tidigare i veckan?

                                tittabakåt i stoppen tittar ju 300 perioder bak....

                                Comment

                                Working...
                                X