Kiwoom Open Api Python
Project description
KOAPY
Kiwoom Open Api Python
Free software: MIT license
Documentation: https://koapy.readthedocs.io.
Features
KOAPY 는 키움증권의 OpenAPI 를 Python 에서 쉽게 사용할 수 있도록 만든 라이브러리 패키지 및 툴입니다.
키움에서 제공하는 OpenAPI 를 활용하는데 필요한 아래와 같은 것들을 알지 못해도, 기본적인 Python 에 대한 지식만 어느정도 있다면 쉽게 사용할 수 있도록 하는것에 초점을 두었습니다.
키움에서 제공하는 OpenAPI 의 OCX 라이브러리
OCX 를 Python 에서 구동하기 위한 PyQt5 와 QAxWidget 생성
컨트롤에서 함수 호출을 위한 dynamicCall 함수 사용
이벤트 처리를 위해 적절한 signal/slot 처리
KOAPY 는 아래와 같은 기능을 제공합니다.
PyQt5 를 기반한 GUI 환경에 얽메일 필요가 없이 일반적인 라이브러리처럼 가져다가 활용할 수 있습니다. CLI 형태로 쓸 수도 있고 이외에 다양한 곳에서 쉽게 활용이 가능합니다.
컨트롤 함수 호출시 명세에 적혀있는 형태 그대로 Python 함수 형태로서 호출 가능합니다. 이후는 KOAPY 가 유연하게 처리합니다. 매번 명세에 맞게 dynamicCall 의 인자를 적어넣거나, 모든 존재하는 함수에 대해 미리 레퍼 함수를 손아프게 만들어놓을 필요가 없습니다.
이벤트 처리 및 비동기 프로그래밍에 익숙하지 않더라도 그보다 비교적 쉬운 인터페이스를 통해 관련 기능들을 활용할 수 있습니다. 가장 간단한 로그인 처리부터 TR/실시간 데이터 처리, 그리고 주문처리까지 다양한 시나리오에 대한 기본 이벤트처리 로직을 제공합니다.
주식 기본정보 요청부터 일봉/분봉 등 시세 데이터 확인 그리고 예수금/잔고 확인까지 일반적으로 자주 필요한 여러 기능들에 대해서는 미리 구현된 함수를 제공합니다. 함수 호출 결과중 테이블성 정보들은 pandas.DataFrame 타입으로 제공해 이후 분석 및 처리가 유용하게끔 했습니다.
TR 의 입력/출력 데이터 구조, 실시간 데이터별 FID 목록, 에러코드에 대한 설명문 등 개발하는데 있어서 필요한 여러 메타정보들을 언어내 라이브러리에서 바로 조회 및 활용이 가능합니다. 매번 메뉴얼이나 KOAStudio 를 열어서 참고하고 이후 일일이 하나씩 하드코딩할 필요가 없습니다.
로컬 네트워크에서 gRPC 를 통한 서버-클라이언트 형태의 구성이 가능합니다. 이를 통해 “라이브러리 호환성으로 인해 32bit 환경에서만 작업되어야 한다” 는 제약을 벗어나 클라이언트는 Python 64bit 를 사용할 수도 있습니다. 더 나아가서는 gRPC 에서 지원하는 모든 다양한 언어를 클라이언트로 작성해 사용할 수도 있습니다.
이외에 메시징/알람 기능, 휴장일 확인, TR 호출시 호출횟수제한 조절 등 개발 및 활용하는데 필요한 다양한 부가기능들을 제공합니다.
굳이 Python 코드를 작성하지 않더라도 기본적인 기능들을 활용해볼 수 있도록 여러 커멘드를 포함하는 CLI 를 제공합니다. CLI 를 활용하면 마켓별 코드목록 확인, 주식 기본정보 확인, 일봉/분봉 데이터 확인 및 저장, 실시간 데이터 구독 등 다양한 기능들을 사용할 수 있습니다. 서버도 CLI 커멘드로 쉽게 띄울 수 있습니다.
아래는 간단한 활용 예시 스크립트 입니다.
from koapy.context.KiwoomOpenApiContext import KiwoomOpenApiContext
from koapy.openapi.RealType import RealType
from google.protobuf.json_format import MessageToDict
with KiwoomOpenApiContext() as context:
# 로그인 예시
context.EnsureConnected()
# 함수 호출 예시
codes = context.GetCodeListByMarketAsList('0')
names = [context.GetMasterCodeName(code) for code in codes]
codes_by_name = dict(zip(names, codes))
code = codes_by_name['삼성전자']
# TR 예시 (opt10081)
data = context.GetDailyStockDataAsDataFrame(code)
print(data)
# 실시간 예시
screen_no = '0001'
code_list = [code]
fid_list = RealType.get_fids_by_realtype('주식시세')
real_type = '0'
for event in context.RealCall(screen_no, code_list, fid_list, real_type):
print(MessageToDict(event))
해당 라이브러리는 PyPI 를 통해서 설치 가능합니다.
pip install koapy
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.4 (2020-09-23)
More cli commands are added.
0.1.3 (2020-09-21)
Cli implemented.
0.1.2 (2020-09-19)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for koapy-0.1.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 991645bc4def2e5b3445b0b25fbc4cb72980ccd031172a215f76b93a8b625784 |
|
MD5 | c1b9d031c449bcee358e9feb0bc18736 |
|
BLAKE2b-256 | c8969d08922da5f36991d1353af574cee3b54a1364e627be880503e22a4e6121 |