Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=3
- study("Test strategie")
- src=input(type=source,title="Zdroj dat",defval=close)
- chint=input(type=integer,title="Zmena za (0=vyp)", defval=0,minval=0)
- ofs=input(type=float, title="Posun 0 na ose Y", defval=0)
- neg=input(type=bool, title="Negovat", defval=false)
- avgint=input(type=integer,title="interval mereni", defval=84,minval=1)
- fees=input(type=float,title="Poplatky na burze v %", defval=0.08, step=0.02)
- hyst=input(type=float,title="hystereze", defval=0)
- delay=input(type=integer,title="zpozdeni (0=vidi budoucnost)", defval=1, minval=0)
- dir=input(title="Směr", options=["long+short","short","long"], defval="long+short")
- size=input(title="Velikost pozice", type=float, defval=1, minval=0)
- vcurrency=input(title="Velikost v currency", type=bool, defval=false)
- close0=input(type=bool, title="Zavrit na nule", defval=false)
- accumhyst=input(type=bool, title="Akumulovat prirusty pri hysterezi",defval=false)
- plot_alltime=input(type=bool, title="Kresli alltime vynos a fee", defval=false)
- plot_alltime_abs=input(type=bool, title="Kresli alltime absol. vynos", defval=false)
- pos=0.0
- accv=0.0
- mult=(neg?-1:1)
- plong = dir == "short"?0:size/(vcurrency?open[0]:1)
- pshort = dir == "long"?0:-size/(vcurrency?open[0]:1)
- chint2=chint==0?1:chint
- ost=(chint==0?src[delay]:change(src[delay],chint2))*mult-ofs
- accv:=accumhyst and ((ost < 0 and pos[1] >= 0) or (ost > 0 and pos[1] <= 0)) and (abs(nz(accv[1]))<abs(hyst))?(nz(accv[1])+ost):ost
- pos:=(crossover(accv, hyst)?plong:crossunder(accv,-hyst)?pshort:close0?((cross(ost,0) or ost == 0)?0:nz(pos[1])):nz(pos[1]))
- bgcolor(title="position", color=pos<0?#FF0000:pos>0?#00FF00:#808080,transp=85)
- vynosy=(close[0]-close[1])*pos
- vol=abs(pos[0]-pos[1])*open
- avgpl=sma(vynosy,avgint)
- avgvol=sma(vol,avgint)
- plot(avgpl,title="Prumerny vynos", color=blue, linewidth=2)
- plot(avgvol*fees/100,title="Prumerne poplatky", color=blue, style=area, transp=80)
- atsum=0.0
- atcnt=0
- atvol=0.0
- atsum:=nz(atsum[1])+vynosy
- atcnt:=plot_alltime?(nz(atcnt[1])+1):na
- atvol:=nz(atvol[1])+vol
- plot(atsum/atcnt,title="Celkovy prumerny vynos", color=#804000,linewidth=2)
- plot(atvol/atcnt*fees/100,title="Celkovy prumerny fee", color=#804000, style=area, transp=80)
- plot(plot_alltime_abs?atsum-atvol*fees/100:na,title="absolutni vynos", color=black)
- alertcondition(pos!=pos[1],"Position changed")
- alertcondition(pos>0 and pos[1]!=pos,"Buy signal")
- alertcondition(pos<0 and pos[1]!=pos,"Sell signal")
- alertcondition(pos==0 and pos[1]!=pos,"Close signal")
Advertisement
Add Comment
Please, Sign In to add comment