IBKR 스킬
개요
이 스킬은 Interactive Brokers TWS(트레이더 워크스테이션) 및 IB 게이트웨이와 ib_insync를 통해 통합하며, 다음과 같은 운영용 IBKR 워크플로를 제공합니다:
- 통합 Python CLI:
scripts/ibkr_cli.py - bash CLI 래퍼:
scripts/ibkr.sh - 호환성 별칭:
scripts/openclaw.sh - 하위 호환 스크립트 진입점:
scripts/get_account_info.pyscripts/get_historical_data.pyscripts/place_order.py
전제 조건
- API 권한이 설정된 Interactive Brokers 계정.
- API가 활성화된 TWS 또는 IB 게이트웨이가 실행 중이어야 함.
- Python 3.9+ 권장.
ib_insync설치:
pip install ib_insync
연결 구성
모든 CLI는 플래그 또는 환경 변수를 사용하여 연결을 재정의할 수 있습니다.
환경 변수:
IBKR_HOST(기본값127.0.0.1)IBKR_PORT(기본값7497)IBKR_CLIENT_ID(기본값1)IBKR_ACCOUNT(선택 사항)
예시:
IBKR_PORT=4002 IBKR_CLIENT_ID=14 ./scripts/ibkr.sh account-summary
python3 scripts/ibkr_cli.py positions --host 127.0.0.1 --port 7496 --account DU123456
Bash CLI
./scripts/ibkr.sh <명령어> [인수]
지원 명령어:
account(계정 요약 + 포지션)account-summarypositionsportfoliopnlquotehistoricalplace-ordercancel-orderopen-ordersexecutionscontract-detailsscanner
./scripts/openclaw.sh는 동일한 CLI 인터페이스의 별칭입니다.
Python CLI
python3 scripts/ibkr_cli.py <명령어> [인수]
계정 서비스
python3 scripts/ibkr_cli.py account-summary --json
python3 scripts/ibkr_cli.py positions --account DU123456
python3 scripts/ibkr_cli.py portfolio --json
python3 scripts/ibkr_cli.py pnl --account DU123456 --wait 2
시장 데이터 서비스
python3 scripts/ibkr_cli.py quote --symbol AAPL --sec-type STK --market-data-type 3
python3 scripts/ibkr_cli.py historical --symbol EURUSD --sec-type CASH --duration "30 D" --bar-size "1 hour"
참고:
- 과거 데이터 요청은
"30 D"와 같은 공백이 포함된 토큰을 포함하여 플래그를 통해 전체 IB 형식 값을 지원합니다. CASH의 경우 기본whatToShow는 명시적으로 재정의하지 않는 한MIDPOINT입니다.
계약 검색
python3 scripts/ibkr_cli.py contract-details --symbol ES --sec-type FUT --expiry 202606
거래 및 주문 생애주기
python3 scripts/ibkr_cli.py place-order --symbol AAPL --sec-type STK --action BUY --quantity 10 --order-type MKT
python3 scripts/ibkr_cli.py place-order --symbol AAPL --sec-type STK --action SELL --quantity 10 --order-type LMT --limit-price 250 --tif GTC
python3 scripts/ibkr_cli.py open-orders
python3 scripts/ibkr_cli.py cancel-order --order-id 12345
python3 scripts/ibkr_cli.py executions --json
CLI에서 지원하는 주문 유형:
MKTLMTSTPSTP LMT
place-order는 상태 업데이트를 기다리고 주문 제출 중 수집된 API 오류를 표시합니다.
스캐너 서비스
python3 scripts/ibkr_cli.py scanner --instrument STK --location-code STK.US.MAJOR --scan-code TOP_PERC_GAIN --rows 25
호환성 스크립트
레거시 스크립트는 계속 지원되며 이제 통합 CLI에 위임됩니다:
get_account_info.pyget_historical_data.py(레거시 위치 인수 모드 여전히 작동)place_order.py(레거시 위치 인수 모드 여전히 작동)
오류 처리
CLI는 다음과 같은 경우 0이 아닌 종료 코드를 반환합니다:
- 가져오기/종속성 실패
- 연결 실패
- 계약 자격 실패
- 잘못된 인수
- 취소할 미체결 주문 없음
참고 자료
IBKR 및 ib_insync 문서 링크는 references/api_reference.md를 참조하십시오.