Allmänt meddelande

Collapse
No announcement yet.

2 stegs stoploss

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

  • 2 stegs stoploss

    Jag lovade att lägga ut dessa scripten i terminatortråden tidigare.

    Detta är en stoploss som lägger en stoppnivå bakom en tagen positon och sedan flyttar nivån ett steg efter att viss vinst uppnåtts, den går att använda till alla script eller modeller och även för manuell handel.

    Jag använder mig av ett globalt konfigureringsscript för att ändra nivåerna i bägge scripten samtidigt, jag brukar ha det scriptet öppet i stora editorn så att jag kan ändra under drift lite smidigt.

    tex.
    stoppnivå_1:=-2.0 (skall vara negativ om man vill ha stoppen "bakom" sig, gäller både long och short, scripten teckenvänder själva)
    stoppnivå_2:=0.5 (nivå dit stoppen flyttas)
    flyttnivå:=1.5 (nivå som flyttar stoppen)

    Se bara till att de globala minnescellerna 500, 501, 502 inte används av andra script.
    Anslut alla 3 scripten till aktuellt papper och bygg en ordermodeller att ansluta som har antals, pris och kontrollscript utöver dessa script (long och short).

    Det är mycket grafik i scripten, det kan man såklart radera om man inte gillar det. Scripten ritar grafik när man är i position, inte annars.
    (ni kommer bli förvånade när ni ser grafiskt hur stor slippen är i verkligheten ibland, det blev jag iallafall)

    3 mörkgröna linjer = nivå där long position togs (mittlinjen=lastbuy)
    3 mörkröda linjer = nivå där short position togs (mittlinjen=lastbuy)
    blå linje1 = triggnivå för att flytta stoppen
    blå linje2 = min eller max hittills sedan pos. togs
    Grön eller röd = aktuell stoppnivå (long pos=röd stopp short pos=grön stopp)

    ***************************************************************************

    sl) konfigureringsscript globalt
    { 2011-04-01 }

    { STOPLOSS PARAMETRAR }
    { 2-steg stoploss }
    stoppnivå_1:=-2.0 { = antal punkter ifrån entry "lastbuy" som stoppnivå_1 sätts }
    stoppnivå_2:=0.5 { = antal punkter ifrån entry "lastbuy" som stoppnivå_2 sätts }
    flyttnivå:=1.5 { = antal punkter ifrån entry "lastbuy" som triggar flytt av stopp från "stoppnivå_1" till "stoppnivå_2" }

    i1(
    setgvarif(stoppnivå_1,500,1) { global minnescell_500 = stoppnivå_1 }
    setgvarif(stoppnivå_2,501,1) { global minnescell_501 = stoppnivå_2 }
    setgvarif(flyttnivå,502,1) { global minnescell_502 = flyttnivå }
    )

    ***************************************************************************

    sl) stoploss_long_2-steg (exit long)
    { 2011-04-01 }

    stoppnivå_1:=getgvar(500) { läs global minnescell_500 = stoppnivå_1 }
    stoppnivå_2:=getgvar(501) { läs global minnescell_501 = stoppnivå_2 }
    flyttnivå:=getgvar(502) { läs global minnescell_502 = flyttnivå }
    köppris:=lasttrade(b,p)
    målpris_flytt:=add(köppris,flyttnivå)
    start:=if(gt(d,lasttrade(b,d)),c,0)
    maxhittills:=hhv(start,500)
    gräns_1:=add(köppris,stoppnivå_1)
    gräns_2:=add(köppris,stoppnivå_2)

    i1(
    trigg=gt(maxhittills,målpris_flytt)
    stopploss=if(trigg,gräns_2,gräns_1)
    exit=and(lt(c,stopploss),gt(portfolio(v),0))

    { GRAFISK PRESENTATION AV NIVÅERNA }
    draw(if(gt(portfolio(v),0),köppris ,0), 0, d g q b )
    draw(if(gt(portfolio(v),0),add(köppris, 0.1) ,0), 1, d g q b )
    draw(if(gt(portfolio(v),0),sub(köppris, 0.1) ,0), 2, d g q b )
    draw(if(gt(portfolio(v),0),målpris_flytt ,0), 3, b q b )
    draw(if(gt(portfolio(v),0),maxhittills ,0), 4, b q b )
    draw(if(gt(portfolio(v),0),stopploss ,0), 5, r q b )
    mult(exit,5)
    )

    ***************************************************************************

    sl) stoploss_short_2-steg (exit short)
    { 2011-04-01 }

    stoppnivå_1:=getgvar(500) { läs global minnescell_500 = stoppnivå_1 }
    stoppnivå_2:=getgvar(501) { läs global minnescell_501 = stoppnivå_2 }
    flyttnivå:=getgvar(502) { läs global minnescell_502 = flyttnivå }
    säljpris:=lasttrade(s,p)
    målpris_flytt:=sub(säljpris,flyttnivå)
    start:=if(gt(d,lasttrade(s,d)),c,9999)
    minhittills:=llv(start,500)
    gräns_1:=sub(säljpris,stoppnivå_1)
    gräns_2:=sub(säljpris,stoppnivå_2)

    i1(
    trigg=lt(minhittills,målpris_flytt)
    stopploss=if(trigg,gräns_2,gräns_1)
    exit=and(gt(c,stopploss),lt(portfolio(v),0))

    { GRAFISK PRESENTATION AV NIVÅERNA }
    draw(if(lt(portfolio(v),0),säljpris ,0), 0, d r q b )
    draw(if(lt(portfolio(v),0),add(säljpris, 0.1) ,0), 1, d r q b )
    draw(if(lt(portfolio(v),0),sub(säljpris, 0.1) ,0), 2, d r q b )
    draw(if(lt(portfolio(v),0),målpris_flytt ,0), 3, b q b )
    draw(if(lt(portfolio(v),0),minhittills ,0), 4, b q b )
    draw(if(lt(portfolio(v),0),stopploss ,0), 5, g q b )
    mult(exit,5)
    )

    ***************************************************************************

    Hoppas det kan vara till nytta

    Mvh Rikard B.
    Last edited by BRB_67; 2011-08-27, 23:17.

  • #2
    Tack, det där ser riktigt trevlig ut.

    Jag tror jag ska försöka bygga in ytterligare en lyftning av stoplossen...



    Anders

    Comment


    • #3
      Om stoplossen utlöses och modellen (som man auto tradar) ännu inte har vänt, hur gör man då för att föndra att modellen strax köper på sig nya kontrakt. Jag skulle vilja kunna spärra signalerna tills signalerna kommer åt andra hållet. Eller kanske en "karens" tid innen signal åt det håller får ske.

      Har du byggt in något liknande i dina modeller? Andra som har några idéer?



      Anders

      Comment


      • #4
        Det går att spara utlöst stopp i en global cell. Sedan nollställa den när portfolio(v) gått åt motsatt håll, stängning samt tidigt på morgonen. Värdet på den globala cellen måste då kollas i triggerscriptet som använder den.

        Det enklaste är att använda lastrade(b,d) eller lasttrade(s,d). Helt enkelt kolla antal minuter från senaste köp och/eller sälj.

        Comment


        • #5
          Kan man göra ett tillägg som gör att stoppen fortsätter upp/ner med " stoppnivån 4.5" efter flyttnivå uppnåtts ?
          Vet inte om jag uttrycker mig vettigt men tanken är att jag sätter en total stopp på 4 p. och om kursen ger en vinst på 5 p. går stoppnivå_2 in och följer med upp/ner med en marginal av 0.5 p flyttnivå.
          En form av " Take Profit " med en möjlighet att kanske göra mer vinst.

          sl) konfigureringsscript globalt
          { 2011-04-01 }

          { STOPLOSS PARAMETRAR }
          { 2-steg stoploss }
          stoppnivå_1:=-4 { = antal punkter ifrån entry "lastbuy" som stoppnivå_1 sätts }
          stoppnivå_2:=4.5 { = antal punkter ifrån entry "lastbuy" som stoppnivå_2 sätts }
          flyttnivå:=5 { = antal punkter ifrån entry "lastbuy" som triggar flytt av stopp från "stoppnivå_1" till "stoppnivå_2" }

          i1(
          setgvarif(stoppnivå_1,500,1) { global minnescell_500 = stoppnivå_1 }
          setgvarif(stoppnivå_2,501,1) { global minnescell_501 = stoppnivå_2 }
          setgvarif(flyttnivå,502,1) { global minnescell_502 = flyttnivå }
          )

          Comment

          Working...
          X