Jag har funderat lite över Terminatorn som jag för tillfället kör. Det händer ju rätt ofta att man har ett antal punkter plus men att tradern ändå slutar på minus.
Borde vi inte försöka bygga in en stoploss i Terminatorn typ att bygga in stoploss mini i strategin. Jag har försökt att i AT8:an backtesta för att se var den optimala stoploss nivån ligger. Ska det vara en flytande stoploss eller helt enkelt säga att om man har plus 5 punkter så flyttar man upp breakenivån till plus minus 0?
Jag hittade en gammal tråd om hur man backtestar med stoploss se http://www.autostock.se/vbulletin/showthread.php?t=1848.
Jag får dock inte backtestningen att fungera. Ni var ju några stycken inblandade i ovanstående tråd. Kanske någon kan se vad det är för fel på nedanstående kod.
Skript för trigger av långa positioner:
{ DITT KÖPSCRIPT }
{Terminator long }
{ 111215 30 min }
datumk_ok:=eqv(int(d),int(date()))
innehavk_ok:=Le(Portfolio(v),0)
period2k:=Gt(Frac(d),0.395)
öppetk=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsetsk=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetkk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1k=Sub(Find(stoppsetsk,30,Aref(l,2),1),1)
stoplevelk1k=Add(Find(stoppsetkk,30,Aref(h,2),1),1)
signalk1k=and(Gt(c,stoplevelkk1),gt(c,aref(h,1)))
signalk2k=and(and(and(and(and(gt(l,aref(l,1)),gt(aref(l,1),aref(l,2))),gt(aref(l,2),aref(l,3))),gt(l,stoplevels1k)),lt(h,stoplevelk1k)),gt(c,aref(h,1) ))
signalk3k=and(signalk2k,lt(frac(d),0.5))
aköpa1k=And(And(or(signalk1k,signalk3k),period2k),öppetk)
köp1=And(And(aköpa1k,innehavk_ok),datumk_ok)
{ DITT BLANKSCRIPT }
{Terminator short }
{ 111215 30 min }
datum_ok=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),15)
innehav_ok=Ge(Portfolio(v),0)
period2=Gt(Frac(d),0.395)
öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsets=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1=Sub(Find(stoppsets,30,Aref(l,2),1),1)
stoplevelk1=Add(Find(stoppsetk,30,Aref(h,2),1),1)
Draw(stoplevels1,2,rqb)
signals1=and(lt(c,stoplevels1),lt(c,aref(l,1)))
signals2=and(and(and(and(and(lt(h,aref(h,1)),lt(aref(h,1),aref(h,2))),lt(aref(h,2),aref(h,3))),lt(h,stoplevelk1)),gt(l,stoplevels1)),lt(c,aref(l,1)))
signals3=and(signals2,lt(frac(d),0.5))
sälj1=And(And(or(signals1,signals3),period2),öppet)
Blank1=And(And(sälj1,innehav_ok),datum_ok)
{ STOPLOSS }
flytnivå:=1.05 {$opt(1.01,1.08,0.01)}
bakåt1:=480
köpentry=And(köp1,tidsignal)
blankentry=and(blank1,tidsignal)
lasttrades=Retval(if(And(blankentry,or(ge(getval(3),getval(4)),eqv(getval(3),0))),D,Getval(4)),4)
efterblank=if(ge(d,getval(4)),l,9999)
lowlevels=llv(efterblank,bakåt1)
stoppok=gt(getval(4),getval(3))
blankpris=find(And(ge(d,getval(4)),lt(ref(d,1),getval(4))),bakåt1,c,1)
stoppkurva=mult(lowlevels,flytnivå)
stoppcover=and(stoppok,ge(h,stoppkurva))
lasttradek=Retval(if(And(Or(köpentry,stoppcover),gt(getval(4),getval(3))),D,Getval(3)),3)
draw(if(stoppok,stoppkurva,9999),2,gqb)
lagra=RetVal(if(köpentry,1,0),1)
mult(Or(köpentry,stoppcover),25)
######################################
Skript för trigger av korta positioner:
{ DITT KÖPSCRIPT }
{Terminator long }
{ 111215 30 min }
datumk_ok:=eqv(int(d),int(date()))
innehavk_ok:=Le(Portfolio(v),0)
period2k:=Gt(Frac(d),0.395)
öppetk=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsetsk=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetkk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1k=Sub(Find(stoppsetsk,30,Aref(l,2),1),1)
stoplevelk1k=Add(Find(stoppsetkk,30,Aref(h,2),1),1)
signalk1k=and(Gt(c,stoplevelk1k),gt(c,aref(h,1)))
signalk2k=and(and(and(and(and(gt(l,aref(l,1)),gt(aref(l,1),aref(l,2))),gt(aref(l,2),aref(l,3))),gt(l,stoplevels1k)),lt(h,stoplevelk1k)),gt(c,aref(h,1) ))
signalk3k=and(signalk2k,lt(frac(d),0.5))
köpa1k=And(And(or(signalk1k,signalk3k),period2k),öppetk)
köp1=And(And(köpa1,innehav_ok),datum_ok)
{ DITT BLANKSCRIPT }
{Terminator short }
{ 111215 30 min }
datum_ok=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),15)
innehav_ok=Ge(Portfolio(v),0)
period2=Gt(Frac(d),0.395)
öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsets=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1=Sub(Find(stoppsets,30,Aref(l,2),1),1)
stoplevelk1=Add(Find(stoppsetk,30,Aref(h,2),1),1)
Draw(stoplevels1,2,rqb)
signals1=and(lt(c,stoplevels1),lt(c,aref(l,1)))
signals2=and(and(and(and(and(lt(h,aref(h,1)),lt(aref(h,1),aref(h,2))),lt(aref(h,2),aref(h,3))),lt(h,stoplevelk1)),gt(l,stoplevels1)),lt(c,aref(l,1)))
signals3=and(signals2,lt(frac(d),0.5))
sälj1=And(And(or(signals1,signals3),period2),öppet)
Blank1=And(And(sälj1,innehav_ok),datum_ok)
{ STOPLOSS }
flytnivå:=0.95 {$opt(0.92,0.99,0.01)}
bakåt1:=480
köpentry=And(köp1,tidsignal)
blankentry=and(blank1,tidsignal)
lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
efterinköp=if(ge(d,getval(3)),h,0)
highlevelb=hhv(efterinköp,bakåt1)
stoppok=gt(getval(3),getval(4))
{köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)}
stoppkurva=mult(highlevelb,flytnivå)
stoppsälj=and(stoppok,le(l,stoppkurva))
lasttrades=Retval(if(And(Or(blankentry,stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
draw(if(stoppok,stoppkurva,0),2,rqb)
lagra=RetVal(if(blankentry,1,0),1)
mult(Or(blankentry,stoppsälj),25)
Anders
Borde vi inte försöka bygga in en stoploss i Terminatorn typ att bygga in stoploss mini i strategin. Jag har försökt att i AT8:an backtesta för att se var den optimala stoploss nivån ligger. Ska det vara en flytande stoploss eller helt enkelt säga att om man har plus 5 punkter så flyttar man upp breakenivån till plus minus 0?
Jag hittade en gammal tråd om hur man backtestar med stoploss se http://www.autostock.se/vbulletin/showthread.php?t=1848.
Jag får dock inte backtestningen att fungera. Ni var ju några stycken inblandade i ovanstående tråd. Kanske någon kan se vad det är för fel på nedanstående kod.
Skript för trigger av långa positioner:
{ DITT KÖPSCRIPT }
{Terminator long }
{ 111215 30 min }
datumk_ok:=eqv(int(d),int(date()))
innehavk_ok:=Le(Portfolio(v),0)
period2k:=Gt(Frac(d),0.395)
öppetk=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsetsk=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetkk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1k=Sub(Find(stoppsetsk,30,Aref(l,2),1),1)
stoplevelk1k=Add(Find(stoppsetkk,30,Aref(h,2),1),1)
signalk1k=and(Gt(c,stoplevelkk1),gt(c,aref(h,1)))
signalk2k=and(and(and(and(and(gt(l,aref(l,1)),gt(aref(l,1),aref(l,2))),gt(aref(l,2),aref(l,3))),gt(l,stoplevels1k)),lt(h,stoplevelk1k)),gt(c,aref(h,1) ))
signalk3k=and(signalk2k,lt(frac(d),0.5))
aköpa1k=And(And(or(signalk1k,signalk3k),period2k),öppetk)
köp1=And(And(aköpa1k,innehavk_ok),datumk_ok)
{ DITT BLANKSCRIPT }
{Terminator short }
{ 111215 30 min }
datum_ok=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),15)
innehav_ok=Ge(Portfolio(v),0)
period2=Gt(Frac(d),0.395)
öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsets=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1=Sub(Find(stoppsets,30,Aref(l,2),1),1)
stoplevelk1=Add(Find(stoppsetk,30,Aref(h,2),1),1)
Draw(stoplevels1,2,rqb)
signals1=and(lt(c,stoplevels1),lt(c,aref(l,1)))
signals2=and(and(and(and(and(lt(h,aref(h,1)),lt(aref(h,1),aref(h,2))),lt(aref(h,2),aref(h,3))),lt(h,stoplevelk1)),gt(l,stoplevels1)),lt(c,aref(l,1)))
signals3=and(signals2,lt(frac(d),0.5))
sälj1=And(And(or(signals1,signals3),period2),öppet)
Blank1=And(And(sälj1,innehav_ok),datum_ok)
{ STOPLOSS }
flytnivå:=1.05 {$opt(1.01,1.08,0.01)}
bakåt1:=480
köpentry=And(köp1,tidsignal)
blankentry=and(blank1,tidsignal)
lasttrades=Retval(if(And(blankentry,or(ge(getval(3),getval(4)),eqv(getval(3),0))),D,Getval(4)),4)
efterblank=if(ge(d,getval(4)),l,9999)
lowlevels=llv(efterblank,bakåt1)
stoppok=gt(getval(4),getval(3))
blankpris=find(And(ge(d,getval(4)),lt(ref(d,1),getval(4))),bakåt1,c,1)
stoppkurva=mult(lowlevels,flytnivå)
stoppcover=and(stoppok,ge(h,stoppkurva))
lasttradek=Retval(if(And(Or(köpentry,stoppcover),gt(getval(4),getval(3))),D,Getval(3)),3)
draw(if(stoppok,stoppkurva,9999),2,gqb)
lagra=RetVal(if(köpentry,1,0),1)
mult(Or(köpentry,stoppcover),25)
######################################
Skript för trigger av korta positioner:
{ DITT KÖPSCRIPT }
{Terminator long }
{ 111215 30 min }
datumk_ok:=eqv(int(d),int(date()))
innehavk_ok:=Le(Portfolio(v),0)
period2k:=Gt(Frac(d),0.395)
öppetk=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsetsk=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetkk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1k=Sub(Find(stoppsetsk,30,Aref(l,2),1),1)
stoplevelk1k=Add(Find(stoppsetkk,30,Aref(h,2),1),1)
signalk1k=and(Gt(c,stoplevelk1k),gt(c,aref(h,1)))
signalk2k=and(and(and(and(and(gt(l,aref(l,1)),gt(aref(l,1),aref(l,2))),gt(aref(l,2),aref(l,3))),gt(l,stoplevels1k)),lt(h,stoplevelk1k)),gt(c,aref(h,1) ))
signalk3k=and(signalk2k,lt(frac(d),0.5))
köpa1k=And(And(or(signalk1k,signalk3k),period2k),öppetk)
köp1=And(And(köpa1,innehav_ok),datum_ok)
{ DITT BLANKSCRIPT }
{Terminator short }
{ 111215 30 min }
datum_ok=eqv(int(d),int(date()))
stängning=le(mult(1440,sub(market(c),frac(date()))),15)
innehav_ok=Ge(Portfolio(v),0)
period2=Gt(Frac(d),0.395)
öppet=ge(mult(1440,sub(market(c),frac(date()))),20)
stoppsets=and(gt(aref(h,2),aref(h,3)),And(And(Gt(Aref(h,1),Aref(h,2)),Gt(Aref(l,1),Aref(l,2))),1))
stoppsetk=and(lt(aref(l,2),aref(l,3)),And(And(Lt(Aref(l,1),Aref(l,2)),Lt(Aref(h,1),Aref(h,2))),1))
stoplevels1=Sub(Find(stoppsets,30,Aref(l,2),1),1)
stoplevelk1=Add(Find(stoppsetk,30,Aref(h,2),1),1)
Draw(stoplevels1,2,rqb)
signals1=and(lt(c,stoplevels1),lt(c,aref(l,1)))
signals2=and(and(and(and(and(lt(h,aref(h,1)),lt(aref(h,1),aref(h,2))),lt(aref(h,2),aref(h,3))),lt(h,stoplevelk1)),gt(l,stoplevels1)),lt(c,aref(l,1)))
signals3=and(signals2,lt(frac(d),0.5))
sälj1=And(And(or(signals1,signals3),period2),öppet)
Blank1=And(And(sälj1,innehav_ok),datum_ok)
{ STOPLOSS }
flytnivå:=0.95 {$opt(0.92,0.99,0.01)}
bakåt1:=480
köpentry=And(köp1,tidsignal)
blankentry=and(blank1,tidsignal)
lasttradek=Retval(if(And(köpentry,or(ge(getval(4),getval(3)),eqv(getval(4),0))),D,Getval(3)),3)
efterinköp=if(ge(d,getval(3)),h,0)
highlevelb=hhv(efterinköp,bakåt1)
stoppok=gt(getval(3),getval(4))
{köppris=find(And(ge(d,getval(3)),lt(ref(d,1),getval(3))),bakåt1,c,1)}
stoppkurva=mult(highlevelb,flytnivå)
stoppsälj=and(stoppok,le(l,stoppkurva))
lasttrades=Retval(if(And(Or(blankentry,stoppsälj),gt(getval(3),getval(4))),D,Getval(4)),4)
draw(if(stoppok,stoppkurva,0),2,rqb)
lagra=RetVal(if(blankentry,1,0),1)
mult(Or(blankentry,stoppsälj),25)
Anders
Comment