본문 바로가기
4060 세대를 위한 실용적인 경제와 금융 이야기
경제 금융 포털사이트 경제 금융 포털사이트

트레이딩뷰 파인스크립트 알림 설정, 15분봉과 1시간봉 매수 신호 만들기

금알남 조회 2

트레이딩뷰에서 파인스크립트의 request.security() 함수와 alertcondition() 함수를 활용해 15분봉과 1시간봉을 함께 확인하는 매수 알림 만들 수 있습니다. 예를 들어 1시간봉에서는 상승 추세를 확인하고, 15분봉에서는 이동평균선이 골든크로스할 때 알림을 보내도록 설정하는 방식입니다. 다만 이러한 알림은 매매 조건을 알려주는 기능이며 실제 주문을 자동으로 실행하는 것과는 다릅니다.

주식이나 ETF를 단기매매할 때 15분봉만 보고 매수했다가 1시간봉에서는 하락 추세가 이어지고 있어 손실이 발생하는 경우가 있습니다. 이런 문제를 줄이기 위해 서로 다른 시간봉을 함께 확인하는 방법을 다중 타임프레임(Multi-Timeframe) 분석이라고 합니다.

트레이딩뷰에서는 파인스크립트를 활용해 이 조건을 하나의 지표로 만들고, 매번 차트를 직접 확인하지 않아도 알림을 받을 수 있습니다.

15분봉과 1시간봉을 함께 보는 이유

15분봉과 1시간봉은 서로 다른 역할을 합니다.

1시간봉은 비교적 큰 흐름을 확인하는 데 활용하고, 15분봉은 그 흐름 안에서 단기적인 매매 시점을 살펴보는 데 사용할 수 있습니다.

예를 들어 1시간봉의 20기간 지수이동평균선(EMA)이 50기간 EMA보다 위에 있다면 상승 추세 조건으로 분류할 수 있습니다.

이 상태에서 15분봉의 9기간 EMA가 21기간 EMA를 아래에서 위로 돌파하면 매수 관심 신호로 설정하는 방식입니다.

확인 항목1시간봉15분봉
주요 목적큰 흐름 확인단기 진입 시점 확인
사용하는 지표20·50 EMA9·21 EMA
상승 조건20 EMA가 50 EMA 위9 EMA가 21 EMA 상향 돌파
역할추세 필터매수 알림 발생

이러한 조건을 함께 사용하면 장기 흐름과 단기 흐름이 모두 상승 방향인 상황만 골라낼 수 있습니다.

그러나 시간봉을 여러 개 사용한다고 승률이 반드시 높아지는 것은 아닙니다. 조건이 까다로워질수록 신호 횟수가 줄어들고 유리한 매수 기회를 놓칠 수도 있습니다.

매수·매도 알림 조건은 어떻게 만들까?

파인스크립트에서 사용할 조건은 단순하게 정하는 것이 좋습니다.

매수 관심 신호

다음 두 조건이 동시에 충족될 때 발생하도록 설정합니다.

  1. 직전에 마감된 1시간봉의 20 EMA가 50 EMA보다 높습니다.
  2. 현재 15분봉에서 9 EMA가 21 EMA를 상향 돌파하고 해당 봉이 마감됩니다.

이 조건은 1시간봉에서 상승 흐름을 확인하고 15분봉에서 단기 상승 전환이 나타나는지를 보는 방식입니다.

매도·청산 검토 신호

현재 15분봉에서 9 EMA가 21 EMA를 하향 돌파하고 해당 봉이 마감되면 알림을 발생시키겠습니다.

매수와 매도 신호의 역할은 다릅니다.

매수 신호는 상위 시간봉의 상승 조건까지 확인하지만, 매도 알림은 단기 상승 흐름이 약해졌다는 사실을 알리는 용도입니다.

따라서 매도 알림이 발생했다고 반드시 즉시 매도해야 한다는 뜻은 아닙니다.

또한 이번 예제의 EMA 기간은 작동 원리를 설명하기 위한 설정값으로, 특정 종목에서 최적화된 결과가 아닙니다.

파인스크립트 코드 작성과 적용 방법

다음은 트레이딩뷰의 Pine Script v6 문법을 이용한 교육용 예제입니다.

15분봉 차트를 기준으로 1시간봉의 상승 추세를 확인하고, 단기 EMA 교차가 발생하면 알림 조건을 생성합니다.

