주식.코인 기초/기술적 지표 매매신호 만들기

트레이딩 뷰에 적용 가능한 지표.

방초아트 2025. 6. 27. 11:45
반응형

안녕하세요 방초 아트 입니다. 

오랜만에 글을 포스팅 하네요. 일도 바쁘고 코인 공부로 인해서

신경을 못썻던 점 죄송 합니다.

이래 저래 코인매매을 하면서 잘 벌다가 한방에 청산을 당할뻔해서. 

지금은 마음을 다잡고 다시 차근 차근 매매를 이어가고 있습니다.

그동안에 제가 해왔던 매매 스타일의 단점도 발견을 하고. 좀더 보안을 하기위해 

이래 저래 알아보고 공부를 했습니다.

그러다가. 어느분 한마디에 갑작스레 지표를 만들어 봤는데요.

트레이딩 뷰에 적용이 가능 하며. 여러개의 지표를 하나로 뭉쳐 놓은 겁니다. 

별거 없어요.

무료 버전으로는 보조 지표가 2개 바께 표시가 되지 않아. 이평선들을 더 넣고 싶어도

결제를 해야 되는 방식인데 . 이번 처음 만든 지표는 

이평선과 매매 신호만 넣어 만들어 봤습니다.

1시간 봉으로 본 매매 신호 입니다.

캔들 위아래에 보이는 삼각형 들이 매매 신호 입니다. 초록색은 롱. 빨간색은 매도 표시 인데. 

이걸 굳이 곧대로 믿어선 안되고. 조금 공부가 필요 합니다..

각 분봉마다 개별적으로 매매 신호가 뜨게 만들었습니다. 

조건은 5일 이평선이 20일 이평선을 돌파 할때마다 입니다.

여기서. 보조 지표를 좀더 곁들여서 써야 확률이 올라 갑니다. 

macd나 rsi stoch 같은 추세와 가격의 흐름을 파악할 수 있는 보조 지표들을 함께 접목 시켜야 됩니다.

그리고. 지지와 저항. 매물대를 파악을 해야 합니다. 이 지지와 저항 그리고 매물대를 파악을 하면

대강이라도 어느 때까지 올라갈 것이고 횡보를 할 것이고 닿아서 반등할 것이다 라는 예상 시나리오를

만들 수가 있습니다. 그리고 나서 매매 신호를 보조 삼아 롱이냐 숏이냐를 판단하고 들어 가야 합니다.

방법은 1시간봉 롱 신호가 떳다면 그곳을 세로줄로 표시를 하고. 신호가 뜬 시간대의 타임프레임을 분석을 합니다.

그렇게 저항과 지지를 설정을 해놓고. 손절과 익절을 정한 다음. 매매에 들어 갑니다.

직접 만들어서 위의 과정을 통해 매매를 진행해 보니 꽤나 괜찮은 승률이 나왔습니다. 

여기서 중요한건 절대로 욕심을 내서는 안됩니다. 손절과 익절을 정하면 그것을 꼭 지켜 주세요.

좀더 구체적으로 설명을 드리겠습니다.

1시간봉 롱 신호 > rsi,macd의 흐름을 파악 캔들 파악, 저항과 매물대를 찾음.

하위 분봉 > 동일 한 조건으로 분석

최종 매매 > 캔들과 보조 지표들이 상승 하는 모멘텀이 나온다면. 롱 진입

익절 위치. 1분봉 저항 라인으로 설정. (거래가 많이 나온곳)

손절 위치. 1분봉 저점으로 설정. 

입니다. 아직 초기 지표라 손볼것이 많으니. 

차츰 차츰 업데이트를 해 볼까합니다. 

써 보시고 개선점들을 댓글로 알려 주세요 

코드는 밑에 넣고 그대로 복사해서

트레이딩뷰 pine에디터를 클릭 > 새로만들기 > 인디게이터 > 코드 복사 붙혀넣기 > 저장 

하면 지표에 퍼스널에 저장이 됩니다.

 

//@version=6
indicator("SMA 기반 이평선 + 다중타임프레임 매매신호", overlay=true)

