본문 바로가기
삶에 대한 이야기/더 나은 삶을 위한

[ 주식 알림 봇 개발 ] 키움증권(영웅문) API 연결하기

by 사자처럼 우아하게 2019. 12. 29.

 

주말동안 키움증권 API를 연결하고 간단한 로직으로 종목을 추출하는 것까지 하려했으나,

키움증권 API를 연결하는 과정에서 많은 오류를 접하게 되어 겨우 API 연결하는 것까지만 진행했다.

 

이번에는 1. 키움증권 API를 접속 하기 위한 필수 프로그램 2. 마주하게 될 많은 오류들에 대해 이야기하고자 한다. 

 

[ 필수 프로그램 ]

  키움 Open API를 사용하기 위해서는 키움증권 계좌개설은 물론이고 API 사용을 위한 사전신청이 필요하다.

  이후에도 키움 Open API/ KOA Studio 설치가 필요하다. 설치는 어렵지 않으니 아래 링크 참조해서 진행하면 되겠다.

   링크 바로가기 : https://www3.kiwoom.com/nkw.templateFrameSet.do?m=m1408000000

[ 환경 설정 및 오류 조치 ] 

접속을 위한 코드는 시스템 트레이딩 코드를 활용했다. 옆에 링크 참조 https://wikidocs.net/4233

 

 1. Python 환경 설정 TIP

설치가 완료되었다면 Python으로 접속을 위한 환경 설정이 필요하다. 

가장 놓치기 쉬운 포인트가 32bit Python을 설치해주어야한다는 것인데 이미 Anaconda 64bit를 설치하여 여러 가상환경을 돌리고 있는 입장에서 64bit를 지우고 Anaconda 32bit를 재설치하는 것은 무리가 있다고 판단하여 64bit 기반으로 python 32bit를 설치하는 방법을 알아보았다.

64bit anaconda prompt에서 아래 코드를 입력하여 py37_32라는 가상환경을 구축한 뒤 가상환경을 실행시킨다. 

이 환경에서 python을 실행하면 아래와 같이 32bit 라는 표시가 나타나게 되는데 이러면 성공한 것이다.

set CONDA_FORCE_32BIT=1 
conda create -n py37_32 python=3.7 anaconda

activate py37_32

2. PyQt5 설치하기

가상환경(py37_32) 을 활성화시킨 후에 PyQt5 를 설치해야하는데, conda install PyQt5를 입력하면 오류가 발생한다. PyQt5 는 pip로 설치해야한다.

pip install PyQt5

3. Jupyter Notebook vs. Visual Studio Code

- 코드를 실행하면 PyQt 창이 아래처럼 떠야하는데 Jupyter Notebook에서는 창이 뜨지 않고 Running 중으로만 뜬다.

  PyQt 창이 뜨도록 설정하는 방법이 있겠지만,  이를 모르고 코드에 오류가 난 줄 알고 한참을 해맸다.

  그리고 같은 코드를 Visual Studio Code로 옮겨 실행하니 거짓말처럼 창이 떴다.  정말 거짓말 같았다. 

4. QAxWidget' object has no attribute 'OnEventConnect'

코드를 보면 "OnEventConnect" 함수를 불러오는 부분이 있다. 이건 당연히 PyQt 에서 제공하는 attribute 이거나 함수이겠지라고 생각했다. 그리고 이 에러가 뜰때마다 QAxWidget 설치가 잘 안되었는지, 혹시 Python 32bit 설치가 잘 못된건 아닌지에 포커싱하여 구글링을 했다.

결론은 움 OpenAPI와 접속이 안되서 발생하는 문제였다. OnEventConnect는 키움 API와 접속이 되면 그쪽에서 제공하는 함수이다. 

이를 해결하기 위해서는 OpenAPI 접속을 다시 시도해봐야한다. 혹시 다운로드를 받지 않은 것은 없는지, KOA Studio에서 로그인은 잘 되는지를 체크해봐야한다. 나는 모든 다운로드 파일을 다 지우고 다시 설치하니까 해결되었다.

 

5. requested control KHOPENAPI.KHOpenAPICtrl.1 could not be instantiated

4번 에러를 만나기전에  이 에러를 더 먼저 만날 수 있다. 이것이야말로 키움증권 API와 접속이 안되었다는 의미이다.

키움 홈페이지에서 제공하는 OpenAPI 모듈을 재설치해보는 것을 추천한다. 나는 이 에러를 만났을 때 KOA Studio 로그인도 실패했다.

 

6.  mfc100.dll이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다.

초반에 이 에러를 만났는데 알아보니 이는 Visual C++(32bit)를 설치해야 해결된다고 해서 조치했다. 

PC는 64bit이지만 키움 API는 32bit에서 구동되기 때문에 32bit로 꼭 설치를 해줘야한다.

 다운로드 : https://www.microsoft.com/ko-kr/download/confirmation.aspx?id=5555

  

 

 

참고 사이트

1. https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.1.pdf

2.  http://blog.daum.net/goodgodgd/30

3. https://excelsior-cjh.tistory.com/105

4. https://ultrasound.github.io/2017/11/21/openapi-basic-api/

5. https://steemit.com/kr-dev/@maanya/30

댓글