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: 전략 실행 로그 기록