개인 프로젝트 · 거래 시스템 백엔드

Auto Trader Token — 주문 실행·리스크 관리 시스템

자동매매에서 주문을 보낼 조건과 멈출 조건을 명시하는 실행 코어입니다. 위험 심사, 주문 원장, 보호 주문과 장애 복구를 연결하고 오프라인 연구와 거래 실행을 분리했습니다.

내용 기준:

기술
Python · FastAPI · Pydantic · SQLAlchemy · SQLite / PostgreSQL
구현 범위
주문 계약·위험 심사·실행 원장·관측 API·운영 UI
현재 상태
기본 Fake 오프라인 모드 · 선택형 Testnet 관측 · Live 거래 비활성

해결하려는 문제

주문 요청이 중복되거나 거래소 응답이 끊기면 전송 결과를 확정하기 어렵습니다. 시세와 계정 정보가 오래된 상태에서 신규 주문을 허용하거나 불확실한 주문을 곧바로 재전송하지 않도록, 승인 조건과 실행 상태를 원장에 함께 관리합니다.

주문 처리 구조

주문 의도부터 전송·대조까지 단계별 상태를 남깁니다. 일반 신규 진입의 승인·전송은 현재 오프라인 시뮬레이터에 제한됩니다.

  1. 상태 관측

    시세·사용자 스트림·거래소 메타데이터·주문 대조 결과의 최신성을 확인합니다.

  2. 위험 심사

    주문 한도, 가용 증거금, 미체결 노출과 활성 예약을 반영해 승인 여부를 결정합니다.

  3. 원장·실행

    승인과 전송 대기 항목을 저장하고, 전송 직전 승인 만료와 정책 변경을 다시 검사합니다.

  4. 결과 대조·복구

    불확실한 응답은 UNKNOWN으로 보존하고 거래소 주문 조회와 체결 이벤트로 상태를 대조합니다.

주요 구현

조건이 충족될 때만 승인

정보 최신성, 로컬 비상정지, 저장 공간, 미확정 주문 등을 확인합니다. 프로세스가 실행 중이라는 이유만으로 거래 준비 상태를 통과시키지 않습니다.

중복 실행 방지와 보호 주문

동일 요청은 기존 제출 결과를 반환합니다. 승인된 진입·보호 주문 계획을 저장하고, 첫 부분체결부터 보호 주문을 전송 대기 상태로 전환합니다.

관측과 운영

REST 수집과 사용자 WebSocket 이벤트를 계정별로 조정합니다. 관측 자료 보관·정리, DB 마이그레이션과 역할별 권한, 독립 비상정지 도구를 구성했습니다.

오프라인 연구 분리

로컬 CSV의 자료 시점, 비용·지연 민감도, 시간 분할과 홀드아웃 사용 이력을 검사합니다. 연구 결과는 신규 주문을 승인하는 근거로 자동 전환하지 않습니다.

구현과 검증 범위

구현 근거
  • src/auto_trader/readiness.py · risk.py — 준비 상태와 주문 위험 심사
  • src/auto_trader/service.py · database.py — 중복 요청, 주문 원장, 전송 대기·대조
  • src/auto_trader/observation.py · research.py — 관측 수집과 오프라인 연구