메인 콘텐츠로 건너뛰기

전략 개발 가이드

구성 가이드

Injective Trader는 동작, 컴포넌트 및 전략 매개변수를 정의하기 위해 YAML 구성 파일을 사용합니다. 집중해야 할 가장 중요한 구성 섹션은 다음과 같습니다:
  • LogLevel
  • Components 섹션 아래 InitializerNetworkMarketTickers
  • Strategies 섹션
구성 구조에 대한 자세한 설명은 다음과 같습니다:

최상위 매개변수

Components 섹션

Components 섹션은 프레임워크 컴포넌트를 구성합니다:
참고: 대부분의 사용자는 Network만 관리하고 수신하려는 모든 마켓을 MarketTickers에 포함하면 됩니다. 이러한 고급 컴포넌트 설정을 수정할 필요가 없습니다. 기본값은 대부분의 사용 사례에서 잘 작동합니다.

Strategies 섹션

Strategies 섹션은 각 트레이딩 전략을 정의합니다:
필수 전략 매개변수:
  • Class: Python 클래스 이름과 정확히 일치해야 함
  • MarketIds: 이 전략에서 거래할 마켓 ID 목록 (hex 형식 사용)
  • AccountAddresses: 이 전략에서 거래에 사용할 계정 목록
  • TradingAccount: 주문 실행에 사용되는 계정 (AccountAddresses에 있어야 함)
권장 매개변수:
  • CIDPrefix: 클라이언트 주문 ID 접두사 (주문 식별에 도움)
  • Name: 로그 및 모니터링을 위한 사람이 읽을 수 있는 이름
커스텀 매개변수:
  • 전략에 필요한 모든 커스텀 매개변수를 추가할 수 있음
  • 전략 이름 아래의 모든 매개변수는 self.config에서 사용 가능
  • 명확성을 위해 Parameters 섹션 아래에 관련 매개변수 그룹화

Trading Mode 구성

프레임워크는 두 가지 거래 모드를 지원합니다:

Direct Execution Mode

Authorization (Authz) Mode

참고: direct execution을 위한 TradingAccount 또는 authorization mode를 위한 GranterGrantees를 지정해야 합니다. 프레임워크는 초기화 중에 이 요구 사항을 적용합니다.

RetryConfig 섹션

RetryConfig 섹션은 네트워크 작업에 대한 재시도 동작을 제어합니다:
참고: RetryConfig에는 합리적인 기본값이 있으며 특정 연결 문제가 발생하지 않는 한 일반적으로 커스터마이징이 필요하지 않습니다.

이제 전체 구조를 이해했으므로 커스텀 전략을 개발할 준비가 되었습니다!

전략 개발 가이드

Injective Trader의 전략은 Strategy 기본 클래스를 기반으로 일관된 구조를 따릅니다. 이 섹션에서는 효과적인 전략을 구축하는 방법을 설명합니다.

Strategy 클래스 구조

전략 클래스는 기본 Strategy 클래스를 상속합니다:

Strategy Constructor (__init__)

전략 클래스에는 부모 클래스 생성자를 호출하는 생성자가 포함될 수 있습니다:
기본 클래스 생성자는 다음을 처리합니다:
  1. 매개변수 검증 및 추출
  2. 표준 메트릭 및 핸들러 설정
  3. 상태 추적 컨테이너 초기화
  4. 거래 모드 설정 (direct 또는 authz)
중요: __init__ 메서드는 마켓 데이터나 계정 정보에 접근할 수 없습니다. 이러한 리소스가 필요한 작업에는 on_initialize를 사용하세요.
기본 __init__에서 제공하는 사용 가능한 속성:

Initialization Method (on_initialize)

on_initialize 메서드는 마켓과 계정이 로드된 후 프레임워크 시작 중에 한 번 호출됩니다. 목적: 전략 상태 및 매개변수 초기화 매개변수:
  • accounts: account_address → Account 객체 딕셔너리
  • markets: market_id → Market 객체 딕셔너리
반환: [선택사항] 초기 주문이 있는 StrategyResult (있는 경우)

Strategy Logic (_execute_strategy) Method

