[HTS API] 대신증권 CybosPlus Python API 준비
국내 증권사들 중에서 주식거래 HTS 를 통해서 API 를 지원하고 있다. 여기서는 대신증권 CybosPlus 를 사용해보려고 한다.
- 대신증권 CybosPlus 설치
- 32bit Miniconda환경
- JupyterLab 시작
- Powershell Openssh 설치
- 원격으로 접속시
증권 HTS API 와 Jupyter Lab 환경
HTS에서 제공하는 OpenAPI 를 사용해서 주식 정보 및 주문을 처리할 수 있다. 여기서는 Jupyter lab 으로 윈도우 머신에 설치된 Open API 를 지원하는 HTS 사용하는 과정을 정리했다.
증권사별 API 비교
“” | 키움 증권 | 대신 증권 | 이베스트 증권 |
---|---|---|---|
제공방식 | OCX | COM | COM, DLL |
파이썬 | 보통 | 좋음 | 보통 |
API사용성 | 보통 | 좋음 | 좋음 |
API거래 수수료 | 0.015% (HTS수준) | 0.015% (HTS수준) 월정액 15000+0.0088% |
0.015% (HTS수준) |
사전 준비
- 대부분 윈도우용 COM API 를 지원하는 HTS 는 32bit 기반의 Python 환경.
- 32bit Miniconda2 를 설치해서 사용하겠다.
대신증권 CybosPlus 설치
대신증권의 API 서비스인 CybosPlus 를 사용한다.
- Cybos 5 설치
- Python2.7 32bit 환경인 Miniconda 32bit 버전 설치
Cybos 5 설치
설치를 하고 CybosPlus 로 인증서를 통해서 로그인한다.
HTS 가동과 연결
HTP 프로그램은 보통 자동으로 관리자 모드로 실행된다. 이 API를 사용하는 파이썬 프로그램도 역시 관리자 모드로 실행되야 한다.
32bit Miniconda2 환경
윈도우 머신에 Python2.7 기반 32bit 용 Miniconda 를 설치한다. 그리고 필요에 따라 64bit miniconda 를 설치한다. 설치하게 되면 32비트 버전은 Miniconda2, 64비트 버전은 miniconda3 으로 구분할수 있다.
대신증권 가상환경
관리자 권한으로 HTS 를 실행하기 때문에 Python을 통한 API 호출도 관리자 권한이 필요하다. 관리자 권한으로 miniconda 를 실행하고 대신증권 가상환경을 생성한다.
메뉴에서 miniconda 쉘을 실행하면 아래같이 나타난다.
1 | (base) C:\Windows\system32> |
대신증권 API를 사용하기 위해서 가상환경을 설정한다. 테스트/응용을 위해서 jupyter 환경을 구성한다.
1 | (base) D:\>conda env list |
JupyterLab 시작
필요한 패키지를 설치하고 jupyterlab 을 실행한다. 먼저 가상환경을 활성화 한다.
1 | (base) > conda activate daeshin_hts |
패키지 설치
가상환경을 활성화 하고 jupyterlab numpy scipy matplotlib
패키지를 설치한다.
1 | (daeshin_hts) > conda install jupyterlab numpy scipy matplotlib |
콘다 가상환경이 생성된 후에 가상환경을 활성화 한다.
- Jupyter Lab을 시작한다.
1 | (daeshin_hts) > jupyter lab WORK_FOLDER |
JupyterLab Config
원격 접속등을 위해서 비밀번호를 사용한다. 그러기 위해서 구성 파일을 통해서 비밀번호, 포트 번호등을 설정해야 한다.
generate-config
Jupyter Lab 에서 설정 파일을 생성한다. 다음 명령으로 각각 $HOME/.jupyter/ 위치에 jupyter_notebook_config.py 파일이 생성된다.
1 | (daeshin_hts)> jupyter lab --generate-config |
jupyter_notebook_config.py 설정 파일에 비밀번호를 추가하려면 비밀번호를 생성하는데 jupyter 명령과 python 명령에서 생성하는 2가지 방법이 있다.
1) jupyter 명령으로 패스워드 생성
첫번째로 아래는 쥬피터 폴더에 있는 파일 ‘jupyter_notebook_config.json’에 패스워드를 생성해 준다.
1 | (daeshin_hts)$ jupyter notebook password Enter password: |
위 명령으로 jupyter_notebook_config.json에 암호가 생성되면 “”sha1:723c…” 로 시작하는 패스워드 해시코드를 복사한 후 jupyter_notebook_config.py
파일의 c.NotebookApp.password
항목에 입력을 한다.
2) python 명령으로 비밀번호 생성
비밀번호 설정 다른 방법으로 파이썬에서 passwd 모듈을 실행해서 비밀번호를 얻을 수 있습니다.
1 | (daeshin_hts)$ python |
출력되는 sha1 암호문자열을 복사해서 사용하시면 됩니다.
1 | [jupyter_notebook_config.py] |
Powershell Openssh 설치
윈도우에 원격 접속해서 HTS를 위한 파이썬 가상환경에서 jupyterlab을 실행할 필요가 있다. 이때 윈도우 파워쉘에서 openssh 설치하고 연결한 후에 administrator 계정으로 관리자 모드로 jupyhter 를 실행한다.
윈도우즈 administrator 활성화
대신 hts 에 접속하기 위해서는 관리자 권한이 필요하다. ssh로 윈도우즈 계정 로그인은 되지만 hts 활설화를 위해서
administrator 게정을 활성화 한다.
파웨쉘을 관리자로 실행해 다음 같이 실행한다.
1 | (daeshin_hts)> net user administrator /active:yes |
- jupyter-lab을
runas
명령으로 실행한다.
1 | (daeshin_hts)> runas /env /user:administrator "jupyter-lab.exe .\Jupyter-HTS\" |
참고
- openssh 서버 구성: https://docs.microsoft.com/ko-kr/windows-server/administration/openssh/openssh_server_configuration
- https://docs.microsoft.com/ko-kr/powershell/scripting/learn/remoting/ssh-remoting-in-powershell-core?view=powershell-7.1
- 윈도우즈 서비스 만들기: https://docs.microsoft.com/ko-kr/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer