Request:
Engulfing Detector
https://www.tradingview.com/script/ENKp ... nd-Demand/
This is a unique engulfing indicator, which I believe catches the essence of how to trade engulfing candles.
Creating this indicator can inspire additional indicators with similar strategies.
Code: Select all
//@version=4
study("Engulfing Detector", overlay=true, max_bars_back=500)
maxBarsBack = 500
previousRange = open[1] - close[1]
line bullEngulfOpen = na
line bullEngulfLow = na
line bearEngulfOpen = na
line bearEngulfHigh = na
isBullEngulf = previousRange > 0 and close > open[1]
isBearEngulf = previousRange < 0 and close < open[1]
if isBullEngulf
bullEngulfOpen := line.new(bar_index - 1, open[1], bar_index, open[1], extend=extend.right, color=color.green)
bullEngulfLow := line.new(bar_index - 1, low < low[1] ? low : low[1], bar_index, low < low[1] ? low : low[1], extend=extend.right, color=color.red)
if isBearEngulf
bearEngulfOpen := line.new(bar_index - 1, open[1], bar_index, open[1], extend=extend.right, color=color.green)
bearEngulfHigh := line.new(bar_index - 1, high > high[1] ? high : high[1], bar_index, high > high[1] ? high : high[1], extend=extend.right, color=color.red)
var maxNumberOfEngulfings = 10
bullEngulfingCount = 0
for i = 1 to maxBarsBack
if not na(bullEngulfOpen[i])
if low < line.get_y1(bullEngulfLow[i])
line.delete(bullEngulfOpen[i])
line.delete(bullEngulfLow[i])
continue
if low < line.get_y1(bullEngulfOpen[i])
//line.set_x2(bullEngulfOpen[i], bar_index)
line.set_color(bullEngulfOpen[i], color.gray)
//line.set_extend(bullEngulfOpen[i], extend.none)
//line.set_x2(bullEngulfLow[i], bar_index)
line.set_color(bullEngulfLow[i], color.gray)
//line.set_extend(bullEngulfLow[i], extend.none)
bullEngulfingCount := bullEngulfingCount + 1
if bullEngulfingCount > maxNumberOfEngulfings
line.delete(bullEngulfOpen[i])
line.delete(bullEngulfLow[i])
bearEngulfingCount = 0
for i = 1 to maxBarsBack
if not na(bearEngulfOpen[i])
if high > line.get_y1(bearEngulfHigh[i])
line.delete(bearEngulfOpen[i])
line.delete(bearEngulfHigh[i])
continue
if high > line.get_y1(bearEngulfOpen[i])
//line.set_x2(bearEngulfOpen[i], bar_index)
line.set_color(bearEngulfOpen[i], color.gray)
//line.set_extend(bearEngulfOpen[i], extend.none)
//line.set_x2(bearEngulfHigh[i], bar_index)
line.set_color(bearEngulfHigh[i], color.gray)
//line.set_extend(bearEngulfHigh[i], extend.none)
bearEngulfingCount := bearEngulfingCount + 1
if bearEngulfingCount > maxNumberOfEngulfings
line.delete(bearEngulfOpen[i])
line.delete(bearEngulfHigh[i])