주식 자동매매 봇의 기본 구조
주식 자동매매 봇은 화려한 알고리즘보다 탄탄한 파이프라인이 먼저입니다. 대부분의 봇은 아래 4단계로 나뉩니다.
1. 데이터 수집 (Data)
시세, 호가, 체결 데이터를 실시간 또는 주기적으로 가져옵니다.
import requests
def fetch_price(symbol: str) -> float:
resp = requests.get(f"https://api.example.com/price/{symbol}", timeout=3)
resp.raise_for_status()
return resp.json()["last"]
2. 신호 생성 (Signal)
수집한 데이터로 매수/매도 신호를 계산합니다. 간단한 이동평균 교차 예시입니다.
def ma_cross_signal(prices: list[float], short: int, long: int) -> str:
ma_short = sum(prices[-short:]) / short
ma_long = sum(prices[-long:]) / long
if ma_short > ma_long:
return "BUY"
if ma_short < ma_long:
return "SELL"
return "HOLD"
3. 주문 실행 (Execution)
신호에 따라 실제 주문을 냅니다. 여기서 멱등성(idempotency)과 재시도 처리가 중요합니다.
4. 리스크 관리 (Risk)
가장 중요한 단계입니다. 손절 라인, 포지션 크기, 일일 최대 손실 한도를 강제합니다.
백테스트에서 좋아 보여도, 리스크 관리 없는 봇은 계좌를 비우는 가장 빠른 방법입니다.
다음 글에서는 백테스팅 프레임워크 설계를 다루겠습니다.
댓글
댓글 쓰기