파인스크립트 예제 코드

//@version=6
indicator("MTF EMA Signal", overlay=true)

// 시간봉과 이동평균 설정
string higherTf = input.timeframe("60", "상위 시간봉")

int fastLen = input.int(9, "15분봉 단기 EMA", minval=1)
int slowLen = input.int(21, "15분봉 장기 EMA", minval=1)

// 상위 시간봉 확인
if timeframe.in_seconds() >= timeframe.in_seconds(higherTf)
    runtime.error("상위 시간봉을 현재 차트보다 크게 설정하세요.")

// 1시간봉의 직전 확정 EMA
float htfFast = request.security(
     syminfo.tickerid,
     higherTf,
     ta.ema(close, 20)[1],
     lookahead=barmerge.lookahead_on)

float htfSlow = request.security(
     syminfo.tickerid,
     higherTf,
     ta.ema(close, 50)[1],
     lookahead=barmerge.lookahead_on)

// 현재 차트의 EMA
float fastEma = ta.ema(close, fastLen)
float slowEma = ta.ema(close, slowLen)

// 교차 조건
bool crossUp = ta.crossover(fastEma, slowEma)
bool crossDown = ta.crossunder(fastEma, slowEma)

// 매수 관심 및 청산 검토 조건
bool buySignal = barstate.isconfirmed and
     htfFast > htfSlow and crossUp

bool exitSignal = barstate.isconfirmed and crossDown

// 차트 표시
plot(fastEma, "Fast EMA", color=color.aqua)
plot(slowEma, "Slow EMA", color=color.orange)

plotshape(buySignal,
     title="Buy Watch",
     style=shape.triangleup,
     location=location.belowbar,
     color=color.lime,
     text="BUY")

plotshape(exitSignal,
     title="Exit Watch",
     style=shape.triangledown,
     location=location.abovebar,
     color=color.red,
     text="EXIT")

// 알림 조건
alertcondition(buySignal,
     title="MTF Buy Alert",
     message="{{ticker}}: 매수 관심 조건 발생")

alertcondition(exitSignal,
     title="MTF Exit Alert",
     message="{{ticker}}: 청산 검토 조건 발생")

이 코드는 실제 주문을 실행하는 자동매매 프로그램이 아니라 차트에 신호를 표시하고 알림 조건을 만드는 지표입니다. 공식 Pine Script v6 문법을 기준으로 작성했으며, 실제 트레이딩뷰 편집기에서 컴파일과 작동 테스트를 완료한 코드는 아닙니다.

코드에서 중요한 세 가지 함수

함수역할
request.security()다른 시간봉의 데이터를 가져옴
ta.crossover()두 이동평균선의 상향 교차 확인
alertcondition()사용자에게 제공할 알림 조건 생성

특히 request.security()에서 상위 시간봉의 직전 확정 데이터인 [1]과 barmerge.lookahead_on을 함께 사용한 부분이 중요합니다.

아직 마감되지 않은 1시간봉의 값을 사용하면 실시간으로 보이던 신호가 나중에 달라지는 리페인팅 현상이 발생할 수 있기 때문입니다.

이번 코드는 마감이 확정된 상위 시간봉 값만 사용하도록 구성했습니다. 따라서 새로 형성 중인 1시간봉의 정보를 바로 활용하는 방식보다 신호는 늦어질 수 있습니다.

알림이 자동으로 울리도록 설정하는 순서

코드를 작성한 뒤에는 트레이딩뷰 차트에 적용하고 실제 알림을 생성해야 합니다.

  1. 트레이딩뷰에서 원하는 종목의 차트를 열고 시간봉을 15분으로 변경합니다.
  2. Pine Editor에 코드를 붙여넣고 저장한 뒤 차트에 추가합니다.
  3. 차트에 단기 EMA와 장기 EMA, BUY·EXIT 표시가 나타나는지 확인합니다.
  4. 알림 만들기 메뉴에서 방금 추가한 지표를 선택합니다.
  5. 조건에서 MTF Buy Alert 또는 MTF Exit Alert를 선택하고 알림 빈도는 봉 마감 시 1회를 기준으로 설정합니다.
  6. 앱 알림이나 이메일 등 원하는 수신 방법을 선택하고 알림을 생성합니다.

매수 관심 알림과 청산 검토 알림을 모두 사용하려면 일반적으로 각각 별도 알림을 만들어야 합니다.

