커뮤니티
조건검색 문의
//@version=5
indicator("RSI Shift Zone - Lower Breakout Only", overlay = true, max_labels_count = 500)
// --------------------------------------------------------------------------------------------------------------------
// [Inputs]
rsi_len = input.int(14, "RSI length")
upper_level = input.int(70, "Upper RSI Level", minval = 50)
lower_level = input.int(30, "Lower RSI Level", maxval = 50)
min_channel_len = input.int(15, "Minimal bars length of the channel")
rsi_filter_val = input.int(40, "Min RSI for Signal")
upper_line_width = input.int(2, "Upper Line Width")
lower_line_width = input.int(3, "Lower Line Width")
center_line_width = input.int(2, "Center Line Width")
upper_col = input.color(color.new(#21c997, 50), "Upper Color")
lower_col = input.color(color.new(#cc24e2, 50), "Lower Color")
lower_line_col = input.color(#FF5252, "Lower Line Signal Color")
// --------------------------------------------------------------------------------------------------------------------
// [Calculations]
var int start = na
var bool trigger = false
var float upper = na
var float lower = na
var color channel_color = color(na)
var bool is_upper_zone = false
rsi = ta.rsi(close, rsi_len)
channel_upper = ta.crossover(rsi, upper_level) and not trigger
channel_lower = ta.crossunder(rsi, lower_level) and not trigger
rsi_color = color.from_gradient(rsi, lower_level, upper_level, lower_col, upper_col)
if channel_upper
start := bar_index
trigger := true
upper := high
lower := low
channel_color := rsi_color
is_upper_zone := true
if channel_lower
start := bar_index
trigger := true
upper := high
lower := low
channel_color := rsi_color
is_upper_zone := false
if bar_index - start >= min_channel_len
trigger := false
trigger_change = (channel_upper != channel_upper[1]) or (channel_lower != channel_lower[1])
active_upper_line = trigger_change ? na : upper
active_lower_line = trigger_change ? na : lower
middle_line = trigger_change ? na : math.avg(upper, lower)
// --------------------------------------------------------------------------------------------------------------------
// [Signal Logic]
// Only signals when price crosses Lower Line formed by Upper RSI level
low_breakout = ta.crossover(close, active_lower_line) and is_upper_zone and rsi > rsi_filter_val
// --------------------------------------------------------------------------------------------------------------------
// [Plotting]
plot(active_upper_line, "Upper Line", color = channel_color, style = plot.style_linebr, linewidth = upper_line_width)
plot(active_lower_line, "Lower Line", color = channel_color, style = plot.style_linebr, linewidth = lower_line_width)
p1 = plot(active_upper_line, display = display.none)
p2 = plot(active_lower_line, display = display.none)
fill(p1, p2, color.new(channel_color, 90))
plot(middle_line, "Center Line", color = color.gray, style = plot.style_linebr, linewidth = center_line_width)
plotshape(low_breakout, title="Lower Breakout", style=shape.triangleup, location=location.belowbar, color=lower_line_col, size=size.small, text="LOW")
// --------------------------------------------------------------------------------------------------------------------
// [Alerts]
alertcondition(low_breakout, title="Lower Breakout Alert", message="Price crossed Lower Shift Zone")
일봉상 위 신호가 나온 종목을 검출 할 수 있도록 해주시면 감사 드리겠습니다 (__)
답변 1
예스스탁 예스스탁 답변
2026-01-15 11:08:47