New Rich Text Document
New Rich Text Document
// Naked Levels
//
length = array.size(levelArr)
array.unshift(levelArr, level)
length := length + 1
// array.remove(weeklyResistanceLevels, i)
array.set(levelArr, i, na)
line.delete(array.get(lineArr, i))
array.set(lineArr, i, na)
array.pop(levelArr)
if not na(val)
line.delete(val)
array.pop(lineArr)
//
// Helpers
resInMinutes() =>
timeframe.multiplier * (
timeframe.isseconds ? 1. / 60. :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 1440. :
timeframe.isweekly ? 10080. :
//
// Inputs
//
// Implementation
srPvtBars = array.new_int()
srPvtValues = array.new_float()
srLevels = array.new_float()
var line _ln0 = na, var line _ln1 = na, var line _ln2 = na, var line _ln3 = na, var line _ln4 = na
var line _ln5 = na, var line _ln6 = na, var line _ln7 = na, var line _ln8 = na, var line _ln9 = na
var line _ln10 = na, var line _ln11 = na, var line _ln12 = na, var line _ln13 = na, var line _ln14 = na
var line _ln15 = na, var line _ln16 = na, var line _ln17 = na, var line _ln18 = na, var line _ln19 = na
var line _lnh0 = na, var line _lnh1 = na, var line _lnh2 = na, var line _lnh3 = na, var line _lnh4 = na
var line _lnh5 = na, var line _lnh6 = na, var line _lnh7 = na, var line _lnh8 = na, var line _lnh9 = na
var line _lnh10 = na, var line _lnh11 = na, var line _lnh12 = na, var line _lnh13 = na, var line _lnh14 = na
var line _lnh15 = na, var line _lnh16 = na, var line _lnh17 = na, var line _lnh18 = na, var line _lnh19 = na
var line _lnl0 = na, var line _lnl1 = na, var line _lnl2 = na, var line _lnl3 = na, var line _lnl4 = na
var line _lnl5 = na, var line _lnl6 = na, var line _lnl7 = na, var line _lnl8 = na, var line _lnl9 = na
var line _lnl10 = na, var line _lnl11 = na, var line _lnl12 = na, var line _lnl13 = na, var line _lnl14 = na
var line _lnl15 = na, var line _lnl16 = na, var line _lnl17 = na, var line _lnl18 = na, var line _lnl19 = na
var label _lbl0 = na, var label _lbl1 = na, var label _lbl2 = na, var label _lbl3 = na, var label _lbl4 = na
var label _lbl5 = na, var label _lbl6 = na, var label _lbl7 = na, var label _lbl8 = na, var label _lbl9 = na
var label _lbl10 = na, var label _lbl11 = na, var label _lbl12 = na, var label _lbl13 = na, var label _lbl14 = na
var label _lbl15 = na, var label _lbl16 = na, var label _lbl17 = na, var label _lbl18 = na, var label _lbl19 = na
srZoneUpper(value) =>
srZoneLower(value) =>
// Count the number of times the pivot point at index overlaps with other pivot
srCountIntersections(index) =>
count = 0
for i = 0 to array.size(srPvtValues)-1
count := count + 1
count
// Count the number of times the pivot point at index overlaps with more recent
// pivot points
srCountNewerIntersections(index) =>
count = 0
if index > 0
for i = index-1 to 0
count := count + 1
count
srZone(value) =>
power = 0
sum = 0.0
ph = value
pl = value
info = ""
for i = 0 to array.size(srPvtValues)-1
pp = array.get(srPvtValues, i)
if srZoneIntersect(value, pp)
power := power + 1
sum := sum + pp
bar := array.get(srPvtBars, i)
ph := max(pp, ph)
pl := min(pp, pl)
srHighest() =>
pp = array.max(srPvtValues)
[pp, bar]
srLowest() =>
pp = array.min(srPvtValues)
[pp, bar]
srEnterZone(source) =>
cond = false
if array.size(srLevels)
for i = 0 to array.size(srLevels)-1
value = array.get(srLevels, i)
ch = srZoneUpper(value)
cl = srZoneLower(value)
if (source < ch and source[1] > ch) or (source > cl and source[1] < cl)
cond := true
break
cond
srExitZone(source) =>
cond = false
if array.size(srLevels)
for i = 0 to array.size(srLevels)-1
value = array.get(srLevels, i)
ch = srZoneUpper(value)
cl = srZoneLower(value)
if (source > ch and source[1] < ch) or (source < cl and source[1] > cl)
cond := true
break
cond
srZoneAreaLine(bar, srZoneLower(value))
dt = time - time[1]
for i = 0 to srLookbackBars
if _pp[i]
array.push(srPvtValues, _pp[i])
// Debug output
merged = ""
skipped = ""
success = ""
for i = 0 to array.size(srPvtValues)-1
if srCountNewerIntersections(i) > 0
continue
// Make it rain
pp = array.get(srPvtValues, i)
array.push(srLevels, value)
else
if showUpperResistanceLine
line.delete(_lnhh)
label.delete(_lblhh)
if showLowerSupportLine
line.delete(_lnll)
label.delete(_lblll)
if showDebugLabel
label.delete(_dbglbl)
//
// Alert Conditions
enterZoneCond = srEnterZone(close)
exitZoneCond = srExitZone(close)