JustPaste.it

HULL MOVING AVERAGE CROSS & CANDLE CROSS

//@version=3 
//From Indicator420 by SeaSide420            HULL MOVING AVERAGE CROSS & CANDLE CROSS
strategy("Indicator420 Strategy", shorttitle="HMA_X", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=200, commission_type=strategy.commission.percent, commission_value=0.2, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
z=input(type=integer,defval=26,title="HullMA cross")
p=input(ohlc4,type=source,title="Price data")
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) 
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) 
FromYear = input(defval = 2017, title = "From Year", minval = 2017) 
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) 
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) 
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window 
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window 
window() => time >= start and time <= finish ? true : false // create function "within window of time" 
n2ma=2*wma(p,round(z/2))
nma=wma(p,z)
diff=n2ma-nma
sqn=round(sqrt(z))
n2ma1=2*wma(p[1],round(z/2))
nma1=wma(p[1],z)
diff1=n2ma1-nma1
sqn1=round(sqrt(z))
n2ma2=2*wma(p[2],round(z/2))
nma2=wma(p[2],z)
diff2=n2ma2-nma2
sqn2=round(sqrt(z))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
n3=wma(diff2,sqn)
c=n1>n2?green:red
n1e=plot(n1, color=c, linewidth=1, offset=2)
n2e=plot(n2, color=c, linewidth=1, offset=2)
fill(n1e, n2e, color=c, transp=75)
plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4)
closelong = p<p[1] and n1<n3 
if (closelong)
    strategy.close("BUY", when=window())
closeshort = p>p[1] and n1>n3
if (closeshort)
    strategy.close("SELL", when=window())
longCondition = strategy.opentrades<1 and n1>n2 and p>p[1] and n1>n3
if (longCondition)
    strategy.entry("BUY",strategy.long, when=window())
shortCondition = strategy.opentrades<1 and n1<n2 and p<p[1] and n1<n3 
if (shortCondition)
    strategy.entry("SELL",strategy.short, when=window())