Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

//@version=4

study(title="4D Timings", shorttitle="4D Timings", overlay=true)

// INPUTS
asiashow = input(true, title="Display Asia Range")
ffsshow = input(false, title="Display Frankfurt Session")
loshow = input(true, title="Display London Open")
lgshow = input(false, title="Display London Gap")
lshshow = input(false, title="Display London Stop Hunt")
lmshow = input(true, title="Display London Momentum")
nyshow = input(true, title="Display New York Open")
nygshow = input(false, title="Display New York Gap")
nyshshow = input(false, title="Display New York Stop Hunt")
nymshow = input(true, title="Display New York Momentum")
lcrshow = input(false, title="Display London Close Reversal")
lcshow = input(true, title="Display London Close")
nycshow = input(false, title="Display New York Close")

displayZonesLimit = input(title="Max Timeframe To Display (Minutes)",


type=input.integer, defval=60, minval=1, maxval=1440)

//ASIA
asiacolor = input(color.new(color.aqua, 70), "Asia Range Color", type=input.color)
asia = input(title="Asia Session", type=input.session, defval="1700-0101")

//FRANKFURT SESSION
ffscolor = input(color.new(color.blue, 90), "Frankfurt Session Range Color",
type=input.color)
ffs = input(title="Frankfurt Session", type=input.session, defval="0100-0201")

//LONDON OPEN
locolor = input(color.new(color.gray, 50), "London Open Range Color",
type=input.color)
lo = input(title="London Open Session", type=input.session, defval="0200-0600")

//LONDON GAP
lgcolor = input(color.new(color.yellow, 80), "London Gap Range Color",
type=input.color)
lg = input(title="London Gap Session", type=input.session, defval="0200-0231")

//LONDON STOP HUNT


lshcolor = input(color.new(color.red, 80), "London Stop Hunt Range Color",
type=input.color)
lsh = input(title="London Stop Hunt", type=input.session, defval="0230-0246")

//LONDON MOMENTUM
lmcolor = input(color.new(color.gray, 90), "London Momentum Color",
type=input.color)
lm = input(title="London Momentum", type=input.session, defval="0300-0431")

//NY OPEN
nycolor = input(color.new(color.gray, 50), "New York Open Range Color",
type=input.color)
ny = input(title="New York Open Session", type=input.session, defval="0700-1000")

//NY GAP
nygcolor = input(color.new(color.yellow, 80), "New York Gap Range Color",
type=input.color)
nyg = input(title="New York Gap Session", type=input.session, defval="0800-0831")
//NY STOP HUNT
nyshcolor = input(color.new(color.red, 80), "New York Stop Hunt Range Color",
type=input.color)
nysh = input(title="New York Stop Hunt", type=input.session, defval="0830-0846")

//NY MOMENTUM
nymcolor = input(color.new(color.gray, 90), "New York Momentum Color",
type=input.color)
nym = input(title="New York Momentum", type=input.session, defval="0830-1001")

//LONDON CLOSE REVERSAL


lcrcolor = input(color.new(color.purple, 80), "London Close Reversal Range Color",
type=input.color)
lcr = input(title="London Close Reversal", type=input.session, defval="1100-1116")

//LONDON CLOSE
lccolor = input(color.new(color.red, 50), "London Close Range Color",
type=input.color)
lc = input(title="London Close Session", type=input.session, defval="1000-1300")

//NY CLOSE
nyccolor = input(color.new(color.gray, 50), "New York Close Range Color",
type=input.color)
nyc = input(title="New York Close Session", type=input.session, defval="1400-1600")

// FUNCTIONS
in_session(sess) =>
not na(time(timeframe.period, sess))

start_time(sess) =>
int startTime = na
startTime := in_session(sess) and not in_session(sess)[1] ? time : startTime[1]

is_new_session(res, sess) =>


t = time(res, sess)
na(t[1]) and not na(t) or t[1] < t

BarInSession(sess) =>
time(timeframe.period, sess) != 0

//PARAMS
indexHighTF = barstate.isrealtime ? 0 : 0
indexCurrTF = barstate.isrealtime ? 0 : 0
dailyhigh = security(syminfo.tickerid, 'D', high, lookahead=barmerge.lookahead_on)
[indexHighTF]
dailylow = security(syminfo.tickerid, 'D', low[indexCurrTF],
lookahead=barmerge.lookahead_on)[indexCurrTF]

displayZones = timeframe.isintraday and (timeframe.multiplier > displayZonesLimit ?


false : true)

//ASIA BOX
asia_session = is_new_session("1440", asia)

float _asialow = na
float _asiahigh = na
_asiabox = box(na)
_asiastart = start_time(asia)
_asialow := asia_session ? low : in_session(asia) ? min(low, _asialow[1]) : na
_asiahigh := asia_session ? high : in_session(asia) ? max(high, _asiahigh[1]) : na