// === 사용자 입력 ===
sma5_len   = input.int(5, "SMA 5 Length")
sma20_len  = input.int(20, "SMA 20 Length")
sma60_len  = input.int(60, "SMA 60 Length")
sma120_len = input.int(120, "SMA 120 Length")
sma200_len = input.int(200, "SMA 200 Length")

sma5_color   = input.color(color.red, "SMA 5 Color")
sma20_color  = input.color(color.orange, "SMA 20 Color")
sma60_color  = input.color(color.green, "SMA 60 Color")
sma120_color = input.color(color.blue, "SMA 120 Color")
sma200_color = input.color(color.purple, "SMA 200 Color")

sma5_width   = input.int(1, "SMA 5 Width")
sma20_width  = input.int(1, "SMA 20 Width")
sma60_width  = input.int(1, "SMA 60 Width")
sma120_width = input.int(1, "SMA 120 Width")
sma200_width = input.int(2, "SMA 200 Width")

// === 현재 타임프레임 판별 ===
is1H  = timeframe.period == "60"
is30M = timeframe.period == "30"
is15M = timeframe.period == "15"
is5M  = timeframe.period == "5"
is3M  = timeframe.period == "3"

// === SMA 계산 ===
sma5   = ta.sma(close, sma5_len)
sma20  = ta.sma(close, sma20_len)
sma60  = ta.sma(close, sma60_len)
sma120 = ta.sma(close, sma120_len)
sma200 = ta.sma(close, sma200_len)

// === SMA 플롯 ===
plot(sma5,   color=sma5_color,   linewidth=sma5_width,   title="SMA 5")
plot(sma20,  color=sma20_color,  linewidth=sma20_width,  title="SMA 20")
plot(sma60,  color=sma60_color,  linewidth=sma60_width,  title="SMA 60")
plot(sma120, color=sma120_color, linewidth=sma120_width, title="SMA 120")
plot(sma200, color=sma200_color, linewidth=sma200_width, title="SMA 200")

// === SMA 5/20 교차 판단 함수 ===
check_cross(tf) =>
    s5      = request.security(syminfo.tickerid, tf, ta.sma(close, 5))
    s20     = request.security(syminfo.tickerid, tf, ta.sma(close, 20))
    s5_prev  = request.security(syminfo.tickerid, tf, ta.sma(close[1], 5))
    s20_prev = request.security(syminfo.tickerid, tf, ta.sma(close[1], 20))
    long_sig  = s5_prev < s20_prev and s5 > s20
    short_sig = s5_prev > s20_prev and s5 < s20
    [long_sig, short_sig]

// === 각 타임프레임별 신호 계산 ===
[long_1h, short_1h]     = check_cross("60")
[long_30m, short_30m]   = check_cross("30")
[long_15m, short_15m]   = check_cross("15")
[long_5m, short_5m]     = check_cross("5")
[long_3m, short_3m]     = check_cross("3")

// === 현재 타임프레임에서만 해당 신호 표시 ===
plotshape(is1H and long_1h, title="1H 매수", location=location.belowbar, style=shape.triangleup, color=color.lime, size=size.small)
plotshape(is1H and short_1h, title="1H 매도", location=location.abovebar, style=shape.triangledown, color=color.red, size=size.small)

plotshape(is30M and long_30m, title="30M 매수", location=location.belowbar, style=shape.triangleup, color=color.teal, size=size.small)
plotshape(is30M and short_30m, title="30M 매도", location=location.abovebar, style=shape.triangledown, color=color.maroon, size=size.small)

plotshape(is15M and long_15m, title="15M 매수", location=location.belowbar, style=shape.triangleup, color=color.blue, size=size.small)
plotshape(is15M and short_15m, title="15M 매도", location=location.abovebar, style=shape.triangledown, color=color.orange, size=size.small)

plotshape(is5M and long_5m, title="5M 매수", location=location.belowbar, style=shape.triangleup, color=color.fuchsia, size=size.small)
plotshape(is5M and short_5m, title="5M 매도", location=location.abovebar, style=shape.triangledown, color=color.purple, size=size.small)

plotshape(is3M and long_3m, title="3M 매수", location=location.belowbar, style=shape.triangleup, color=color.navy, size=size.small)
plotshape(is3M and short_3m, title="3M 매도", location=location.abovebar, style=shape.triangledown, color=color.gray, size=size.small)
반응형