pyEugene (python + Eugene Open API)
pyEugene은 유진투자증권에서 제공하는 Champion Open API를 쉽게 사용하기 위한 비공식 python wrapper입니다.
사내에서 제공하는 ocx 파일을 python을 이용해 쉽게 사용하고자 진행한 개인 프로젝트 입니다.
pyEugene의 구조
pyEugene은 ocx에 익숙하지 않은 사용자들을 위해 최대한 쉽게 사용이 가능하도록 개발되었습니다. 쉽게 사용하도록 정리한 기능은 아래와 같습니다.
- Eugene Champion Open API에서 제공하는 ocx의 구조
- 유진투자증권 버전처리 프로그램의 작동 구조
- 기본적인 컨트롤에서 함수 호출을 위한 dynamicCall 함수 사용
사용 가능한 OS
pyEugene 모델은 win32api 모듈을 사용하기 때문에 윈도우에서만 사용이 가능합니다. (arm 윈도우에서는 사용이 어렵습니다.)
mac에서 가동을 위해서는 docker를 통해 가상의 32bit 윈도우 환경을 구축한 후 해당 컨테이너 내에서 프로그램을 실행시키는 방법으로 가능하지만 테스트 해보지는 않았습니다.
Demo 영상
사용 방법
pyEugene
을 사용하기 위해서는 아나콘다를 설치해야 합니다(미니콘다를 설치해 사용할 수도 있습니다)
아나콘다 다운로드가 완료 되었으면 아나콘다 프롬프트를 실행해 32bit 개발환경으로 설정해줘야 합니다
set CONDA_FORCE_32BIT=1
32bit로 설정이 완료 되었으면 32bit 가상 개발 환경을 만들어줍니다 (파이썬 3.9 버전을 사용해야 합니다)
conda create --name py39_32 python=3.9
설치가 모두 끝나면 가상환경을 실행하고 pip를 통해 pyEugene
을 설치해줍니다
conda activate py39_32
pip install pyeugene
다음부터는 pyEugene
을 설치하지 않고도 기능을 사용할 수 있습니다.
간단한 예시로 pyEugene
을 이용해 실시간 시세를 받아오려면 아래 코드를 사용하면 됩니다
import sys
import os
from pprint import pprint
from dotenv import load_dotenv
from pyeugene.eugene_manager import EugeneManager
if __name__ == "__main__":
load_dotenv()
em = EugeneManager(os.getenv("USER_ID"), os.getenv("USER_PW"), os.getenv("CERT_PW"))
real_cmd = {
'realId': '21',
'realKey': '005930',
'output': ["SCODE", "SNAME", "CMARKETGUBUN", "LTIME", "CPCHECK", "LDIFF", "LCPRICE"]
}
em.put_real(real_cmd)
for i in range(10):
data = em.get_real()
pprint(data)
sys.exit()
소스코드 링크
https://github.com/Choih0401/pyEugene
PREVIOUSBoj 1011
NEXT주식 자동화를 위한 백테스팅