퀀트투자

대신증권 API로 데이터 가져오기 (분봉, 일봉) with python

Like_Me 2023. 10. 28. 15:04
반응형

퀀트 혹은 백테스팅을 위해서는 과거 주가 데이터는 필수입니다. 이를 수집하기 위한 많은 방법이 있는데, 일봉 데이터를 얻으려면 FinanceDataReader([1])를 사용하여 일봉 데이터를 가져오는 방법이 가장 간단해 보입니다. 하지만 분봉 수준의 데이터는 증권사 api를 사용해야 합니다. 키움, 이베스트, 대신 증권 등에서 모두 이를 지원하는데 대신 증권에서 제공하는 api가 가장 많은 데이터를 가져올 수 있어 이를 이용하여 가져와보겠습니다.

1) 우선 대신증권 api를 이용하는 만큼 CYBOS Touch 어플에서 비대면 계좌개설을 해야하고, 정회원 ID 등록도 마쳐야 합니다. (https://www.creontrade.com/g.ds?m=2222&p=2015&v=2885 페이지 참조). ID 등록을 마치면 범용 공인인증서를 등록하면 끝납니다.

2) https://www.daishin.com/g.ds?m=1101&p=12294&v=11949 에서 CYBOS5를 설치하고 실행하면 아래와 같은 화면이 나옵니다.

[주의!]

처음 실행 시 CYBOS5(맨 왼쪽) 탭으로 실행되는데 반드시 CYBOS plus 탭으로 변경하여 로그인해야 합니다.

vscode 혹은 pycharm 등의 IDLE를 사용시에 반드시 '권리자 권한으로 실행'을 하셔야 합니다! 

위의 사항을 지키지 않으면 'pywintypes.com_error: (-2147221005, '잘못된 클래스 문자열입니다.', None, None)' 에러가 발생합니다.

 

원래 이 사항들을 마치면 코딩을 열심히 해서 api를 써야겠지만, 감사하게도 잘 만들어진 툴이 존재해 이를 사용하겠습니다. 먼저 가상환경을 잘 세팅해줘야 하는데, 콘다를 기준으로 세팅하는 방법을 알려드리겠습니다.

증권사 api는 64bit가 아닌 32bit에서 작동되어서 32bit 환경을 구성해야 합니다. 따라서 아래와 같은 명령어를 터미널에 써주세요.

conda create -n 32bit_env # 가상환경 생성
conda activate 32bit_env # 가상환경 실행
conda config --env --set subdir win-32 # 32bit 세팅
conda install python=3.8
conda install pandas=1.1
pip install PyQt5
pip install pypiwin32
pip install tqdm

세팅을 맞친 후 Creon-Datareader https://github.com/gyusu/Creon-Datareader([2])라는 깃헙 페이지에서 코드를 다운로드하시고 압축을 풀어준 후 'python creon_datareader.py' 명령어를 실행시켜 주시면 됩니다. 

이후에는 github에 표시된 대로 따라해서 실행하시면 됩니다.

 

Reference

[1] https://github.com/FinanceData/FinanceDataReader

 

GitHub - FinanceData/FinanceDataReader: Financial data reader

Financial data reader. Contribute to FinanceData/FinanceDataReader development by creating an account on GitHub.

github.com

[2] https://github.com/gyusu/Creon-Datareader

 

GitHub - gyusu/Creon-Datareader: 대신증권(Creon) PLUS API를 이용한 주가 데이터 수집 프로그램

대신증권(Creon) PLUS API를 이용한 주가 데이터 수집 프로그램. Contribute to gyusu/Creon-Datareader development by creating an account on GitHub.

github.com

[3] https://wikidocs.net/3680

 

2) CYBOS Plus 로그인

CYBOS Plus에 로그인하려면 통신 ID와 공인인증서를 등록해야 합니다. 대신증권 홈페이지의 [고객센터] → [신규고객가이드] → [처음 방문고객안내] 페이지를 참조해서 그림…

wikidocs.net

 

반응형