Hej, jag har fått för mig att det skulle kunna vara bra att använda flytande stoploss i en trendföljande aktiestrategi. Jag försöker använda "Stoploss Mini Long" som finns som standardmodell i NAT. Men när jag kör Analysbänken så tar det flera timmar per aktie, så det är lite svår att utvärdera. Någon som kan föreslå några justeringar som gör att skriptet blir snabbare? Alla förslag välkomna.
Det gäller nedan sälj script (jag har flyttat in stoppgräns1 och målantal i skriptet, istället för att ha det som parametrar per aktie) :
{ Stoploss Mini Long }
{ 160829 }
elastisk:=1 { 1=JA 0=NEJ - använd 0 för minifutures}
tid_innan_stäng:=4 { minuter innan stängning }
max_spread_procent:=4 { max tillåten spread i procent }
tidspärr1:=3000 { minuter mellan orderförsök }
stoppgräns1:=-4
målantal:=0
{ }
i1(
öppet=ge(mult(1440,sub(market(c),frac(d))),tid_innan_stäng)
stoppgräns2=sub(1,div(abs(stoppgräns1),100))
lastbuy=LastTrade(B,P)
innehav=Portfolio(v)
index=and(and(eqv(hhv(v,10),0),and(eqv(s,0),eqv(b,0))),gt(llv(c,10),0))
mv1=Mov(if(index,c,b),2,s)
fastmfi=Mov(LinReg(Mfi(3),4),4,e)
mfiner=Lt(LlvBars(fastmfi,2),1)
lt1=LastTrade(B,D)
minSedanKöp=Mult(Sub(d,lt1),1440)
delay_ok=gt(minSedanKöp,tidspärr1)
inpådagen=gt(frac(date()),0.376)
spreadcheck1=lt(div(s,b),add(1,div(max_spread_procent,100)))
spreadcheck2=or(index,and(and(spreadcheck1,gt(s,b)),gt(b,0)))
start=if(and(öppet,ge(d,lasttrade(b,d))),if(spreadcheck2,if(index,c,b),0),0)
maxhittills=hhv(start,2000)
level1=Sub(maxhittills,stoppgräns1)
level2=Mult(maxhittills,stoppgräns2)
level3=if(lt(stoppgräns1,0),level2,level1)
flytstopp1=And(Lt(if(index,c,b),level3),Lt(mv1,level3))
flytstopp2=Lt(if(index,c,b),level3)
flytstopp3=If(elastisk,flytstopp1,flytstopp2)
Draw(If(and(delay_ok,Gt(innehav,målantal)),level3,0),9,rqb)
signal1=And(And(And(or(mfiner,Not(elastisk)),flytstopp3),Gt(innehav,målantal)),Gt(innehav,0))
signal2=And(And(signal1,xor(stoppgräns1,0)),delay_ok)
signal3=and(and(and(and(signal2,inpådagen),öppet),spreadcheck2),or(index,gt(b,0)))
Mult(signal3,10)
)
Tack!!
//David Flyden
Det gäller nedan sälj script (jag har flyttat in stoppgräns1 och målantal i skriptet, istället för att ha det som parametrar per aktie) :
{ Stoploss Mini Long }
{ 160829 }
elastisk:=1 { 1=JA 0=NEJ - använd 0 för minifutures}
tid_innan_stäng:=4 { minuter innan stängning }
max_spread_procent:=4 { max tillåten spread i procent }
tidspärr1:=3000 { minuter mellan orderförsök }
stoppgräns1:=-4
målantal:=0
{ }
i1(
öppet=ge(mult(1440,sub(market(c),frac(d))),tid_innan_stäng)
stoppgräns2=sub(1,div(abs(stoppgräns1),100))
lastbuy=LastTrade(B,P)
innehav=Portfolio(v)
index=and(and(eqv(hhv(v,10),0),and(eqv(s,0),eqv(b,0))),gt(llv(c,10),0))
mv1=Mov(if(index,c,b),2,s)
fastmfi=Mov(LinReg(Mfi(3),4),4,e)
mfiner=Lt(LlvBars(fastmfi,2),1)
lt1=LastTrade(B,D)
minSedanKöp=Mult(Sub(d,lt1),1440)
delay_ok=gt(minSedanKöp,tidspärr1)
inpådagen=gt(frac(date()),0.376)
spreadcheck1=lt(div(s,b),add(1,div(max_spread_procent,100)))
spreadcheck2=or(index,and(and(spreadcheck1,gt(s,b)),gt(b,0)))
start=if(and(öppet,ge(d,lasttrade(b,d))),if(spreadcheck2,if(index,c,b),0),0)
maxhittills=hhv(start,2000)
level1=Sub(maxhittills,stoppgräns1)
level2=Mult(maxhittills,stoppgräns2)
level3=if(lt(stoppgräns1,0),level2,level1)
flytstopp1=And(Lt(if(index,c,b),level3),Lt(mv1,level3))
flytstopp2=Lt(if(index,c,b),level3)
flytstopp3=If(elastisk,flytstopp1,flytstopp2)
Draw(If(and(delay_ok,Gt(innehav,målantal)),level3,0),9,rqb)
signal1=And(And(And(or(mfiner,Not(elastisk)),flytstopp3),Gt(innehav,målantal)),Gt(innehav,0))
signal2=And(And(signal1,xor(stoppgräns1,0)),delay_ok)
signal3=and(and(and(and(signal2,inpådagen),öppet),spreadcheck2),or(index,gt(b,0)))
Mult(signal3,10)
)
Tack!!
//David Flyden
Comment