0% found this document useful (0 votes)
1K views3 pages

Master Pattern Indicator Overview

Master Pattern

Uploaded by

katrin.k1394
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views3 pages

Master Pattern Indicator Overview

Master Pattern

Uploaded by

katrin.k1394
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.

0
International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © Babak

//@version=5
indicator("Master Pattern [Babak]", "Babak - Master Pattern Indicator", overlay =
true, max_boxes_count = 50000, max_lines_count = 500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(3, 'Contraction Detection Lookback', minval = 1)
liqLength = input.int(20, 'Liquidity Levels', minval = 1)

showMajor = input(true, 'Show Major Pattern')


showMinor = input(true, 'Show Minor Pattern')

//Style
bullCss = input.color(color.teal, 'Bullish Pattern', inline = 'bull', group =
'Pattern Style')
showBullBox = input(true, 'Area', inline = 'bull', group = 'Pattern Style')
showBullLvl = input(true, 'Line', inline = 'bull', group = 'Pattern Style')

bearCss = input.color(color.red, 'Bearish Pattern', inline = 'bear', group =


'Pattern Style')
showBearBox = input(true, 'Area', inline = 'bear', group = 'Pattern Style')
showBearLvl = input(true, 'Line', inline = 'bear', group = 'Pattern Style')

//Liquidity Style
showLiq = input(true, 'Show Liquidity Levels', group = 'Liquidity')
bullLiqCss = input.color(color.teal, 'Upper Liquidity', group = 'Liquidity')
bearLiqCss = input.color(color.red, 'Lower Liquidity', group = 'Liquidity')

//-----------------------------------------------------------------------------}
//UDT
//-----------------------------------------------------------------------------{
type mp
box area
line avg
bool breakup
bool breakdn

//-----------------------------------------------------------------------------}
//Detect contraction
//-----------------------------------------------------------------------------{
var phy = 0., var phx = 0, var pht = 0.
var ply = 0., var plx = 0, var plt = 0.

var float top = na


var float btm = na

n = bar_index
ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

if ph
pht := math.sign(ph - phy)
phy := ph

if pht == -1 and plt == 1


top := ph
btm := ply
phx := n-length

if pl
plt := math.sign(pl - ply)
ply := pl

if pht == -1 and plt == 1


top := phy
btm := pl
plx := n-length

//-----------------------------------------------------------------------------}
//Set pattern
//-----------------------------------------------------------------------------{
var mp master = mp.new()

//Detect master pattern


isbull = high[length] > top and top > btm
isbear = low[length] < btm and top > btm

if isbull or isbear
css = isbull ? bullCss : bearCss

master.avg.set_x2(n-length)

val = math.avg(top, btm)

//Create new master pattern object


master := mp.new(
(isbull and showBullBox) or (isbear and showBearBox) ? box.new(math.max(phx,
plx), top, n-length, btm, na, bgcolor = showMinor ? color.new(css, 50) : na) : na
, (isbull and showBullLvl) or (isbear and showBearLvl) ? line.new(n-length,
val, n, val, color = showMinor ? css : na) : na
, isbull
, isbear)

top := na
btm := na

//Determine if pattern switch to major


if master.breakup
if low < master.area.get_bottom()
if not showMajor
master.area.delete()
master.avg.delete()
else
master.area.set_border_color(bullCss)
if not showMinor
master.area.set_bgcolor(color.new(bullCss, 50))
master.avg.set_color(bullCss)
else if master.breakdn
if high > master.area.get_top()
if not showMajor
master.area.delete()
master.avg.delete()
else
master.area.set_border_color(bearCss)
if not showMinor
master.area.set_bgcolor(color.new(bearCss, 50))
master.avg.set_color(bearCss)

//Set friction level x2 coordinate to current bar


if not na(master.avg)
master.avg.set_x2(n)

//-----------------------------------------------------------------------------}
//Liquidity levels
//-----------------------------------------------------------------------------{
var line liqup = na, var liqup_reach = false
var line liqdn = na, var liqdn_reach = false

liqph = ta.pivothigh(liqLength, liqLength)


liqpl = ta.pivotlow(liqLength, liqLength)

//Set upper liquidity


if liqph and showLiq
if not liqup_reach
liqup.set_x2(n-liqLength)

liqup := line.new(n-liqLength, liqph, n, liqph, color = bullLiqCss, style =


line.style_dotted)
liqup_reach := false
else if not liqup_reach and showLiq
liqup.set_x2(n)

if high > liqup.get_y1()


liqup_reach := true

//Set lower liquidity


if liqpl and showLiq
if not liqdn_reach
liqdn.set_x2(n-liqLength)

liqdn := line.new(n-liqLength, liqpl, n, liqpl, color = bearLiqCss, style =


line.style_dotted)
liqdn_reach := false
else if not liqdn_reach and showLiq
liqdn.set_x2(n)

if low < liqdn.get_y1()


liqdn_reach := true

//-----------------------------------------------------------------------------}

You might also like