Pyeugene

 

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 영상

enter image description here

사용 방법

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