또한 코드를 수정하거나 지표 설정을 변경하더라도 이미 만들어둔 알림에는 새로운 설정이 자동 적용되지 않을 수 있습니다. 수정 내용을 반영하려면 알림을 다시 생성해야 합니다.

실전 사용 전 주의할 세 가지

첫째, 알림과 자동 주문은 다릅니다

alertcondition()은 매수·매도 조건이 충족됐다는 알림을 만드는 함수입니다.

알림이 발생한다고 증권계좌에서 매수나 매도가 자동으로 실행되는 것은 아닙니다.

외부 시스템에 신호를 전달하려면 웹훅(Webhook) 등의 연동 기능을 활용할 수 있지만, 실제 자동 주문을 구현하려면 별도의 주문 실행 시스템과 인증, 오류 처리 과정이 필요합니다.

특히 계좌 비밀번호나 API 비밀키를 웹훅 메시지에 그대로 포함하는 것은 피해야 합니다.

둘째, 리페인팅을 확인해야 합니다

리페인팅은 실시간 차트에서 나타난 신호가 데이터 확정이나 차트 재계산 이후 과거에 보이는 모습과 달라지는 현상입니다.

이번 예제는 직전에 확정된 1시간봉 데이터와 마감된 15분봉 조건을 사용해 이러한 위험을 줄이도록 작성했습니다.

다만 데이터 공급자의 과거 데이터 수정 등 모든 형태의 차트 변화까지 완전히 방지한다고 보장할 수는 없습니다.

셋째, 매수 신호가 수익을 보장하지 않습니다

1시간봉 상승 추세와 15분봉 골든크로스가 동시에 발생해도 주가는 하락할 수 있습니다.

특히 QQQ나 TQQQ 같은 ETF에서는 시장 변동성과 주문 체결가격에 따라 실제 손익이 달라집니다.

따라서 알림 지표를 실제 투자에 적용하기 전에는 과거 구간의 신호 발생 횟수, 손절 조건, 거래비용을 확인하고 모의투자 등을 통해 검증하는 것이 좋습니다.

트레이딩뷰 파인스크립트 알림 설정, 15분봉과 1시간봉 매수 신호 만들기

자주 묻는 질문

Q. 파인스크립트를 몰라도 알림을 만들 수 있나요?

가능합니다. 트레이딩뷰의 기본 알림 기능으로 가격이나 이동평균선 조건을 설정할 수 있습니다. 여러 시간봉을 하나의 사용자 정의 조건으로 결합하려면 파인스크립트가 유용합니다.

Q. 1시간봉이 하락 추세이면 매수 알림이 발생하지 않나요?

이번 예제에서는 직전에 확정된 1시간봉의 20 EMA가 50 EMA보다 높아야 매수 관심 알림이 발생합니다. 해당 조건이 충족되지 않으면 15분봉에서 골든크로스가 나타나더라도 매수 알림은 발생하지 않습니다.

Q. 이 코드로 바로 자동매매할 수 있나요?

아닙니다. 이 코드는 알림용 지표입니다. 자동 주문에는 별도의 검증된 주문 연동 시스템이 필요하며, 실제 자금을 사용하기 전에 충분한 테스트가 필요합니다.

자동매매의 시작은 좋은 매매 조건을 만드는 것입니다

트레이딩뷰의 다중 시간봉 분석은 서로 다른 시간봉의 추세를 한 번에 확인하고 원하는 조건이 나타났을 때 알림을 받도록 만드는 방법입니다.

파인스크립트를 이용하면 1시간봉의 추세와 15분봉의 매수 관심 조건을 결합할 수 있으며, 차트를 계속 지켜보지 않아도 설정한 조건이 충족됐는지 확인할 수 있습니다.

하지만 많은 조건을 결합했다고 해서 수익률이 높아지는 것은 아닙니다.

트레이딩뷰 알림 설정의 핵심은 복잡한 매수 신호를 만드는 것이 아니라, 자신이 정한 조건을 일관되게 확인하고 실제 투자에 적용하기 전에 충분히 검증하는 것입니다.

처음에는 단순한 이동평균선 조건부터 시작한 뒤 신호의 정확성과 위험 관리 방법을 함께 개선하는 것이 좋겠습니다.

참고 자료: TradingView Pine Script v6 공식 문서, TradingView 멀티 타임프레임 분석 및 알림 설정 안내

금알남

금알남
함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.