Pga stundande jobb inom finansbranschen så kommer jag tvingas avsluta mitt konto hos Autostocks. Jag tänkte därför ge forumet några julklappar i form av strategier jag kodat och använder live.
Om man vidareutvecklar koden, så önskar jag att man delar med sig i den här tråden. Första strategin är ett trendföljande gridsystem för DAX. Ändra max_position för önskad total positionsstorlek. Klar att koppla till minisar med köp och sälj-antal script.
Köpscript
{Climber 1.0 #2}
klocka:=frac(date())
grid:=atr(5)
max_grid:=10
valuta:=cmpref(c,0,a)
Max_position:=1000000
köpantal=int(mult(div(div(mult(max_position,valuta),max_grid),c),valuta))
ma1=mov(c,5,s)
ADX=ema(dx(14),14)
stoppafallet=and(and(gt(adx,aref(adx,1)),gt(adx,25)),lt(c,mov(c,200,s)))
noshort=lt(getgvar(416),1)
innehav1=eqv(portfolio(v),0)
tid1=gt(int(mult(frac(d),1440)),600)
risk=if(lt(c,mov(c,200,s)),3,3)
filter1=or(gt(div(c,mov(c,200,s)),1.0),gt(div(mov(c,200,s),c),1.0))
filter2=and(ge(int(d),add(lasttrade(s,d),3)),eqv(portfolio(v),0))
signal1=gt(c,aref(hhv(c,risk),2))
signal2=gt(ma1,aref(ma1,1))
köp1=and(and(and(and(signal1,signal2),and(filter1,filter2)),innehav1),not(stoppafallet))
setgvarif(0,405,köp1)
setgvarif(köpantal,406,köp1)
sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))
size_snitt=if(gt(c,mov(c,100,s)),if(ge(portfolio(v),mult(4,getgvar(406))),4,6),if(ge(portfolio(v),mult(4,getgvar(406))),1,3))
size_öka=if(gt(c,mov(c,100,s)),if(ge(portfolio(v),mult(4,getgvar(406))),4,6),if(ge(portfolio(v),mult(4,getgvar(406))),1,3))
reenter=and(lt(c,sub(lasttrade(s,p),div(grid,6))),gt(portfolio(v),0))
köp2=and(or(and(gt(c,add(lasttrade(b,p),div(grid,size_öka))),gt(c,portfolio(p))),lt(c,sub(lasttrade(b,p),div(grid,size_snitt)))),gt(portfolio(v),0))
{order}
order1=if(ge(portfolio(v),mult(getgvar(406),10)),0,if(sälj_senast,or(reenter,köp1),if(eqv(portfolio(v),0),köp1,köp2)))
draw(aref(hhv(l,risk),2),4,rqb0)
mult(order1,1)
{@A(0,XX46894F2D)}
SÄLJSCRIPT
{Climber 1.0 SÄLJ #1}
klocka:=frac(date())
grid:=atr(5)
ma1=mov(c,200,s)
innehav1=gt(portfolio(v),0)
size=if(gt(c,mov(c,100,s)),4,6)
momUPP=gt(c,sub(hhv(h,2),mx(mult(mult(0.2,mx(atr(20),atr(5))),0.25),1.25))) { 0.999))}
urskalning1=and(and(and(ge(portfolio(v),mult(size,getgvar(406))),gt(c,add(portfolio(p),div(grid,4)))),gt(c,add(lasttrade(b,p),div(grid,4)))),not(momup p))
urskalning2=and(and(gt(c,portfolio(p)),gt(c,add(lasttrade(s,p),div(grid,4)))),not(momupp))
varning=and(and(ge(portfolio(v),mult(10,getgvar(406))),gt(c,mult(portfolio(p),if(gt(c,ma1),0.995,0.99)))),innehav1)
setgvarif(1,407,varning)
setgvarif(0,407,lt(abs(portfolio(v)),mult(10,getgvar(406))))
stopp2=and(lt(c,mult(portfolio(p),if(gt(c,ma1),0.989,0.98))),eqv(getgvar(407),1))
klimattarget=and(and(lt(c,portfolio(p)),gt(c,aref(hhv(h,10),1))),ge(portfolio(v),mult(getgvar(406),4)))
test=and(or(gt(dayofmonth(),29),lt(dayofmonth(),6)),and(ge(portfolio(v),mult(getgvar(406),10)),gt(c,aref(hhv(h,4),1))))
break_even=and(and(eqv(portfolio(v),mult(getgvar(406),10)),gt(div(c,portfolio(p)),1.005)),innehav1)
setgvarif(1,408,break_even)
setgvarif(0,408,lt(abs(portfolio(v)),mult(getgvar(406),10)))
stopp3=and(eqv(getgvar(408),1),le(c,mult(portfolio(p),1.001)))
stopp1=and(or(or(stopp2,stopp3),klimattarget),innehav1)
setgvarif(1,415,stopp1)
setgvarif(1,405,stopp1)
sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))
sälj1=or(and(innehav1,if(sälj_senast,urskalning2,urskalning1)),stopp1)
mult(sälj1,1)
KÖPANTAL SCRIPT
i1(
köpantal=mult(getgvar(406),1)
mult(köpantal,1)
)
SÄLJANTAL SCRIPT
i1(
stopp=eqv(1,getgvar(405))
sälj1=if(stopp,abs(portfolio(v)),getgvar(406))
mult(sälj1,1)
)
Om man vidareutvecklar koden, så önskar jag att man delar med sig i den här tråden. Första strategin är ett trendföljande gridsystem för DAX. Ändra max_position för önskad total positionsstorlek. Klar att koppla till minisar med köp och sälj-antal script.
Köpscript
{Climber 1.0 #2}
klocka:=frac(date())
grid:=atr(5)
max_grid:=10
valuta:=cmpref(c,0,a)
Max_position:=1000000
köpantal=int(mult(div(div(mult(max_position,valuta),max_grid),c),valuta))
ma1=mov(c,5,s)
ADX=ema(dx(14),14)
stoppafallet=and(and(gt(adx,aref(adx,1)),gt(adx,25)),lt(c,mov(c,200,s)))
noshort=lt(getgvar(416),1)
innehav1=eqv(portfolio(v),0)
tid1=gt(int(mult(frac(d),1440)),600)
risk=if(lt(c,mov(c,200,s)),3,3)
filter1=or(gt(div(c,mov(c,200,s)),1.0),gt(div(mov(c,200,s),c),1.0))
filter2=and(ge(int(d),add(lasttrade(s,d),3)),eqv(portfolio(v),0))
signal1=gt(c,aref(hhv(c,risk),2))
signal2=gt(ma1,aref(ma1,1))
köp1=and(and(and(and(signal1,signal2),and(filter1,filter2)),innehav1),not(stoppafallet))
setgvarif(0,405,köp1)
setgvarif(köpantal,406,köp1)
sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))
size_snitt=if(gt(c,mov(c,100,s)),if(ge(portfolio(v),mult(4,getgvar(406))),4,6),if(ge(portfolio(v),mult(4,getgvar(406))),1,3))
size_öka=if(gt(c,mov(c,100,s)),if(ge(portfolio(v),mult(4,getgvar(406))),4,6),if(ge(portfolio(v),mult(4,getgvar(406))),1,3))
reenter=and(lt(c,sub(lasttrade(s,p),div(grid,6))),gt(portfolio(v),0))
köp2=and(or(and(gt(c,add(lasttrade(b,p),div(grid,size_öka))),gt(c,portfolio(p))),lt(c,sub(lasttrade(b,p),div(grid,size_snitt)))),gt(portfolio(v),0))
{order}
order1=if(ge(portfolio(v),mult(getgvar(406),10)),0,if(sälj_senast,or(reenter,köp1),if(eqv(portfolio(v),0),köp1,köp2)))
draw(aref(hhv(l,risk),2),4,rqb0)
mult(order1,1)
{@A(0,XX46894F2D)}
SÄLJSCRIPT
{Climber 1.0 SÄLJ #1}
klocka:=frac(date())
grid:=atr(5)
ma1=mov(c,200,s)
innehav1=gt(portfolio(v),0)
size=if(gt(c,mov(c,100,s)),4,6)
momUPP=gt(c,sub(hhv(h,2),mx(mult(mult(0.2,mx(atr(20),atr(5))),0.25),1.25))) { 0.999))}
urskalning1=and(and(and(ge(portfolio(v),mult(size,getgvar(406))),gt(c,add(portfolio(p),div(grid,4)))),gt(c,add(lasttrade(b,p),div(grid,4)))),not(momup p))
urskalning2=and(and(gt(c,portfolio(p)),gt(c,add(lasttrade(s,p),div(grid,4)))),not(momupp))
varning=and(and(ge(portfolio(v),mult(10,getgvar(406))),gt(c,mult(portfolio(p),if(gt(c,ma1),0.995,0.99)))),innehav1)
setgvarif(1,407,varning)
setgvarif(0,407,lt(abs(portfolio(v)),mult(10,getgvar(406))))
stopp2=and(lt(c,mult(portfolio(p),if(gt(c,ma1),0.989,0.98))),eqv(getgvar(407),1))
klimattarget=and(and(lt(c,portfolio(p)),gt(c,aref(hhv(h,10),1))),ge(portfolio(v),mult(getgvar(406),4)))
test=and(or(gt(dayofmonth(),29),lt(dayofmonth(),6)),and(ge(portfolio(v),mult(getgvar(406),10)),gt(c,aref(hhv(h,4),1))))
break_even=and(and(eqv(portfolio(v),mult(getgvar(406),10)),gt(div(c,portfolio(p)),1.005)),innehav1)
setgvarif(1,408,break_even)
setgvarif(0,408,lt(abs(portfolio(v)),mult(getgvar(406),10)))
stopp3=and(eqv(getgvar(408),1),le(c,mult(portfolio(p),1.001)))
stopp1=and(or(or(stopp2,stopp3),klimattarget),innehav1)
setgvarif(1,415,stopp1)
setgvarif(1,405,stopp1)
sälj_senast=gt(lasttrade(s,d),lasttrade(b,d))
sälj1=or(and(innehav1,if(sälj_senast,urskalning2,urskalning1)),stopp1)
mult(sälj1,1)
KÖPANTAL SCRIPT
i1(
köpantal=mult(getgvar(406),1)
mult(köpantal,1)
)
SÄLJANTAL SCRIPT
i1(
stopp=eqv(1,getgvar(405))
sälj1=if(stopp,abs(portfolio(v)),getgvar(406))
mult(sälj1,1)
)
Comment