2026년 3월 13일 오전 10시 20분 01초.
로그 파일에 이런 줄이 찍혔다.
📩 [OnReceiveMsg]
screen=5000
rqname=BUY_E2_PULLBACK
trcode=KOA_NORMAL_BUY_KQ_ORD
msg=[100000] 모의투자 매수주문완료
📩 [체잔G0] code=019210 와이지-원
side=BUY order_type='시장가'
체결가=12360 체결량=42 평균단가=12360
📩 [체잔G1] code=019210 와이지-원
side=BUY 보유수량=42 평균단가=12360
✅ [포지션확정:BUY] 019210 와이지-원
qty=42 avg=12360
이 줄들을 꽤 오래 쳐다봤다. 별거 아닌 로그 몇 줄인데, 처음으로 GENIE가 스스로 판단해서 주문을 내고 체결까지 확인한 순간이었으니까.
와이지원. 42주. 12,360원. GENIE의 첫 번째 포지션이다.
🔍 그날 무슨 일이 있었나
3월 13일은 이전 며칠과 달랐다. V4.14 당시 하루 종일 heat=0이던 장과는 분위기가 달랐다. 장 초반부터 군집 열기가 올라오기 시작했다.
그런데 처음엔 다른 문제가 생겼다. 장 시작 직후 로그에 이런 줄이 수십 개 찍혔다.
⛔ [BUY_BLOCK_SYNC] 272210 한화시스템
holdings_sync_ok=False fail=0
reason=not_ready
→ 시장필터가 아닌 sync 문제!
⛔ [BUY_BLOCK_SYNC] 032820 우리기술
holdings_sync_ok=False fail=0
reason=not_ready
→ 시장필터가 아닌 sync 문제!
holdings_sync_ok=False. 잔고 동기화가 아직 안 된 상태라 매수를 차단한 것이다. 장이 열리자마자 키움 서버에서 잔고 데이터를 받아오는 데 시간이 걸리는 건데, 그 사이에 신호가 먼저 들어온 것이다.
이건 버그가 아니라 정상적인 안전장치다. 잔고를 모르는 상태에서 매수를 허용하면 포지션 관리가 꼬일 수 있으니까. 잠시 후 동기화가 완료되고, 그 다음부터 진짜 신호 검토가 시작됐다.
📈 와이지원이 선택된 이유
와이지원(019210)은 절삭 공구 전문 제조사다. 그날 GENIE가 이 종목을 고른 건 E2_PULLBACK 엔진, 즉 눌림 재돌파 패턴이 감지됐기 때문이다.
로그에 찍힌 체결 정보를 보면 시장가 주문이었고, 슬리피지는 0.000%였다. 원하는 가격에 정확하게 체결됐다는 뜻이다.
| 항목 | 내용 |
|---|---|
| 종목 | 와이지원 (019210) |
| 매수 엔진 | E2_PULLBACK (눌림 재돌파) |
| 체결가 | 12,360원 |
| 체결량 | 42주 |
| 주문 방식 | 시장가 |
| 슬리피지 | 0.000% |
| 체결 시각 | 2026-03-13 10:20:02 |
🤔 체결 직후 이상한 줄이 하나 더 찍혔다
체결 확인 직후 로그에 이런 줄이 추가로 찍혔다.
📩 [체잔G0] code=019210 와이지-원
side=UNKNOWN order_type='시장가'
체결가=12361 체결량=47 평균단가=12361
side=UNKNOWN. 매수인지 매도인지를 시스템이 인식 못 한 이벤트가 하나 더 왔다. 체결가도 12,361원으로 1원 다르고, 수량도 42주가 아닌 47주다.
이건 키움 API에서 가끔 발생하는 중복 또는 잔여 이벤트다. 실제 잔고는 G1에서 이미 42주로 확정됐기 때문에 이 UNKNOWN 이벤트는 무시하도록 처리해뒀다. 그래도 처음 보면 당황스러운 건 사실이다. 이런 케이스도 로그에 남겨두고 분석해야 한다는 걸 배운 순간이기도 했다.
❓ Q&A
Q. 모의투자랑 실계좌랑 차이가 많이 나나?
로직 자체는 동일하다. 키움 API가 모의투자와 실계좌를 거의 같은 방식으로 처리하기 때문에 코드 수정은 최소화된다. 다만 실계좌에서는 호가 스프레드, 유동성, 슬리피지가 모의투자와 다를 수 있다. 특히 거래량이 적은 종목은 시장가 주문 시 원하는 가격에 체결되지 않을 수 있다. 그래서 모의투자에서 충분히 검증한 후 실계좌로 넘어가는 게 맞다.
✍️ 6편을 마치며
와이지원 42주, 12,360원. 금액으로 치면 519,120원짜리 모의투자 체결이다. 대단한 금액도 아니고 실제 돈도 아니었지만, 그 로그 줄을 보는 기분은 좀 달랐다.
처음으로 시스템이 스스로 결정을 내렸다. 스캔하고, 필터 통과시키고, 주문 내고, 체결 확인하고, 포지션 확정까지. 사람 손이 하나도 안 들어간 첫 번째 거래였다.
7편에서는 V4.16으로 넘어가면서 시스템이 안정화되는 과정, 그리고 실제 거래가 이어지면서 나온 추가 이슈들을 다룰 예정이다.
※ 본 글은 자동매매 시스템 개발 과정을 기록한 정보 제공 목적의 개발 일지입니다. 투자 권유나 수익 보장이 아니며, 모든 투자 판단과 책임은 본인에게 있습니다.