pyqqq.backtest.strategy#

트레이딩 전략을 구현하기 위한 모듈입니다. 이 모듈은 전략 구현에 필요한 기본적인 컴포넌트들을 제공하며, 실시간 거래와 백테스팅 환경 모두에서 동일한 인터페이스를 제공합니다.

주요 기능#

  • 전략 구현을 위한 기본 클래스 제공

  • 시간 관리, 거래 실행, 로깅 컴포넌트 통합

  • 실시간/백테스팅 환경 지원

  • 비동기(async) 전략 실행

클래스 구성#

BaseStrategy#

트레이딩 전략을 구현하기 위한 추상 기본 클래스입니다.

주요 속성

  • clock (WallClock): 시간 관리를 담당하는 시계 인스턴스

  • broker (BaseBroker): 거래 실행을 담당하는 브로커 인스턴스

  • logger (Logger): 로깅을 담당하는 로거 인스턴스

주요 메서드

  • __init__(environment): 전략 클래스 초기화

  • run(): 전략 실행 (하위 클래스에서 구현 필요)

사용 예시#

class MyStrategy(BaseStrategy):
    async def run(self):
        while self.clock.is_alive():
            # 시장 데이터 수집
            data = self.broker.get_price("005930")

            # 전략 로직 실행
            if self._should_buy(data):
                self.broker.create_order(
                    "005930",
                    OrderSide.BUY,
                    quantity=10
                )
                self.logger.info("Buy order created")

            # 일정 시간 대기
            await self.clock.sleep(60)

# 전략 실행
env = BacktestEnvironment(
    start_time=datetime(2024, 10, 2, 9, 0),
    end_time=datetime(2024, 10, 21)
)

strategy = MyStrategy(env)
await strategy.run()

구현 가이드#

  1. BaseStrategy 상속 - 모든 구체적인 전략은 BaseStrategy 클래스를 상속받아야 합니다.

  2. run() 메서드 구현

    • 전략의 메인 로직을 비동기 run() 메서드에 구현합니다.

    • clock.is_alive()로 전략 실행 지속 여부를 확인합니다.

    • clock.sleep()으로 적절한 실행 간격을 설정합니다.

  3. 컴포넌트 활용

    • clock: 시간 관리 및 대기

    • broker: 주문 생성 및 시장 데이터 조회

    • logger: 전략 실행 로그 기록