수명 주기 및 유니버스 노드
AQS 수명 주기 및 유니버스 노드는 시각적 전략 그래프에서 AQE 컴포넌트 모델을 제공합니다. .aqmeta 프로젝트에서 생성된 src/main.rs를 수동 편집하지 않고도 전략 동작을 모듈식으로 유지할 수 있습니다.
이 로직은 Rust에서 인라인으로 작성해도 됩니다. 노드를 사용하면 역할을 분리하고 그래프 구조를 명확하게 정리하며, 파일을 재사용하고 편집기에서 더 쉽게 설정할 수 있습니다.
노드 유형
섹션 제목: “노드 유형”AQS는 이 워크플로에 네 가지 모듈식 노드 유형을 제공합니다.
- On Start Logic은
OnStartLogic컴포넌트를 만듭니다. - On Init Logic은
OnInitLogic컴포넌트를 만듭니다. - On Teardown Logic은
OnTeardownLogic컴포넌트를 만듭니다. - Universe Model은
UniverseModel컴포넌트를 만듭니다.
수명 주기 로직 파일은 .logic.rs 접미사를 사용합니다. 유니버스 모델 파일은 .universe.rs 접미사를 사용합니다.
생성된 프로젝트에서 사용하는 방식
섹션 제목: “생성된 프로젝트에서 사용하는 방식”프로젝트에 .aqmeta 파일이 있으면 AQS가 그래프를 관리하고 src/main.rs를 다시 생성합니다. 이러한 컴포넌트를 위해 생성된 src/main.rs를 수동으로 편집하지 마세요. 대신 사용자 지정 컴포넌트 파일을 추가하거나 편집하고 노드 구성을 갱신하세요.
코드 생성기가 등록을 처리합니다.
- 수명 주기 로직 노드는 AQE 수명 주기 래퍼가 됩니다.
- 유니버스 모델 노드는 AQE 유니버스 모델 래퍼가 됩니다.
- 생성자 인수는 공개 노드 속성으로 표시됩니다.
- 비공개 구조체 필드는 패널에서 읽기 전용 또는 비공개 속성으로 표시될 수 있습니다.
- 노드를 체인으로 연결하면 그래프 토폴로지에 따라 실행 순서가 정해집니다.
수명 주기 노드 실행 시점
섹션 제목: “수명 주기 노드 실행 시점”수명 주기 노드에는 실행 시점 설정이 있습니다.
- Before generated는 해당 수명 주기 메서드의 생성된 본문 전에 컴포넌트를 실행합니다.
- After generated는 해당 수명 주기 메서드의 생성된 본문 후에 컴포넌트를 실행합니다.
사전 요구 사항과 검증에는 Before generated를 사용하세요. 생성된 등록이나 설정이 완료되어야 하는 로직에는 After generated를 사용하세요.
예시는 다음과 같습니다.
- 알파 모델이 읽기 전에
ctx.variables()초기값 설정 - 전략이 시작되기 전에 필수 환경 변수 검증
- 자산이 확인된 뒤 심볼별 메타데이터 초기화
- 종료 정리 후 런타임 진단 정보 내보내기
실패 동작
섹션 제목: “실패 동작”각 노드에는 can_fail 설정이 있습니다.
can_fail = false는 결과가 성공이 아니면 실행을 중단해야 한다는 뜻입니다.can_fail = true는 AQE가 실패를 기록하고 계속한다는 뜻입니다.
시작 및 초기화 로직은 일반적으로 실패 시 실행을 중단하도록 설정해야 합니다. 종료 정리는 일부 작업이 실패하더라도 나머지 정리 작업을 계속하도록 설정하는 것이 보통 적합합니다.
그래프의 유니버스 모델
섹션 제목: “그래프의 유니버스 모델”Universe Model 노드는 프로그램 방식으로 심볼을 반환합니다. 정적 유니버스 목록만으로 부족할 때 유용합니다.
다음 작업에는 Universe Model 노드를 사용하세요.
- 관심 목록 불러오기
- 메타데이터로 심볼 필터링
- 날짜나 시장 국면에 따라 심볼 선택
- 계좌, 브로커, 위험 제약 조건에 따라 심볼 선택
- 전략 간에 동일한 유니버스 선택 로직 공유
최종 AQE 유니버스는 생성된 전략이 반환하는 정적 유니버스와 연결된 모든 유니버스 모델의 합집합입니다. 중복 심볼은 제거됩니다.
따라서 간단한 정적 유니버스 노드를 유지하면서 동적 추가를 위한 Universe Model 노드를 더할 수 있습니다.
인라인 코드도 계속 사용 가능
섹션 제목: “인라인 코드도 계속 사용 가능”노드 워크플로는 필수가 아닙니다. 작은 전략에는 인라인 Rust만으로 충분한 경우가 많습니다.
- 시작 코드를
on_start에 직접 추가하세요. - 자산별 설정을
init에 직접 추가하세요. universe에서 심볼을 직접 반환하세요.- 정리를
on_teardown에 직접 추가하세요.
코드를 별도 파일로 분리해야 하거나, AQS 그래프에 표시해야 하거나, 속성 패널에서 설정해야 하거나, 재사용할 예정이라면 노드를 사용하세요.
권장 사항
섹션 제목: “권장 사항”- 생성자 인수에는 사용자가 조정하는 설정만 두세요.
- 런타임 전용 상태는 구조체 필드 대신
ctx.variables()에 두세요. - 수명 주기 노드는 트레이딩 신호 생성이 아니라 설정과 정리에 사용하세요.
- 신호 생성은 알파 모델에서 처리하세요.
- 수량 산정, 주문 제출, 취소, 청산, 관리 로직은 인사이트 파이프에서 처리하세요.
- 정확한 순서가 중요하면 수명 주기 노드를 체인으로 연결하세요.
- 로그와 AQS 화면이 유용하도록 명확한
LifecycleResult및UniverseResult메시지를 반환하세요.
일반적인 그래프 패턴
섹션 제목: “일반적인 그래프 패턴”시작 처리:
- On Start Logic을 전략 수명 주기 포트에 연결합니다.
- 생성된 알파 및 파이프 등록이 해당 로직에 의존하면 실행 시점을 Before generated로 설정합니다.
ctx.variables()에 공유 상태 초기값을 설정합니다.- 성공한
LifecycleResult를 반환합니다.
자산별 초기화:
- On Init Logic을 초기화 수명 주기 포트에 연결합니다.
asset인수로 심볼별 상태를 초기화합니다.- 컴포넌트 이름과 자산 심볼을 기준으로 해당 상태를 저장합니다.
종료 정리:
- On Teardown Logic을 종료 정리 수명 주기 포트에 연결합니다.
- 실패가 실행을 무효화해야 하는 경우가 아니라면
can_fail = true로 설정합니다. - 런타임 진단 정보를 영속 저장하거나 요약합니다.
유니버스 선택:
- Universe Model 노드를 만듭니다.
UniverseModel::run(ctx) -> UniverseResult를 구현합니다.- 모델이 담당하는 심볼만 반환합니다.
- AQE가 해당 심볼을 정적 유니버스 및 다른 유니버스 모델과 병합하도록 합니다.
로그인, 계정 보안, 색상 테마 설정, 이 알림 표시와 PostHog의 필수 내부 이용 현황·세션 품질·안정성 지표 수집을 위해 필수 쿠키와 저장소를 사용합니다. 광고 쿠키는 사용하지 않습니다.
