자동매매 알고리즘 신호 스캔 필터 차단 트레이딩 화면

V4.0을 처음 돌렸을 때 가장 신기했던 건, 시스템이 종목을 끊임없이 쳐다보고 있다는 거였다. 장이 열리든 닫혀 있든 스캔은 계속 돌고 있었고, 조건에 맞는 종목이 나타나면 신호를 뱉었다.

근데 문제가 있었다. 신호가 잡히면 그게 곧 매수로 이어지는 구조였다. 스캔이랑 주문이 하나로 묶여 있었던 것이다. 시장이 안 좋아도, 군집 열기가 없어도, 타이밍이 안 맞아도 — 신호가 뜨면 사는 구조.

이건 위험하다. 그래서 V4.1에서 가장 먼저 손댄 게 이 부분이었다.

⚡ SCAN≠BUY — 스캔과 매수는 다르다

V4.1의 핵심 변화는 딱 한 줄로 요약된다.

[2026-03-05 21:18:32] ✅ GENIE V4.1 가동 완료 (SCAN always + BUY gated + realtime80 rotation) [2026-03-05 21:18:32] ✅ 핵심 원칙: SCAN≠BUY (후보/시그널은 항상, 주문은 조건 충족 시만)

SCAN은 항상 돌린다. 어떤 상황에서도 종목을 들여다보고 신호를 감지하는 건 멈추지 않는다. 하지만 BUY는 다르다. 신호가 잡혔다고 바로 사는 게 아니라, 별도의 조건을 모두 통과해야만 주문이 나간다.

스캔과 매수를 분리한 것이다. 이게 왜 중요한지는 실제 로그를 보면 바로 이해된다.

📋 신호는 잡혔지만 사지 않은 기록들

3월 6일 로그를 보면 이런 줄이 수십 개 찍혀 있다.

🟡 [BUY_SIGNAL_DRY] 042700 한미반도체 engine=E2_PULLBACK blocked=before_entry_time reason=눌림재돌파 cur=332,500 🟡 [BUY_SIGNAL_DRY] 074600 원익QnC engine=E2_PULLBACK blocked=cluster_block:heat=1 need=3 reason=눌림재돌파 cur=34,450 🟡 [BUY_SIGNAL_DRY] 089030 테크윙 engine=E2_PULLBACK blocked=cluster_block:heat=1 need=3 reason=눌림재돌파 cur=66,300

BUY_SIGNAL_DRY는 "신호는 잡혔는데 실제 매수는 안 했다"는 뜻이다. DRY RUN, 즉 드라이 실행이다.

한미반도체는 시간 조건에 막혔고, 원익QnC와 테크윙은 군집 열기가 1인데 최소 3이 필요해서 차단됐다. 신호 자체는 맞았지만, 시장 전체 분위기가 받쳐주지 않았던 것이다.

만약 V4.0처럼 신호=매수 구조였다면 이 종목들을 전부 샀을 거다. 그리고 BEAR 장에서 물렸을 가능성이 높다.

SCAN과 BUY 분리된 데이터 스트림 필터 아키텍처 일러스트

🔒 BUY가 통과하려면 뭘 충족해야 하나

V4.1에서 실제 매수 주문이 나가려면 아래 조건을 모두 통과해야 한다.

  1. 엔진 신호 확인 — E1(실시간 양봉), E2(눌림 재돌파) 등 매수 엔진에서 신호 발생
  2. 시간 조건 통과 — 장 시작 직후나 마감 직전 등 매수 금지 시간대가 아닌지 확인
  3. 레짐 확인 — 현재 시장이 BEAR면 매수 기준을 높이거나 차단
  4. 군집 열기 확인 — 최근 240초 안에 동시 강세 종목이 일정 수준(heat) 이상인지 확인
  5. 포지션 슬롯 확인 — 이미 MAX_POSITIONS(3개) 가득 찼으면 추가 매수 차단
구분 V4.0 (이전) V4.1 (개선)
신호 발생 시 바로 매수 조건 검증 후 결정
BEAR 장에서 그냥 매수 차단 또는 기준 강화
군집 없을 때 그냥 매수 heat 미달 시 차단
로그 기록 체결 결과만 DRY 신호 포함 전체

한국 주식 캔들스틱 눌림 재돌파 패턴 기술적 분석 차트

❓ Q&A

Q. DRY 신호가 많이 나오면 시스템이 너무 보수적인 거 아닌가?

처음엔 나도 그렇게 생각했다. 신호가 잡히는데 안 사는 게 답답하게 느껴졌다. 근데 DRY 신호가 많다는 건 시장이 그만큼 안 좋다는 뜻이다. BEAR 장에서 신호 나는 족족 다 샀다가 물리는 게 더 문제다. 안 사는 것도 포지션이다.

✍️ 2편을 마치며

SCAN≠BUY 원칙은 자동매매에서 가장 중요한 개념 중 하나다. 시스템이 많이 보는 것과 많이 사는 건 다르다. 오히려 덜 사는 시스템이 더 좋은 시스템일 때가 많다.

V4.0에서 V4.1로 넘어가면서 GENIE는 처음으로 "하지 말아야 할 때를 아는 시스템"이 됐다.

3편에서는 V4.8에서 발견한 체결 구조 버그 이야기를 다룰 예정이다. 주문은 나갔는데 체결됐는지 안 됐는지를 시스템이 몰랐던 그 황당한 상황.

※ 본 글은 자동매매 시스템 개발 과정을 기록한 정보 제공 목적의 개발 일지입니다. 투자 권유나 수익 보장이 아니며, 모든 투자 판단과 책임은 본인에게 있습니다.