Z Strategy
Z Strategy
//EMA{
///ema}
//Settings
//-----------------------------------------------------------------------------{
length2 = input.int(20, 'Minimum Range Length', minval = 2)
mult2 = input.float(1., 'Range Width', minval = 0, step = 0.1)
atrLen2 = input.int(500, 'ATR Length', minval = 1)
//Style
upCss2 = input(#089981, 'Broken Upward', group = 'Style')
dnCss2= input(#f23645, 'Broken Downward', group = 'Style')
unbrokenCss2 = input(#2157f3, 'Unbroken', group = 'Style')
//-----------------------------------------------------------------------------}
//Detect and highlight ranges
//-----------------------------------------------------------------------------{
//Ranges drawings
var box bx = na
var line lvl = na
//Extensions
var float max = na
var float min = na
var os1 = 0
color detect_css = na
n1 = bar_index
atr = ta.atr(atrLen2) * mult2
ma = ta.sma(close, length2)
count = 0
for i = 0 to length2-1
count += math.abs(close[i] - ma) > atr ? 1 : 0
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
//Range detection bgcolor
bgcolor(detect_css)
plot(max, 'Range Top', max != max[1] ? na : os1 == 0 ?
unbrokenCss2 : os1 == 1 ? upCss2 : dnCss2)
plot(min, 'Range Bottom', min != min[1] ? na : os1 == 0 ?
unbrokenCss2 : os1 == 1 ? upCss2 : dnCss2)
plot(counter_lookback_short)
//Consolidation
prd_cons = input.int(defval= 10, title='Loopback Period', minval=2,
maxval=50, group="Consolidation")
conslen = input.int(defval=7, title='Min Consolidation Length',
minval=2, maxval=20, group="Consolidation")
float hb_ = ta.highestbars(prd_cons) == 0 ? high : na
float lb_ = ta.lowestbars(prd_cons) == 0 ? low : na
var int dir = 0
float zz = na
float pp = na
iff_11 = lb_ and na(hb_) ? -1 : dir
dir := hb_ and na(lb_) ? 1 : iff_11
if hb_ and lb_
if dir == 1
zz := hb_
zz
else
zz := lb_
zz
else
iff_11 = lb_ ? lb_ : na
zz := hb_ ? hb_ : iff_11
zz
for x = 0 to 1000 by 1
if na(close) or dir != dir[x]
break
if zz[x]
if na(pp)
pp := zz[x]
pp
else
if dir[x] == 1 and zz[x] > pp
pp := zz[x]
pp
if dir[x] == -1 and zz[x] < pp
pp := zz[x]
pp
var int conscnt = 0
var float condhigh = na
var float condlow = na
float H_ = ta.highest(conslen)
float L_ = ta.lowest(conslen)
var line upline = na
var line dnline = na
bool breakoutup = false
bool breakoutdown = false
if ta.change(pp)
if conscnt > conslen
if pp > condhigh
breakoutup := true
breakoutup
if pp < condlow
breakoutdown := true
breakoutdown
if conscnt > 0 and pp <= condhigh and pp >= condlow
conscnt += 1
conscnt
else
conscnt := 0
conscnt
else
conscnt += 1
conscnt
if conscnt >= conslen
if conscnt == conslen
condhigh := H_
condlow := L_
condlow
else
condhigh := math.max(condhigh, high)
condlow := math.min(condlow, low)
condlow
////}
//Entry Condition
////////THIS says that after there was a trade next one must be in
other directiom
float position_size = 0
position_size := position_size[1]
if longcondition
position_size := 1
if shortcondition
position_size := -1
//barcolor(ema1 > ema3 ? #0CFF00 : #FF0000)