if in_session(asia)
if in_session(asia)[1]
box.delete(_asiabox[1])

if low < _asialow


_asialow := low
if high > _asiahigh
_asiahigh := high

if asiashow
_asiabox := box.new(_asiastart, _asiahigh, time, _asialow,
xloc=xloc.bar_time, bgcolor=asiacolor, border_color=asiacolor,
border_style=line.style_solid)

//FRANKFURT BOX
ffs_session = is_new_session("1440", ffs)

float _ffslow = na
float _ffshigh = na
_ffsbox = box(na)

_ffsstart = start_time(ffs)
_ffslow := ffs_session ? low : in_session(ffs) ? min(low, _ffslow[1]) : na
_ffshigh := ffs_session ? high : in_session(ffs) ? max(high, _ffshigh[1]) : na

if in_session(ffs)
if in_session(ffs)[1]
box.delete(_ffsbox[1])

if low < _ffslow


_ffslow := low
if high > _ffshigh
_ffshigh := high

if ffsshow
_ffsbox := box.new(_ffsstart, _ffshigh, time, _ffslow, xloc=xloc.bar_time,
bgcolor=ffscolor, border_color=ffscolor, border_style=line.style_solid)

//LONDON OPEN
lo_session = is_new_session("1440", lo)

line _lolinelow = na
line _lolinehigh = na
_lostart = start_time(lo)

if in_session(lo)
if in_session(lo)[1]
line.delete(_lolinelow[1])
line.delete(_lolinehigh[1])

if loshow
_lolinehigh := line.new(_lostart, dailyhigh, time, dailyhigh,
xloc=xloc.bar_time, color=locolor, style=line.style_solid, width=3)
_lolinelow := line.new(_lostart, dailylow, time, dailylow,
xloc=xloc.bar_time, color=locolor, style=line.style_solid, width=3)
//LONDON GAP BOX
lg_session = is_new_session("1440", lg)

float _lglow = na
float _lghigh = na
_lgbox = box(na)

_lgstart = start_time(lg)
_lglow := lg_session ? low : in_session(lg) ? min(low, _lglow[1]) : na
_lghigh := lg_session ? high : in_session(lg) ? max(high, _lghigh[1]) : na

if in_session(lg)
if in_session(lg)[1]
box.delete(_lgbox[1])

if low < _lglow


_lglow := low
if high > _lghigh
_lghigh := high

if lgshow
_lgbox := box.new(_lgstart, _lghigh, time, _lglow, xloc=xloc.bar_time,
bgcolor=lgcolor, border_color=lgcolor, border_style=line.style_solid)

//LONDON STOP HUNT BOX


lsh_session = is_new_session("1440", lsh)

float _lshlow = na
float _lshhigh = na
_lshbox = box(na)

_lshstart = start_time(lsh)
_lshlow := lsh_session ? low : in_session(lsh) ? min(low, _lshlow[1]) : na
_lshhigh := lsh_session ? high : in_session(lsh) ? max(high, _lshhigh[1]) : na

if in_session(lsh)
if in_session(lsh)[1]
box.delete(_lshbox[1])

if low < _lshlow


_lshlow := low
if high > _lshhigh
_lshhigh := high

if lshshow
_lshbox := box.new(_lshstart, _lshhigh, time, _lshlow, xloc=xloc.bar_time,
bgcolor=lshcolor, border_color=lshcolor, border_style=line.style_solid)

//LONDON MOMENTUM BOX


lm_session = is_new_session("1440", lm)

float _lmlow = na
float _lmhigh = na
_lmbox = box(na)

_lmstart = start_time(lm)
_lmlow := lm_session ? low : in_session(lm) ? min(low, _lmlow[1]) : na
_lmhigh := lm_session ? high : in_session(lm) ? max(high, _lmhigh[1]) : na
if in_session(lm)
if in_session(lm)[1]
box.delete(_lmbox[1])

if low < _lmlow


_lmlow := low
if high > _lmhigh
_lmhigh := high

if lmshow
_lmbox := box.new(_lmstart, _lmhigh, time, _lmlow, xloc=xloc.bar_time,
bgcolor=lmcolor, border_color=lmcolor, border_style=line.style_solid)

//NEW YORK OPEN


ny_session = is_new_session("1440", ny)

line _nylinelow = na
line _nylinehigh = na
_nystart = start_time(ny)

if in_session(ny)
if in_session(ny)[1]
line.delete(_nylinelow[1])
line.delete(_nylinehigh[1])

if nyshow
_nylinehigh := line.new(_nystart, dailyhigh, time, dailyhigh,
xloc=xloc.bar_time, color=nycolor, style=line.style_solid, width=3)
_nylinelow := line.new(_nystart, dailylow, time, dailylow,
xloc=xloc.bar_time, color=nycolor, style=line.style_solid, width=3)

