키움 Open API와 대신 Creon에 대한 간단한 비교..
[고민] 대신증권API과 키움증권 API 사이에서
증권사 API를 사용한지 한달이 다 되가는데, 처음에는 키움증권API를 사용하는 예제가 많길래 키움증권으로 공부를 시작했습니다. 그러다가 선배의 권유로 대신증권 API도 사용해보기 시작했습
minsuksung-ai.tistory.com
나는 조건검색식을 쓸거라 키움 Open API를 사용하기로 했다.
키움 Open API를 이용하여 개발환경을 구성할 때의 주의점은 다음과 같다.
- 윈도우 32bit
- Python 32bit
- PyQt 5.15버전
2021년에 충격적인 사양이 아닐 수 없다.
최소사양 아니다. 저 사양이어야만 한다.
PyQt라는 걸 꼭 설치해줘야 하는데, 이유는 증권사에 로그인할 때
이 라이브러리에서 제공하는 함수가 꼭 필요하기 때문이다.
문제는 해당 함수는 PyQt 5.15버전 이후로 개인정보문제로 라이브러리 내에서 퇴출당했다. (현재 최신 버전은 6.0.1버전)
그런데 Windows 10 OS를 사용하면서 32bit로 전체 시스템을 다운그레이드 하고 싶지 않다면
보통은 32bit 가상환경을 만들어 사용하게 될 것이다.
문제는 이 가상환경을 만드는 데에 conda라는 프로그램을 사용하게 되는데
conda install 로 pyqt5를 설치하면 5.6부터 지원되기 때문에
가상환경 내에서 conda install 만으로 패키지를 설치하지 못하고 pip install을 또 써야하는 것이다.
큰 문제는 없을거같긴한데
굉장히 거슬리게 꼬여버린 호환성 문제가 존재한다.
불평은 이쯤하고
Step by step으로 키움 OpenAPI 환경설정방법을 설명하겠다.
1. Anaconda 설치
www.anaconda.com/products/individual
Anaconda | Individual Edition
Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com
2. Anaconda Navigator를 실행하여 Visual Studio Code 실행
3. VS Code 에서 Terminal - New Terminal
터미널에 아래 명령어를 입력하여 가상환경 생성
conda create -n py32_37 // py32_37이라는 이름의 가상환경 생성
conda activate py32_37 // 생성한 가상환경 활성화
conda config --env --set subdir win-32 // Windows 32bit로 환경설정 변경
conda install python=3.7 // 변경한 환경에 맞는 32 bit python 설치
혹시 이제는 지원되지 않는
set CONDA_FORCE_32BIT=1
conda create -n py32_37 python3.7 anaconda
을 이용하여 가상환경을 생성하신 분이 있다면,
굳이 삭제하지 말고 아래 명령을 입력한 뒤 4, 5번을 확인해보자. 안되면 가상환경 삭제하고 새로 ㄱㄱ
conda config --env --set subdir win-32
conda install python=3.7
4. 32bit 설치가 되었는지 확인
터미널에
conda info
를 입력하여 출력 문구에서 win-32를 확인한다.
5. 32bit 설치가 되었는지 확인(2)
터미널에
python
을 입력하여 32bit 파이썬인지 확인한다.
6. pyqt5.15버전 설치
터미널에
pip install pyqt5
를 입력하여 5.15버전의 PyQt를 설치한다.
혹시 콘다로 설치하신 분?
conda install pyqt5
위 명령어 로 설치하신 분은, 삭제 후 pip로 다시 까시길.
conda uninstall pyqt5
pip install pyqt5
conda에는 5.6.0버전과 5.9.2버전밖에 없다.
7. 키움 로그인 화면 구동해보기
아래 코드가 구동되고 로그인창이 나타나면 성공적으로 개발환경을 갖춘 것이다.
from PyQt5.QtWidgets import *
from PyQt5.QAxContainer import *
from PyQt5.QtCore import *
import sys
class Kiwoom(QAxWidget):
def __init__(self):
super().__init__()
self.setControl("KHOPENAPI.KHOpenAPICtrl.1")
self.OnEventConnect.connect(self.errorHandler)
self.dynamicCall("CommConnect()")
self.login_event_loop = QEventLoop()
self.login_event_loop.exec_()
def errorHandler(self, errCode):
pass
class Main():
def __init__(self):
self.app = QApplication(sys.argv)
self.kiwoom = Kiwoom()
self.app.exec_()
if __name__ == "__main__":
Main()
'개발' 카테고리의 다른 글
2021 인공지능 온라인 경진대회 참가 후기 (0) | 2021.07.16 |
---|---|
인공지능 비트 트레이더 경진대회 참가 기록 (0) | 2021.07.16 |
3D Multiviews Human Pose Estimation 개발 일지 (0) | 2021.06.04 |
엑셀VBA 조작하기 - 실시간으로 선택된 행/열 하이라이트하기 (0) | 2021.03.04 |
티스토리 메인에 글쓰기버튼 생성하기 (0) | 2021.01.22 |