커뮤니티

조건검색 문의

프로필 이미지
사공하늘
2026-01-14 00:43:46
44
글번호 229781
답변완료

//@version=5

indicator("RSI Shift Zone Upper Breakout Only", overlay = true)


// --------------------------------------------------------------------------------------------------------------------{

// 입력값 설정

// --------------------------------------------------------------------------------------------------------------------{

rsi_len = input.int(14, "RSI length")

upper_level = input.int(70, "Upper RSI Level", minval = 50)

min_channel_len = input.int(15, "Minimal bars length of the channel")

upper_col = input.color(#21c997, "Upper BUY Color")


// 변수 초기화

var int start = na

var bool trigger = false

var float upper = na

var int zone_type = 0 // 1: 과매수(Upper) 구역 기록용


// --------------------------------------------------------------------------------------------------------------------{

// 로직 계산

// --------------------------------------------------------------------------------------------------------------------{

rsi = ta.rsi(close, rsi_len)


// RSI가 상단 레벨(70)을 돌파할 때의 가격 고점(upper)을 저장

channel_upper = ta.crossover(rsi, upper_level) and not trigger


if channel_upper

start := bar_index

trigger := true

upper := high

zone_type := 1 // 과매수 구역 진입 표시


// 일정 기간이 지나면 트리거 초기화

if bar_index - start >= min_channel_len

trigger := false


// 🎯 BUY 신호 로직: 과매수 구역(zone_type 1) 설정 당시의 고가(upper)를 가격이 상향 돌파할 때

buy_signal = (zone_type == 1) and ta.crossover(close, upper)


// --------------------------------------------------------------------------------------------------------------------{

// 신호 출력 (차트 위에 화살표 표시)

// --------------------------------------------------------------------------------------------------------------------{

plotshape(buy_signal,

title="Upper Breakout BUY",

style=shape.triangleup,

location=location.belowbar,

color=upper_col,

size=size.normal,

text="UPPER BUY",

textcolor=upper_col)



일봉상 위 신호가 발생하는 종목을 검색할 수 있도록 해주시면 감사드리겠습니다 (__)

검색
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-14 13:08:19

안녕하세요 예스스탁입니다. input : rsi_len(14); input : upper_level(70); input : lower_level(30); input : min_channel_len(15); var : start(Nan),trigger(false),upper(Nan),zone_type(0); var : R(0),channel_upper(False),channel_lower(False),buy_signal(False); R = rsi(rsi_len); channel_upper = CrossUp(R, upper_level) and trigger == False; if channel_upper Then { start = index; trigger = true; upper = high; zone_type = 1; } if index - start >= min_channel_len Then trigger = false; buy_signal = (zone_type == 1) and CrossUp(close, upper); if buy_signal == true Then Find(1); 즐거운 하루 되세요