//NEW YORK GAP BOX


nyg_session = is_new_session("1440", nyg)

float _nyglow = na
float _nyghigh = na
_nygbox = box(na)

_nygstart = start_time(nyg)
_nyglow := nyg_session ? low : in_session(nyg) ? min(low, _nyglow[1]) : na
_nyghigh := nyg_session ? high : in_session(nyg) ? max(high, _nyghigh[1]) : na

if in_session(nyg)
if in_session(nyg)[1]
box.delete(_nygbox[1])

if low < _nyglow


_nyglow := low
if high > _nyghigh
_nyghigh := high

if nygshow
_nygbox := box.new(_nygstart, _nyghigh, time, _nyglow, xloc=xloc.bar_time,
bgcolor=nygcolor, border_color=nygcolor, border_style=line.style_solid)

//NEW YORK STOP HUNT BOX


nysh_session = is_new_session("1440", nysh)
float _nyshlow = na
float _nyshhigh = na
_nyshbox = box(na)

_nyshstart = start_time(nysh)
_nyshlow := nysh_session ? low : in_session(nysh) ? min(low, _nyshlow[1]) : na
_nyshhigh := nysh_session ? high : in_session(nysh) ? max(high, _nyshhigh[1]) : na

if in_session(nysh)
if in_session(nysh)[1]
box.delete(_nyshbox[1])

if low < _nyshlow


_nyshlow := low
if high > _nyshhigh
_nyshhigh := high

if nyshshow
_nyshbox := box.new(_nyshstart, _nyshhigh, time, _nyshlow,
xloc=xloc.bar_time, bgcolor=nyshcolor, border_color=nyshcolor,
border_style=line.style_solid)

//NEW YORK MOMENTUM BOX


nym_session = is_new_session("1440", nym)

float _nymlow = na
float _nymhigh = na
_nymbox = box(na)

_nymstart = start_time(nym)
_nymlow := nym_session ? low : in_session(nym) ? min(low, _nymlow[1]) : na
_nymhigh := nym_session ? high : in_session(nym) ? max(high, _nymhigh[1]) : na

if in_session(nym)
if in_session(nym)[1]
box.delete(_nymbox[1])

if low < _nymlow


_nymlow := low
if high > _nymhigh
_nymhigh := high

if nymshow
_nymbox := box.new(_nymstart, _nymhigh, time, _nymlow, xloc=xloc.bar_time,
bgcolor=nymcolor, border_color=nymcolor, border_style=line.style_solid)

//LONDON CLOSE REVERSAL BOX


lcr_session = is_new_session("1440", lcr)

float _lcrlow = na
float _lcrhigh = na
_lcrbox = box(na)

_lcrstart = start_time(lcr)
_lcrlow := lcr_session ? low : in_session(lcr) ? min(low, _lcrlow[1]) : na
_lcrhigh := lcr_session ? high : in_session(lcr) ? max(high, _lcrhigh[1]) : na

if in_session(lcr)
if in_session(lcr)[1]
box.delete(_lcrbox[1])

if low < _lcrlow


_lcrlow := low
if high > _lcrhigh
_lcrhigh := high

if lcrshow
_lcrbox := box.new(_lcrstart, _lcrhigh, time, _lcrlow, xloc=xloc.bar_time,
bgcolor=lcrcolor, border_color=lcrcolor, border_style=line.style_solid)

//LONDON CLOSE
lc_session = is_new_session("1440", lc)

line _lclinelow = na
line _lclinehigh = na
_lcstart = start_time(lc)

if in_session(lc)
if in_session(lc)[1]
line.delete(_lclinelow[1])
line.delete(_lclinehigh[1])

if lcshow
_lclinehigh := line.new(_lcstart, dailyhigh, time, dailyhigh,
xloc=xloc.bar_time, color=lccolor, style=line.style_solid, width=3)
_lclinelow := line.new(_lcstart, dailylow, time, dailylow,
xloc=xloc.bar_time, color=lccolor, style=line.style_solid, width=3)

//NEW YORK CLOSE


nyc_session = is_new_session("1440", nyc)

line _nyclinelow = na
line _nyclinehigh = na
_nycstart = start_time(nyc)

if in_session(nyc)
if in_session(nyc)[1]
line.delete(_nyclinelow[1])
line.delete(_nyclinehigh[1])

if nycshow
_nyclinehigh := line.new(_nycstart, dailyhigh, time, dailyhigh,
xloc=xloc.bar_time, color=nyccolor, style=line.style_solid, width=3)
_nyclinelow := line.new(_nycstart, dailylow, time, dailylow,
xloc=xloc.bar_time, color=nyccolor, style=line.style_solid, width=3)

You might also like