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.
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.
Comment