_execute_strategy 메서드는 “Strategy Execution (execute) Method”의 일부입니다. 기본 클래스 execute 메서드는 전체 실행 흐름을 처리합니다:
  1. 초기화 확인: 필요한 경우 전략 초기화
  2. 상태 업데이트: 전략의 계정 및 마켓 참조 업데이트
  3. 데이터 처리: 적절한 핸들러를 통해 원시 업데이트 데이터 처리
  4. 전략 실행: 처리된 데이터로 _execute_strategy 메서드 호출
  5. 주문 보강: 주문에 기본값 추가 (수수료 수신자, 클라이언트 ID)
이 메서드를 재정의할 필요는 거의 없습니다. 대신 커스텀 거래 로직이 들어가는 _execute_strategy 구현에 집중하세요: 목적: 마켓 데이터 분석 및 거래 신호 생성 매개변수:
  • update_type: 처리 중인 업데이트 유형
  • processed_data: 관련 필드가 있는 핸들러 처리 데이터 딕셔너리
반환: 주문/취소가 있는 StrategyResult 또는 None
_execute_strategy에서 다음을 수행할 수 있습니다:
  • 업데이트 유형별 필터링으로 특정 이벤트 처리
  • 현재 마켓 데이터 및 계정 상태 접근
  • 주문 배치 전 기존 포지션 확인
  • 마켓 조건에 따른 커스텀 거래 로직 구현
  • 새 주문 생성 및 기존 주문 취소
  • 파생상품 마켓의 포지션 마진 업데이트
  • 모니터링 및 디버깅을 위한 전략 결정 로깅
프레임워크는 반환된 StrategyResult를 기반으로 트랜잭션 생성, 시뮬레이션 및 브로드캐스팅과 같은 실행 세부 사항을 처리합니다.

모범 사례

  1. on_initialize에서 모든 매개변수 초기화
    • self.config에서 매개변수 가져오기
    • 누락된 매개변수에 대한 기본값 설정
    • 내부 상태 변수 초기화
  2. 업데이트 유형 필터링
    • 전략이 관심 있는 업데이트 유형만 처리
    • processed_data에서 필수 필드 항상 확인
  3. 마켓 데이터 검증
    • 사용 전 bid/ask 존재 여부 확인
    • 결정 전 포지션 존재 여부 확인
  4. 마켓 제약 준수
    • 가격과 수량을 마켓 틱 사이즈로 반올림
    • 최소 주문 크기 및 명목 요구 사항 확인
  5. 거래 계정 적절히 처리
    • 거래 계정이 AccountAddresses에 있는지 확인
    • 주문에 올바른 subaccount_id 지정
  6. 적절한 로깅 구현
    • 전략 결정 및 중요 이벤트 로깅
    • 적절한 로그 레벨 사용 (info, warning, error)
  7. 커스텀 매개변수 설정
    • 전략별 값에 Parameters 섹션 사용
    • 예상되는 매개변수 문서화

Custom Handlers

프레임워크는 데이터를 전략에 전달하기 전에 전문화된 핸들러를 통해 업데이트를 처리합니다. 데이터 처리에 대한 더 많은 제어를 위해 커스텀 핸들러를 만들 수 있습니다.

Handler Base Class

모든 핸들러는 UpdateHandler 기본 클래스를 상속합니다:

Creating a Custom Handler

커스텀 핸들러를 만들려면:
  1. 적절한 핸들러 기본 클래스 상속
  2. _process_update 메서드 재정의
  3. 전략의 생성자에 핸들러 등록

Registering Custom Handlers

전략 생성자에 커스텀 핸들러 등록:

Available Handler Types

프레임워크는 확장할 수 있는 다음 핸들러 유형을 제공합니다:

주요 데이터 구조

Update Types and Corresponding Data Fields

프레임워크는 전략이 반응할 수 있는 다음 주요 이벤트 유형을 처리합니다:

Strategy Result

전략이 조치를 취하기로 결정하면 다음을 포함하는 StrategyResult 객체를 반환합니다:

Market

Orderbook

Account

BankBalance

Balance

SubAccount

Deposit

Position

Order

OrderStatus (Enum)

Side (Enum)

MarketType (Enum)

마지막 수정일 2026년 3월 30일