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()
구현 가이드¶
BaseStrategy 상속 - 모든 구체적인 전략은 BaseStrategy 클래스를 상속받아야 합니다.
run() 메서드 구현
전략의 메인 로직을 비동기 run() 메서드에 구현합니다.
clock.is_alive()로 전략 실행 지속 여부를 확인합니다.
clock.sleep()으로 적절한 실행 간격을 설정합니다.
컴포넌트 활용
clock: 시간 관리 및 대기
broker: 주문 생성 및 시장 데이터 조회
logger: 전략 실행 로그 기록