콘텐츠로 이동

전략 수명 주기

AQE는 다음 전략 수명 주기를 중심으로 동작합니다.

  • on_start
  • universe
  • init
  • on_bar
  • generate_insights
  • insight_pipeline
  • on_teardown
aq-engine/src/core/strategy/traits.rs
pub trait Strategy {
fn name(&self) -> &str {
"Base Strategy"
}
fn on_start(&mut self, ctx: &mut dyn StrategyContext);
fn init(&mut self, ctx: &mut dyn StrategyContext, asset: &Asset);
fn universe(&self, ctx: &mut dyn StrategyContext) -> HashSet<String>;
fn on_bar(&mut self, ctx: &mut dyn StrategyContext, symbol: &str, bar: &BarData);
fn generate_insights(&mut self, ctx: &mut dyn StrategyContext, symbol: &str);
fn insight_pipeline(&mut self, ctx: &mut dyn StrategyContext, insight: &Insight);
fn on_teardown(&mut self, ctx: &mut dyn StrategyContext);
}

공통 런타임 구성을 등록할 때는 on_start를 사용합니다.

  • 지표
  • 알파
  • 파이프
  • 위험 설정
  • 워밍업 봉

universe()는 전략이 거래할 심볼을 반환합니다. AQE는 이 심볼을 사용해 선택한 데이터 및 브로커 스택에서 Asset 메타데이터를 불러옵니다.

init()은 유니버스를 불러온 뒤 자산마다 한 번 실행됩니다. 심볼별 변수, 심볼별 지표 상태, 자산 특성을 반영한 설정 등 자산별 초기화에 사용하세요.

on_bar()는 해당 심볼의 새 봉이 도착할 때마다 호출됩니다. 이 훅에서 최신 시장 데이터를 바탕으로 전략 수준의 상태를 갱신합니다.

on_bar() 이후 AQE는 generate_insights()를 호출합니다. 여기에서 새 인사이트를 생성하고 런타임에 추가합니다.

봉 처리가 끝나면 AQE는 인사이트 파이프라인을 실행합니다. 파이프는 인사이트의 현재 상태에 따라 수량을 산정하고, 검증하고, 주문을 제출하거나 거부하고, 취소하거나 청산할 수 있습니다.

마지막 정리 작업과 요약에는 on_teardown()을 사용하세요.

시작 설정, 초기화, 종료 정리, 유니버스 선택 로직을 재사용할 수 있는 모듈은 수명 주기 컴포넌트를 참조하세요.