fix: US 시장 세션 전환 미처리 (US_DAY 활성 처리, 정규장 오픈 이벤트 누락) #400

Closed
opened 2026-03-04 01:17:57 +09:00 by agentson · 1 comment
Collaborator

문제 요약

미국 정규장(US_REG, KST 23:30) 오픈 시 마켓 오픈 알림 미발송, 플레이북 미생성, 거래 미발생.

근본 원인

버그 1: _market_states가 세션을 구분하지 않음 (main.py:4047)

_market_states: dict[str, bool]은 마켓 코드만 추적하고, 세션(US_PRE → US_REG)을 구분하지 않음.

  • KST 10:00(US_DAY 시작)에 _market_states["US_NASDAQ"] = True로 설정
  • KST 23:30(US_REG 시작, 실제 정규장)에는 이미 True이므로 notify_market_open() 미발동

버그 2: 스캐너 인터벌이 세션 전환을 무시 (main.py:4266)

RESCAN_INTERVAL_SECONDS 기준으로만 재스캔 판단. 세션 전환 시 강제 재스캔 없음.

  • US_PRE(22:30)에 스캔 후 인터벌 미경과 시 US_REG(23:30) 오픈 때도 재스캔 안 됨
  • 결과: 후보 종목 없음 → 플레이북 없음 → 거래 없음

버그 3: US_DAY를 실질적 OFF인데 활성으로 처리 (order_policy.py:49, schedule.py:210)

US_DAY(KST 10:00-18:00 = EST 01:00-09:00)는 미국 시장이 심야/새벽이라 실질적으로 OFF.

  • 하지만 get_open_markets(include_extended_sessions=True)가 활성으로 반환
  • KST 10:00에 마켓 오픈 알림 + 플레이북 생성 시도 → 부적절한 데이터

기대 동작

이벤트 현재 기대
KST 10:00 (US_DAY) 마켓 오픈 알림 발송 발송 안 함 (미국 심야)
KST 23:30 (US_REG) 아무것도 안 함 마켓 오픈 알림 + 강제 재스캔 + 플레이북 생성

수정 방향

  1. _market_statesdict[str, str](session_id 추적)으로 변경 → 세션 전환 감지
  2. US_REG 진입 시 강제 재스캔 + 플레이북 재생성 + 마켓 오픈 알림
  3. US_DAYUS_OFF처럼 처리하거나 최소한 플레이북 생성/거래를 하지 않도록 분리

관련 파일

  • src/main.py (L4047, L4231, L4266, L4312)
  • src/core/order_policy.py (L48-57)
  • src/markets/schedule.py (L202-211)
## 문제 요약 미국 정규장(US_REG, KST 23:30) 오픈 시 마켓 오픈 알림 미발송, 플레이북 미생성, 거래 미발생. ## 근본 원인 ### 버그 1: `_market_states`가 세션을 구분하지 않음 (`main.py:4047`) `_market_states: dict[str, bool]`은 마켓 코드만 추적하고, 세션(US_PRE → US_REG)을 구분하지 않음. - KST 10:00(US_DAY 시작)에 `_market_states["US_NASDAQ"] = True`로 설정 - KST 23:30(US_REG 시작, 실제 정규장)에는 이미 True이므로 `notify_market_open()` 미발동 ### 버그 2: 스캐너 인터벌이 세션 전환을 무시 (`main.py:4266`) `RESCAN_INTERVAL_SECONDS` 기준으로만 재스캔 판단. 세션 전환 시 강제 재스캔 없음. - US_PRE(22:30)에 스캔 후 인터벌 미경과 시 US_REG(23:30) 오픈 때도 재스캔 안 됨 - 결과: 후보 종목 없음 → 플레이북 없음 → 거래 없음 ### 버그 3: US_DAY를 실질적 OFF인데 활성으로 처리 (`order_policy.py:49`, `schedule.py:210`) US_DAY(KST 10:00-18:00 = EST 01:00-09:00)는 미국 시장이 심야/새벽이라 실질적으로 OFF. - 하지만 `get_open_markets(include_extended_sessions=True)`가 활성으로 반환 - KST 10:00에 마켓 오픈 알림 + 플레이북 생성 시도 → 부적절한 데이터 ## 기대 동작 | 이벤트 | 현재 | 기대 | |--------|------|------| | KST 10:00 (US_DAY) | 마켓 오픈 알림 발송 | 발송 안 함 (미국 심야) | | KST 23:30 (US_REG) | 아무것도 안 함 | 마켓 오픈 알림 + 강제 재스캔 + 플레이북 생성 | ## 수정 방향 1. `_market_states`를 `dict[str, str]`(session_id 추적)으로 변경 → 세션 전환 감지 2. `US_REG` 진입 시 강제 재스캔 + 플레이북 재생성 + 마켓 오픈 알림 3. `US_DAY`는 `US_OFF`처럼 처리하거나 최소한 플레이북 생성/거래를 하지 않도록 분리 ## 관련 파일 - `src/main.py` (L4047, L4231, L4266, L4312) - `src/core/order_policy.py` (L48-57) - `src/markets/schedule.py` (L202-211)
Owner

US_DAY도 거래는 가능할텐데, 동작은 해야 하는거 아닐까? 수수료가 비싸다거나 하면 정책에 반영이 필요한거지 동작 안하는건 좀 이상해.

US_DAY도 거래는 가능할텐데, 동작은 해야 하는거 아닐까? 수수료가 비싸다거나 하면 정책에 반영이 필요한거지 동작 안하는건 좀 이상해.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#400