AI AutoTrade Lab 1단계: 5편. 계좌 정보 조회 시스템 만들기

[AI AutoTrade Lab] 1단계: 시스템 구축 - 5편. 계좌 정보 조회 시스템 만들기

AI 자동매매 시스템을 구축하는 과정에서 가장 중요한 것은 현재 내 자산의 상태를 실시간으로 파악하는 것입니다. 키움증권 오픈 API를 활용하면 `account-api`를 통해 자신의 `trading-account` 정보를 정밀하게 분석할 수 있습니다. 이번 5편에서는 성공적인 `portfolio` 관리를 위한 계좌 정보 조회 시스템 구축 방법을 다룹니다.

1. 계좌 API 구조

`kiwoom` API에서 제공하는 계좌 정보는 단순한 잔고 확인을 넘어, 자동매매의 판단 근거가 되는 핵심 데이터입니다. 전체적인 데이터 흐름을 이해하면 시스템을 설계하기 훨씬 수월합니다.

graph LR A["Kiwoom 서버"] -- OPW00004 --> B(계좌평가잔고내역) A -- OPW00009 --> C(조건검색결과) A -- OPT10075 --> D(미체결내역) B --> E{"계좌 데이터 통합 모듈"} C --> E D --> E E --> F["투자 전략 엔진"]

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단계`에서 구축 중인 시스템의 클래스 구조는 다음과 같이 구성합니다.

  1. AccountManager 클래스: `account-api` 연결 및 TR 요청 관리
  2. DataProcessor 클래스: 수신된 데이터를 `portfolio` 형식에 맞게 가공
  3. Storage 클래스: 수집된 데이터를 로컬 DB나 메모리에 저장

이러한 모듈화 작업은 추후 전략 엔진이 복잡해질 때 시스템이 꼬이지 않게 도와줍니다.

6. 결론 및 요약

이번 5편에서는 `kiwoom` 환경에서 `trading-account`를 조회하고 데이터를 통합하는 과정까지 알아보았습니다. `account-api`를 완벽히 이해하는 것은 자동매매의 첫걸음입니다. 자신의 자산 현황을 실시간으로 데이터화하는 것만으로도 자동매매 시스템 구축의 50%는 완성한 것과 다름없습니다.

다음 시간에는 이렇게 확보한 `portfolio` 데이터를 활용하여 매수/매도 로직을 구현하는 방법에 대해 다루도록 하겠습니다. 지금까지의 단계들을 잘 따라오셨다면, 이제 여러분의 AI 자동매매 시스템은 실시간 시장 데이터에 반응할 준비를 마쳤습니다.


질문이나 궁금한 점이 있다면 언제든 댓글로 남겨주세요! 다음 편에서 뵙겠습니다.


본 포스팅은 시리즈-1단계: 시스템 구축의 일환으로 작성되었습니다.


참고: 본 포스팅은 kiwoom-api 및 일반적인 REST API 호출 원리를 기반으로 작성되었습니다.

참고: 본 포스팅은 기술적인 구현 가이드이며, 실제 투자 시 발생하는 손실에 대한 책임은 본인에게 있음을 명시합니다.