거래량 (Volume)¶
거래량 지표는 가격 움직임의 신뢰도를 측정합니다. 가격 상승이 거래량을 동반하면 추세가 강하다고 판단합니다.
ta.obv()¶
OBV (On-Balance Volume)
거래량을 누적하여 가격과 거래량의 관계를 분석합니다. 가격 상승 시 거래량을 더하고, 하락 시 빼는 방식입니다.
ta.obv(close, volume) → TSeries
파라미터:
| 이름 | 타입 | 설명 |
|---|---|---|
close |
TSeries | 종가 시계열 |
volume |
TSeries | 거래량 시계열 |
반환값: TSeries
해석:
- OBV 상승: 매수세 증가 (가격 상승 가능)
- OBV 하락: 매도세 증가 (가격 하락 가능)
- 가격은 횡보인데 OBV 상승: 잠재적 상승 돌파 신호
- 가격은 상승인데 OBV 하락: 추세 약화 경고
예제:
c = chart("1D")
obv = ta.obv(c.close, c.volume)
c.line("OBV", obv, color="blue")
# OBV 이동평균과 비교
obv_ma = ta.sma(obv, 20)
c.line("OBV MA", obv_ma, color="orange")
if obv.cross_up(obv_ma):
buy(tag="OBV 상향 돌파 — 매수세 증가")
elif obv.cross_down(obv_ma):
sell(tag="OBV 하향 이탈 — 매도세 증가")
OBV 다이버전스¶
c = chart("1D")
obv = ta.obv(c.close, c.volume)
# 가격은 신고가인데 OBV는 신고가 못 만듦 → 약세 다이버전스
price_high = c.close[0] >= ta.highest(c.close, 20)[0]
obv_not_high = obv[0] < ta.highest(obv, 20)[0]
if price_high and obv_not_high:
log("OBV 약세 다이버전스 — 추세 약화 가능성")
sell(tag="OBV 약세 다이버전스")
ta.vwap()¶
VWAP (Volume Weighted Average Price)
거래량 가중 평균 가격으로, 기관 투자자들이 자주 사용하는 벤치마크 가격입니다.
ta.vwap(high, low, close, volume) → TSeries
파라미터:
| 이름 | 타입 | 설명 |
|---|---|---|
high |
TSeries | 고가 시계열 |
low |
TSeries | 저가 시계열 |
close |
TSeries | 종가 시계열 |
volume |
TSeries | 거래량 시계열 |
반환값: TSeries
해석:
- 가격 > VWAP: 매수세 우위, 평균 매입가 이상
- 가격 < VWAP: 매도세 우위, 평균 매입가 이하
- VWAP은 지지/저항으로 작용하기도 함
예제:
c = chart("5T")
vwap = ta.vwap(c.high, c.low, c.close, c.volume)
c.line("VWAP", vwap, color="purple")
# VWAP 기준 매매
if c.close > vwap:
buy(tag="VWAP 위 — 매수세 우위")
elif c.close < vwap:
sell(tag="VWAP 아래 — 매도세 우위")
VWAP 밴드 전략¶
c = chart("5T")
vwap = ta.vwap(c.high, c.low, c.close, c.volume)
atr = ta.atr(c.high, c.low, c.close, 14)
# VWAP 상하 밴드
vwap_upper = vwap[0] + atr[0] * 2
vwap_lower = vwap[0] - atr[0] * 2
if c.close[0] < vwap_lower:
buy(tag="VWAP 하단밴드 이탈 — 반등 기대")
elif c.close[0] > vwap_upper:
sell(tag="VWAP 상단밴드 이탈 — 과열")
거래량 분석 전략¶
version("1.0")
description("거래량 확인 추세 전략")
c = chart("1D")
# 거래량 지표
obv = ta.obv(c.close, c.volume)
obv_ma = ta.sma(obv, 20)
vol_sma = ta.sma(c.volume, 20)
# 추세 지표
sma20 = ta.sma(c.close, 20)
# 차트 표시
c.line("SMA 20", sma20, color="blue")
c.line("Vol SMA", vol_sma, color="gray")
# 가격 상승 + 거래량 증가 + OBV 상승 = 강한 매수 시그널
price_up = c.close > sma20
vol_surge = c.volume[0] > vol_sma[0] * 1.5
obv_bullish = obv > obv_ma
if price_up and vol_surge and obv_bullish:
buy(tag="가격+거래량+OBV 삼중 확인")
elif not price_up and vol_surge and not obv_bullish:
sell(tag="하락+거래량증가+OBV약세")
else:
hold()
관련 문서¶
- 오실레이터 — RSI, MACD와 거래량 조합
- 유틸리티 — highest, lowest 등 보조 함수
- ta.* 전체 레퍼런스 — 모든 지표 시그니처