GIL's LAB

오픈 API를 이용한 주식 데이터 수집하기 (1) 환경 설정 본문

퀀트 투자/데이터 수집

오픈 API를 이용한 주식 데이터 수집하기 (1) 환경 설정

GIL~ 2021. 9. 3. 15:32

이 포스팅에서는 "대신증권"이라는 증권사에서 제공하는 오픈 API인 CybosPlus를 이용하여 주식 데이터를 수집하기 위한 환경 설정 방법을 설명한다. 이전에는 네이버 금융에서 크롤링해서 사용했었는데, 네이버에서 크롤링을 차단하는 바람에 퀀트 투자를 위해서는 증권 API를 사용하는 것이 강제되었다. 증권 API를 사용하는 것이 데이터 수집은 더 쉬우나, 사용하기까지 절차가 조금 복잡하다. 실제로 필자도 수 많은 try & error를 거쳐서 성공했고, 그 과정에서 파이썬 재설치를 몇번은 했다. 

 

Step 1. 대신증권 계좌, ID, 공동인증서 만들기 

당연하지만, 대신증권 계좌가 없으면 해당 오픈 API를 사용할 수 없다. 요즘에는 휴대폰으로 비대면 계좌개설이 워낙 잘되어 있기 때문에, 계좌 만드는게 어렵지 않다. 

 

먼저, 앱스토어에서 크레온을 검색하여 "대신증권 크레온 (계좌개설 겸용)"을 설치한다.

그리고 아래 링크를 참고하여 계좌개설을 한다. 이때, 본인의 신분증, 은행/증권 계좌가 필요하다.

https://money2.daishin.com/E5/WTS/Customer/AccountOpen/DW_NoFaceOpen.aspx?m=7113&p=6660&v=5572

 

계좌개설까지 완료되었으면, 크레온에서 메뉴검색에 "id"를 검색하여, "계좌정보 관리 > ID 등록"을 클릭하여 id를 생성한다.

 

마지막으로 대신증권 홈페이지(https://www.daishin.com/g.ds?m=4027&p=3979&v=2983)에서 로그인버튼을 누른 뒤, 공동인증서 발급/재발급 버튼을 눌러 대신증권에서 사용할 공동인증서를 발급한다. 

 

Step 2. CYBOS 5 설치 및 로그인

대신증권 홈페이지 내 다운로드 센터(https://money2.daishin.com/E5/WTS/Customer/GuideTrading/DW_DownloadCenter.aspx?p=2669&v=2248&m=1101)에서 CYBOS 5를 다운로드하여 설치한다. CYBOS 5는 대신증권의 HTS 프로그램이다.

 

설치 후에 대신증권 Cybos 5 파일을 실행하면 아래와 같은 화면이 나오게 된다.

아래 화면에서 가운데에 있는 CYBOS plus를 클릭하고, ID, 비밀번호, 공동인증 비밀번호를 입력하여 로그인한다.

API를 사용할때마다 반드시 로그인이 되어 있어야 한다.

 

 

Step 3. 아나콘다 환경 설정

많은 증권 API가 32bit에서만 정상 작동한다. 하지만, 최근에는 32bit를 쓰는 사용자가 거의 없다는게 문제다.

따라서 아나콘다에서 32bit의 가상 환경을 만들어서, 증권 API를 사용할 때만 이 환경을 사용한다.

아래와 같은 순서로 py36_32라는 가상 환경을 만들 것이다.

 

(1) 아래 그림과 같이 Anaconda Prompt를 관리자 권한으로 실행한다. 단, 환경만 만들고 끝낼 것이라면 반드시 관리자 권한으로 실행할 필요는 없다. 

(2) conda info라는 명령어를 입력하여 platform과 administrator를 확인한다. 

platform이 32bit라면 아래 과정은 필요없으며, administrator가 False라면 아나콘다를 관리자 권한으로 재실행해야 한다.

(3) 

set CONDA_FORCE_32BIT=1이라는 명령어를 이용하여 32bit로 바꾼다. 제대로 바뀌었는지 확인하려면 역시 conda info를 사용하여 나온 결과물의 platform을 확인하면 된다. 단, 이 명령어를 사용했더라도 프롬프트를 껐다가 다시 키면 다시 64bit로 바뀌어 있다. 

 

(4) 이제 32bit이면서 파이썬 버전이 3.6인 새로운 가상 환경을 만들고, 여기에 주피터를 설치하자. 당연히 이 과정은 한 번만 수행하면 된다. 

 

가장 먼저 아래와 같은 명령어를 입력한다.

conda create -n py36_32 python=3.6

여기서 conda create -n env_name은 환경이름이 env_name인 새로운 가상 환경을 만든다는 이야기이고, python=3.6은 가상 환경에서 사용할 파이썬 버전을 나타낸다. 그리고 (3)에서 32bit로 바꾸었으니, 새로 만든 가상 환경인 py36_32는 32bit 하에서 파이썬 3.6을 사용하는 가상 환경이라고 이해할 수 있다.

그 다음으로 아래 명령어를 이용하여 py36_32 가상환경을 사용하자.

conda activate py36_32

 

입력하면 아래 그림과 같이 (base)가 (py36_32)로 바뀐 것을 볼 수 있다. 

즉, 좌측에 괄호는 현재 명령어가 실행되는 가상 환경을 나타낸다.

py36_32 환경에는 주피터가 설치되어 있지 않으므로 pip install jupyter를 입력하여 주피터를 설치한다.

 

Step 4. 연결 확인

이제 jupyter notebook이라는 명령어를 사용하여 주피터를 실행한다.

32bit로 실행되었는지 확인하기 위해, 아래와 같은 코드를 실행한다.

import platform
print(platform.architecture()[0])

실행 결과가 "32bit"이면 정상적으로 실행된 것이다. 

 

마지막으로 아래 코드를 실행하였을 때, 1이 나온다면 정상적으로 연결이 된 것이며, 0이 나온다면 로그인이 필요한 상태이다. 오류가 나온다면 관리자 모드로 아나콘다 프롬프트를 실행하지 않았거나, 파이썬이 32bit가 아닐 가능성이 높다. 

import win32com.client
instCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
print(instCpCybos.IsConnect)

 

수집하고 싶은 금융 데이터나 실험하고 싶은 퀀트 관련 아이디어가 있으면 댓글로 남겨주세요! 
관련 포스팅을 준비하도록 하겠습니다!

 

Comments