개발 이야기/주식 자동 매매 프로그램

키움 증권 API를 이용하여 주식 자동 매매 프로그램 개발하기 - 계좌번호 가져오는 방법 [Python]

제이온 (Jayon) 2021. 1. 16.

 

 

안녕하세요? 코딩중독입니다.

 

저번 시간에는 로그인하는 방법에 대해서 알아보았습니다. 오늘은 계좌 번호를 가져 오는 과정을 설명하겠습니다.

 

 

계좌 번호 가져오는 함수

KOA Studio를 실행하시고, 개발가이드에 들어간 다음 [로그인 버전 처리] - [관련 함수]를 보면, GetLoginInfo() 라는 함수가 있습니다. 그리고 이 함수를 이용하여 계좌 번호 외에 다양한 정보를 가져올 수 있습니다.

 

 

 

 

GetLogininfo() 함수는 인자를 하나 요구하고, 인자 값에 따라 반환하는 데이터가 달라집니다. 우리는 계좌 번호가 필요하므로 "ACCLIST" 혹은 "ACCNO"를 인자로 넘기고, 전체 계좌를 적절하게 split해서 하나의 계좌만 반환하면 됩니다.

(참고로, GetSeverGubun은 실제로 사용을 해 보니 작동을 하지 않았고, 공식 개발가이드에는 접속 서버 구분을 반환하는 인자가 없음을 확인하였습니다. 이 점 유의하시길 바랍니다.)

 

 

그렇다면, 계좌 번호를 왜 가져와야할까요? 그것은 앞으로 사용할 여러 함수들이 인자로서 계좌 번호를 요구하기때문입니다. 그래서 GetLoginInfo() 함수를 통해서 멤버 변수로 미리 계좌 번호 데이터를 받아와야 합니다.

 

 

계좌 번호 가져오는 과정 구현

저번 시간에 사용하였던, dynamicCall() 함수를 이용할 것입니다. 전체 코드부터 봅시다.

 

 

 

 

__init__()에서는 멤버 변수로 account_number가 추가된 점말고는 달라진 것이 없습니다. 이제, 중요한 get_account_info() 함수를 봅시다.

 

 

 

 

먼저, dynamicCall() 함수를 사용하여 전체 계좌 목록을 반환합니다. 이때, GetLoginInfo(QString) 함수를 사용하는데, 인자로 QString을 지정하고 ACCNO를 가져오겠다고 설정하는 것입니다. 여기서 PyQt5는 String을 자동으로 QSring으로 변환하는 기능이 있으므로 QString에 해당하는 인자는 String 타입인 "ACCNO"로 지정해도 무방한 것입니다.

 

만약, 계좌 번호 목록이 여러 개라면, "a;b;c"와 같이 세미콜론이 구분자로 있는 문자열일 것인데, split() 함수를 사용하고 원하는 인덱스를 선택하여 계좌를 하나만 뽑아낼 수 있습니다. 저는 편의상 첫 번째 계좌를 선택하였습니다.

 

그리고 멤버 변수인 account_number를 초기화하면 끝납니다. 마지막에 출력문을 하나 넣었는데, 확인하셨다면 지우시면 되겠습니다.

 

 

 

 

위와 같이 출력되면 정상적으로 코드가 작성된 것입니다.

 

 

정리

지금까지 계좌 번호를 가져오는 방법에 대해서 알아보았습니다. 다음 시간에는 로그인 버전 처리의 관련 함수 중 아직 사용하지 않은 GetConnectState()와 GetLoginInfo()의 다른 옵션을 이용하여 간단한 메뉴를 구성해 보도록 하겠습니다.

 

 

출처

프로그램 동산(장용준)님이 집필하신 '손가락 하나 까딱하지 않는 주식 거래 시스템 구축' 교재를 참고하여 작성하였습니다.

 

그 외에 프로그램 동산님은 깃허브, 카페, 유튜브를 운영 중이십니다. 굉장히 도움이 되는 내용이 많으니 참고하셔도 좋을 것 같습니다.

 

(깃허브) github.com/programgarden

(유튜브) www.youtube.com/channel/UCq7fsrxP6oi6vnYgPkw92jg

(네이버 카페) cafe.naver.com/programgarden

댓글

추천 글