[전산쟁이 퀀트개발] 3편: 피보나치 눌림목 + VWAP 기울기 + 호가 잔량: 퀀트 단타 4단계 정밀 진입 타점
안녕하세요, 전산쟁이입니다! 앞선 2편에서 스크리닝한 주도주를 무지성으로 시장가 매수하면 어떻게 될까요? 눌림목이 아닌 돌파 고점에 물려 손실을 보기 십상입니다. 이번 3편에서는 4가지 핵심 지표를 조합한 정밀 눌림목 타점을 소개합니다.
1. 4단계 매수 검증 필터 메커니즘
매수 버튼을 누르기 전, 봇은 2초 간격으로 아래 4가지 조건이 동시에(ALL MET) 성립하는지 검증합니다.
📐 퀀트 매수 4대 신호 체계
1️⃣ Swing Low 피보나치 눌림: 고점 대비 최근 N분 파동 저점 기준 30%~50% 되돌림 영역 진입
2️⃣ VWAP 60초 기울기 우상향: 거래량 가중 평균가(VWAP)의 최근 60초 기울기가 + 양수 유지
3️⃣ 호가 잔량 잔량비 (Orderbook Ratio): 매도총잔량 / 매수총잔량 ≥ 0.8배 (눌림목 받침 잔량 유효)
4️⃣ 틱 수급 모멘텀 2회 연속 달성: 최근 틱 상승 비중 50% 이상 신호가 연속 2회(약 4초) 확인
1️⃣ Swing Low 피보나치 눌림: 고점 대비 최근 N분 파동 저점 기준 30%~50% 되돌림 영역 진입
2️⃣ VWAP 60초 기울기 우상향: 거래량 가중 평균가(VWAP)의 최근 60초 기울기가 + 양수 유지
3️⃣ 호가 잔량 잔량비 (Orderbook Ratio): 매도총잔량 / 매수총잔량 ≥ 0.8배 (눌림목 받침 잔량 유효)
4️⃣ 틱 수급 모멘텀 2회 연속 달성: 최근 틱 상승 비중 50% 이상 신호가 연속 2회(약 4초) 확인
2. Swing Low 기반 피보나치 되돌림 로직
일반적인 피보나치는 당일 '시가'를 기준으로 하지만, 단타 파동에서는 최근 N분간의 파동 저점(Swing Low)을 기준으로 측정해야 정밀합니다.
# 최근 60개 샘플(약 2분) 중 최소 가격을 Swing Low로 산정
swing_low = min(self.price_history[code]) if len(self.price_history[code]) >= 5 else low
if high > swing_low and swing_low > 0:
# 당일 파동 대비 되돌림 비율(Retracement Ratio) 계산
retracement_ratio = ((high - cp) / (high - swing_low)) * 100
# 30% ~ 50% 적정 피보나치 눌림목 구간이 아니면 스킵
if not (30.0 <= retracement_ratio <= 50.0):
self.log_skip_reason(code, name, "FIBO_RANGE_OUT", f"피보나치 눌림 이탈 ({retracement_ratio:.1f}%)")
continue
3. VWAP(거래량가중평균가) 60초 기울기 검증
VWAP은 주식 단타의 '생명선'입니다. 단순히 현재가가 VWAP 근처에 있는 것만으로는 부족하며, **VWAP 자체가 우상향 흐름(Slope > 0)**을 그리고 있어야 진짜 주도주 눌림목입니다.
# 60초 전 VWAP 데이터 샘플링
past_vwap_sample = None
for past_ts, past_v in self.vwap_history[code]:
if (now_ts - past_ts) >= 60: # 60초 전
past_vwap_sample = (past_ts, past_v)
break
if past_vwap_sample:
past_ts, past_vwap = past_vwap_sample
vwap_slope = vwap - past_vwap
# VWAP 기울기가 0 이하(보합 또는 우하향)면 진입 차단!
if vwap_slope <= 0:
self.log_skip_reason(code, name, "VWAP_SLOPE_DOWN", f"VWAP 추세 우하향 ({vwap_slope:+.2f})")
continue
4. 호가 잔량 및 거래량 소쇄 검증
음봉이 떨어질 때 거래량이 터지면 세력의 매도 물량 투하(Volume Spike)일 수 있습니다. 따라서 거래량이 줄어드는 **거래량 소쇄(Contraction)** 상태와 호가 받침을 확인합니다.
# 음봉 발생 시 이전 최대 거래량의 75% 이상 터지면 음봉 트랩으로 판정하여 진입 금지
if cp < last_price and vol_delta > max_vol_surge * 0.75:
self.log_skip_reason(code, name, "VOL_SPIKE_ON_DROP", "음봉 거래량 분출 트랩 포착")
continue
# 호가 잔량 비율 검증 (매도잔량 / 매수잔량 >= 0.8)
if total_bid > 0:
ob_ratio = total_ask / total_bid
if ob_ratio < 0.8:
self.log_skip_reason(code, name, "ORDERBOOK_WEAK", f"호가 수급 약세 ({ob_ratio:.2f})")
continue
5. 다음 편 예고
진입 타점이 아무리 정교해도, 손절과 청산 규칙이 허술하면 한 번의 뇌동매매로 계좌가 무너집니다.
다음 [4편]에서는 **VWAP 노이즈 버퍼 손절(-0.5%)**, **ATR 기반 트레일링 스탑**, **14:50 타임컷** 및 **실전/가상매수 이중 모드**를 활용한 무결점 리스크 관리 방식을 완벽 공개합니다!
728x90
반응형
'전산쟁이 > AI 주식 자동매매 Lab' 카테고리의 다른 글
| [전산쟁이 퀀트개발] 4편: VWAP 노이즈 버퍼 손절부터 ATR 트레일링 스탑까지: 3단계 다차원 리스크 관리 (0) | 2026.08.07 |
|---|---|
| [전산쟁이 퀀트개발] 2편: 잡주·윗꼬리 완전 차단! 시총 1,000억+ 당일 주도주 실시간 스크리닝 알고리즘 (0) | 2026.08.07 |
| [전산쟁이 퀀트개발] 1편: 파이썬 & Discord.py 기반 자동매매 봇 아키텍처와 상태 복구(State Persistence) 설계 (0) | 2026.08.07 |
| 주식 초보를 위한 AI 조언자: Gemini API로 숫자에 '의미'를 부여하기 (0) | 2026.02.10 |
| 포스팅: API 속도 최적화(멀티스레딩, I/O 바운드, 실시간 스캐닝) (0) | 2026.02.10 |