자동매매 v1.1 운영 세팅 및 첫 실행 대기 로그

자동매매규칙엔진시장레짐운영로그BuildingInPublic

날짜: 2026-04-08

오늘은 자동매매 시스템을 더 공격적으로 매수하게 만든 날이 아니었다. 오히려 반대였다. 장 시작 전후에 시장 상태와 종목 조건을 걸러내고, 조건이 맞지 않으면 아무것도 하지 않는 쪽으로 안전장치를 강화한 날이었다.

자동매매를 만들다 보면 가장 먼저 떠오르는 성과는 매수 체결이다. 하지만 실제 운영에서는 매수보다 먼저 확인해야 할 것이 있다. 시장이 불리한 날에도 시스템이 무리해서 진입하지 않는지, 전날 매도한 종목을 당일에 다시 사지 않는지, 알림과 로그가 운영자가 이해할 수 있는 형태로 남는지다. v1.1의 목적은 바로 그 부분을 정리하는 것이었다.

v1.1 핵심 변경사항

  • rule_engine의 MA60 기반 시장 레짐 조건 강화
  • 거래대금 100억 원 필터 추가
  • sell_type 분기: IMMEDIATE / NEXT_OPEN
  • risk_engine의 sold_today, reset_daily_logs() 관련 처리
  • main의 09:05 매수 필터
  • 당일 재매수 금지
  • KIS client의 평균 거래대금 확인 기능
  • 텔레그램 알림과 로그 체계 정리

이 변경의 중심은 “좋은 종목을 더 빨리 사자”가 아니었다. 시장 레짐이 좋지 않거나 거래대금 조건이 부족하거나 당일 재매수에 걸리면, 시스템이 스스로 멈추도록 만드는 것이 핵심이었다.

운영 사이클

  • 08:50 → pre-market: 시장 레짐과 기본 조건 점검
  • 09:05 → pending sell 처리와 신규 매수 필터 확인
  • 장중 → 5분 간격으로 보유 종목 매도 조건 확인
  • 15:30 → post-market: 일일 결과 요약

검증은 DRY_RUN=True 상태에서 진행했다. 실제 돈이 움직이기 전에 운영 흐름이 의도대로 이어지는지 먼저 보는 것이 목적이었다. 텔레그램 알림은 3종이 들어오는지 확인했고, KIS client를 통해 삼성전자 20일 평균 거래대금이 약 4.7조 원으로 조회되는 것도 확인했다. 거래대금 확인 기능이 붙었다는 점에서는 통과였지만, 이 날 더 중요한 판단은 시장 레짐 쪽이었다.

당시 KOSPI가 MA60 아래에 있었기 때문에 시장 레짐은 불량으로 판단됐다. 따라서 신규 매수가 없었다. 예전 같으면 “왜 아무것도 안 샀지?”라고 먼저 의심했을 상황이다. 하지만 오늘 기준에서는 그게 오류가 아니었다. 조건이 맞지 않을 때 매수하지 않는 것이 v1.1에서 확인하려던 정상 동작이었다.

남은 점검 항목

  • job_intraday_sell()의 sell_type 분기 보완 필요
  • pending_sell.json 처리 루프 미구현
  • reset_daily_logs() 위치 점검 필요

아직 완성이라고 말하기에는 남은 구멍이 있다. 특히 매도 타입 분기와 pending sell 처리 흐름은 실제 운영에서 꼬이면 해석이 어려워질 수 있다. 오늘 확인한 것은 수익이 아니라 방어 구조다.

오늘의 결론은 단순하다. 자동매매에서 BUY 0건은 실패일 수도 있지만, 조건이 맞지 않는 날에는 가장 정상적인 결과일 수도 있다. 이 날의 핵심은 매수 성공이 아니라, 매수하지 않아야 할 때 매수하지 않는 구조를 확인한 것이다.


※ 본 콘텐츠는 개인의 실험 기록이며 투자 권유가 아닙니다.
투자의 판단과 책임은 본인에게 있습니다.