TradingView Pine Script로 퀀트 전략 지표 만들기
TradingView의 Pine Script로 커스텀 지표와 전략을 만들고, 백테스트 결과를 Python으로 넘기는 워크플로를 정리합니다.
왜 TradingView인가
차트 분석 도구는 많지만, TradingView를 쓰는 이유는 두 가지입니다.
첫째, Pine Script. 프로그래밍 언어로 커스텀 지표와 전략을 직접 만들 수 있습니다. 코드를 모르는 트레이더도 쓸 수 있을 정도로 문법이 단순하면서, 복잡한 조건부 로직과 멀티 타임프레임 분석까지 가능합니다.
둘째, 데이터 커버리지. 전 세계 주식, 암호화폐, 외환, 선물, 지수 데이터를 하나의 플랫폼에서 봅니다. BTC와 DXY를 나란히 놓고 상관관계를 확인하는 게 클릭 몇 번이면 됩니다.
Pine Script 기초: 커스텀 지표 만들기
이동평균 크로스오버 지표
가장 기본적인 전략 신호입니다. 단기 이동평균이 장기 이동평균을 상향 돌파하면 매수, 하향 돌파하면 매도.
//@version=6
indicator("MA Crossover Signal", overlay=true)
fast = ta.sma(close, 20)
slow = ta.sma(close, 50)
plot(fast, color=color.blue, linewidth=2)
plot(slow, color=color.orange, linewidth=2)
buySignal = ta.crossover(fast, slow)
sellSignal = ta.crossunder(fast, slow)
plotshape(buySignal, title="Buy", location=location.belowbar,
color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Sell", location=location.abovebar,
color=color.red, style=shape.triangledown, size=size.small)
BTC + DXY 상관관계 대시보드
BTC 가격과 DXY를 한 차트에 겹쳐보는 지표입니다. 역상관이 뚜렷할 때 매매 시점을 잡는 데 씁니다.
//@version=6
indicator("BTC vs DXY Correlation", overlay=false)
btc = request.security("BINANCE:BTCUSDT", timeframe.period, close)
dxy = request.security("TVC:DXY", timeframe.period, close)
// 20일 상관계수
corr = ta.correlation(btc, dxy, 20)
plot(corr, color=corr > 0 ? color.red : color.green, linewidth=2)
hline(0, color=color.gray, linestyle=hline.style_dashed)
hline(0.5, color=color.new(color.red, 80))
hline(-0.5, color=color.new(color.green, 80))
Pine Script 전략 → Python 백테스트 연결
Pine Script의 strategy 모드로 간단한 백테스트가 가능하지만, 복잡한 검증(Walk-forward, 거래 비용 반영 등)은 Python에서 하는 게 맞습니다.
워크플로
- TradingView에서 전략 아이디어를 Pine Script로 빠르게 프로토타이핑
- 결과가 유망하면 같은 로직을 Python(Backtrader/QuantConnect)으로 이식
- Python에서 Walk-forward, Purged K-Fold 등 엄밀한 검증 수행
- 검증 통과 시 실전 연결 (IBKR API 등)
Pine Script → Python 이식 예시
import pandas as pd
import numpy as np
def ma_crossover_signal(df: pd.DataFrame, fast: int = 20, slow: int = 50):
"""Pine Script MA Crossover를 Python으로 이식"""
df['fast_ma'] = df['close'].rolling(fast).mean()
df['slow_ma'] = df['close'].rolling(slow).mean()
df['signal'] = 0
df.loc[df['fast_ma'] > df['slow_ma'], 'signal'] = 1 # 매수
df.loc[df['fast_ma'] < df['slow_ma'], 'signal'] = -1 # 매도
# 크로스오버 시점만 추출
df['trade'] = df['signal'].diff().abs() > 0
return df
TradingView 무료 vs 유료
| 기능 | 무료 | Essential ($12.95/월) | Plus ($24.95/월) | Premium ($49.95/월) |
|---|---|---|---|---|
| 차트당 지표 수 | 2개 | 5개 | 10개 | 25개 |
| 타임프레임 | 기본만 | 초 단위 추가 | 동일 | 동일 |
| 알림 | 5개 | 20개 | 100개 | 400개 |
| 레이아웃 저장 | 1개 | 5개 | 10개 | 무제한 |
| 서버 사이드 알림 | ✗ | ✓ | ✓ | ✓ |
| Pine Script 전략 | 기본 | 동일 | 동일 | 동일 |
퀀트 리서처 기준: Essential이면 충분합니다. 지표 5개로 대부분의 분석이 가능하고, 서버 사이드 알림으로 자동 통지를 받을 수 있습니다.
Premium이 필요한 경우: 동시에 여러 전략을 모니터링하거나, 초 단위 데이터 분석이 필요한 경우.
BTC 분석 레이아웃 세팅
저는 BTC 분석할 때 4분할 레이아웃을 씁니다:
- 왼쪽 상단: BTC/USDT 4시간봉 — 하모닉 패턴 + MA 크로스오버
- 오른쪽 상단: DXY 일봉 — 달러 강약 추세
- 왼쪽 하단: BTC 펀딩레이트 (Bybit/Binance)
- 오른쪽 하단: BTC vs DXY 상관계수 지표
이 레이아웃이면 한 화면에서 가격, 매크로, 파생상품, 상관관계를 동시에 봅니다.
정리
TradingView는 아이디어를 빠르게 시각화하고 검증하는 도구로 쓰고, 엄밀한 백테스트와 실전 연결은 Python으로 넘기세요.
Pine Script → Python 이식 → Walk-forward 검증 → 실전 연결이 퀀트 개발자에게 가장 현실적인 워크플로입니다.
TradingView 가입하기 — 이 링크로 유료 플랜 가입 시 할인이 적용됩니다.