AI AutoTrade Lab 1단계: 5편. 계좌 정보 조회 시스템 만들기
[AI AutoTrade Lab] 1단계: 시스템 구축 - 5편. 계좌 정보 조회 시스템 만들기
AI 자동매매 시스템을 구축하는 과정에서 가장 중요한 것은 현재 내 자산의 상태를 실시간으로 파악하는 것입니다. 키움증권 오픈 API를 활용하면 `account-api`를 통해 자신의 `trading-account` 정보를 정밀하게 분석할 수 있습니다. 이번 5편에서는 성공적인 `portfolio` 관리를 위한 계좌 정보 조회 시스템 구축 방법을 다룹니다.
1. 계좌 API 구조
`kiwoom` API에서 제공하는 계좌 정보는 단순한 잔고 확인을 넘어, 자동매매의 판단 근거가 되는 핵심 데이터입니다. 전체적인 데이터 흐름을 이해하면 시스템을 설계하기 훨씬 수월합니다.
2. 잔고 조회
계좌의 전체적인 평가 금액과 예수금, 수익률 등을 확인하려면 `OPW00004` TR 코드를 사용해야 합니다. 이를 통해 `trading-account`의 건전성을 실시간으로 체크할 수 있습니다.
잔고 조회 API 필수 항목
| 항목명 | 설명 | 데이터 타입 |
|---|---|---|
| `계좌번호` | 조회할 10자리 계좌번호 | String |
| `비밀번호` | 4자리 숫자 | String |
| `예수금` | 현재 주문 가능한 총액 | Long |
| `유가잔고평가액` | 보유 종목의 현재 평가 합계 | Long |
| `계좌평가금액` | 전체 자산 평가액 | Long |
3. 보유 종목 데이터
`portfolio`를 운영할 때 각 종목의 수익률과 수량 정보를 가져오는 것은 필수입니다. `kiwoom` API의 `SetInputValue`를 사용하여 계좌 번호를 입력하고 데이터를 요청합니다.
# 보유 종목 조회 예시 코드
def get_balance(self):
self.kiwoom.dynamicCall("SetInputValue(QString, QString)", "계좌번호", self.account_num)
self.kiwoom.dynamicCall("SetInputValue(QString, QString)", "비밀번호", "0000")
self.kiwoom.dynamicCall("CommRqData(QString, QString, int, QString)", "계좌평가잔고내역요청", "opw00004", 0, "1000")
위 코드는 `account-api`를 호출하여 현재 보유 중인 종목 리스트를 가져오는 기본적인 틀입니다. 여기서 반환된 `OnReceiveTrData` 이벤트 루프를 통해 종목명, 보유 수량, 매입 단가 등을 파싱하여 시스템 변수에 저장합니다.
4. 미체결 주문 관리
자동매매 시스템은 현재 매수/매도 주문이 나간 상태인지 확인해야 합니다. `OPT10075`는 미체결 내역을 조회하는 데 특화되어 있으며, 이를 통해 시스템은 '이미 주문이 나간 종목'에 대해 중복 매수를 방지하는 안전장치를 마련할 수 있습니다.
5. 계좌 데이터 통합
여러 API에서 들어오는 파편화된 데이터는 하나의 클래스로 통합 관리하는 것이 좋습니다. `시리즈-1단계`에서 구축 중인 시스템의 클래스 구조는 다음과 같이 구성합니다.
- AccountManager 클래스: `account-api` 연결 및 TR 요청 관리
- DataProcessor 클래스: 수신된 데이터를 `portfolio` 형식에 맞게 가공
- Storage 클래스: 수집된 데이터를 로컬 DB나 메모리에 저장
이러한 모듈화 작업은 추후 전략 엔진이 복잡해질 때 시스템이 꼬이지 않게 도와줍니다.
6. 결론 및 요약
이번 5편에서는 `kiwoom` 환경에서 `trading-account`를 조회하고 데이터를 통합하는 과정까지 알아보았습니다. `account-api`를 완벽히 이해하는 것은 자동매매의 첫걸음입니다. 자신의 자산 현황을 실시간으로 데이터화하는 것만으로도 자동매매 시스템 구축의 50%는 완성한 것과 다름없습니다.
다음 시간에는 이렇게 확보한 `portfolio` 데이터를 활용하여 매수/매도 로직을 구현하는 방법에 대해 다루도록 하겠습니다. 지금까지의 단계들을 잘 따라오셨다면, 이제 여러분의 AI 자동매매 시스템은 실시간 시장 데이터에 반응할 준비를 마쳤습니다.
질문이나 궁금한 점이 있다면 언제든 댓글로 남겨주세요! 다음 편에서 뵙겠습니다.
본 포스팅은 시리즈-1단계: 시스템 구축의 일환으로 작성되었습니다.
참고: 본 포스팅은 kiwoom-api 및 일반적인 REST API 호출 원리를 기반으로 작성되었습니다.
참고: 본 포스팅은 기술적인 구현 가이드이며, 실제 투자 시 발생하는 손실에 대한 책임은 본인에게 있음을 명시합니다.
