EXCELSIOR

2. 주식 분석 개발환경 설정 - 파이썬 환경 설정 및 실행 본문

Python/주식 분석

2. 주식 분석 개발환경 설정 - 파이썬 환경 설정 및 실행

Excelsior-JH 2017. 10. 29. 19:53

주식 분석 개발환경 설정 - 파이썬 환경 설정 및 실행


이전에 포스팅한 1. 주식 분석 개발환경 설정 - 계좌 개설 및 API 설치에서 설치한 Creon 증권API를 파이썬에서 사용하기 위해서는 몇 가지 작업이 필요하다.

1. 파이썬 설치 - Windows 64bit 환경에서 Python 32bit 설치

증권 API를 사용하기 위해서는 Windows 32bit 버전의 파이썬이 필요하다. \rightarrow Creon Plus Q&A 참고
본인의 Windows가 32bit이면 상관이 없지만, 64bit인 경우에는 고작 증권API를 사용하기 위해서 기존에 설치한 파이썬을 지우고 32bit 버전의 파이썬을 설치할 수 없는 노릇이다. 따라서, 아나콘다를 이용해 가상환경으로 파이썬 32bit버전을 설치하도록 한다. 아나콘다를 이용한 파이썬 설치는 여기를 참고하거나 구글에 아나콘다 python 설치 라고 검색하면 참고할 만한 블로그들이 많이 있다. 여기서는 아나콘다를 이용해 32bit 파이썬 가상환경을 설정하는 부분 부터 시작한다.
아나콘다를 이용해 파이썬을 설치하였으면 명령 프롬프트(cmd) 를 열고 아래의 명령어를 통해 Python 3.5 32bit 가상환경을 설정한다.

  • set CONDA_FORCE_32BIT=1 \rightarrow 아나콘다 가상환경 변수를 32bit로 설정
  • conda create -n py35_32 python=3.5 \rightarrow 가상환경 이름이 py35_32이고 python 3.5를 생성

설치가 완료되었으면 가상환경(py35_32)에서 python을 실행하여 python 32bit인지 확인한다.

  • activate py35_32 \rightarrow 가상환경 py35_32 활성화(activate)
  • python \rightarrow python 실행


2. 필요한 모듈(패키지) 설치 - win32com

파이썬 설정이 끝났으면 증권API를 사용하기 위해 win32com이라는 모듈을 설치해야 한다. win32com 모듈은 Python에서 COM을 사용할 수 있도록 해주는 모듈로써 COM은 Component Object Model이라는 용어의 약자로 여러 컴포넌트 객체를 이용하여 프로그램을 개발된 모델을 의미한다.(COM 설명 참고) 대신증권의 Creon Plus COM 방식이기 때문에 win32com 모듈을 통해 증권API를 이용할 수 있다. win32com을 설치하는 방법은 conda install 또는 pip install을 이용하여 설치할 수 있다.

  • conda를 이용한 설치: conda install pywin32
  • pip를 이용한 설치: pip install pypiwin32

또한, 분석이나 실습을 할 때 사용하기 편하도록 jupyter notebook을 설치해준다.

  • jupyter notebook 설치 : pip install jupyter

3. Python에서 증권API 사용하기

win32com 설치가 끝났으면 Creon Plus 증권API를 이용하여 데이터를 가져와 보도록 하자.

1) 관리자 권한으로 Creon Plus 실행

CREON HTS 설치가 완료 되었으면 CREON HTS를 반드시 관리자 권한으로 실행 해야한다. 그런 다음, Creon Plus를 선택한 뒤 로그인 한다.


다음과 같은 화면이 나타나면 Creon plus API가 실행 된 것이다.


2) 관리자 권한으로 Jupyter Notebook 실행

jupyter notebook또한 관리자 권한으로 실행 해줘야 한다. 먼저 아래의 그림처럼 명령프롬프트를 관리자 권한으로 실행한 뒤 다음의 명령어를 입력하여 jupyter notebook을 실행한다.

  • activate py35_32 \rightarrow 가상환경 py35_32 활성화(activate
  • jupyter notebook \rightarrow jupyter notebook 실행


3) Python으로 증권API를 이용해 데이터 조회

마지막으로 python 코드로 증권 API를 이용해 데이터를 조회 해보도록 하자. Creon Plus API는 파이썬 코드를 이용해 다양한 데이터를 조회할 수 있는 예제들을 제공하고 있다. \rightarrow 크레온플러스 자료실
그 중에서 주식 현재가 조회 를 해본다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import win32com.client # win32com 모듈 import
 
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
    print("PLUS가 정상적으로 연결되지 않음. ")
    
# 현재가 객체 구하기
objStockMst = win32com.client.Dispatch("DsCbo1.StockMst")
objStockMst.SetInputValue(0'A005930')   #종목 코드 - 삼성전자
objStockMst.BlockRequest()
 
# 현재가 통신 및 통신 에러 처리 
rqStatus = objStockMst.GetDibStatus()
rqRet = objStockMst.GetDibMsg1()
print("통신상태", rqStatus, rqRet)
'''
통신상태 0 0027 조회가 완료되었습니다.(stock.new.mst)
'''
 
# 현재가 정보 조회
code = objStockMst.GetHeaderValue(0)  #종목코드
name= objStockMst.GetHeaderValue(1)  # 종목명
time= objStockMst.GetHeaderValue(4)  # 시간
cprice= objStockMst.GetHeaderValue(11# 종가
diff= objStockMst.GetHeaderValue(12)  # 대비
open= objStockMst.GetHeaderValue(13)  # 시가
high= objStockMst.GetHeaderValue(14)  # 고가
low= objStockMst.GetHeaderValue(15)   # 저가
offer = objStockMst.GetHeaderValue(16)  #매도호가
bid = objStockMst.GetHeaderValue(17)   #매수호가
vol= objStockMst.GetHeaderValue(18)   #거래량
vol_value= objStockMst.GetHeaderValue(19)  #거래대금
 
# 예상 체결관련 정보
exFlag = objStockMst.GetHeaderValue(58#예상체결가 구분 플래그
exPrice = objStockMst.GetHeaderValue(55#예상체결가
exDiff = objStockMst.GetHeaderValue(56#예상체결가 전일대비
exVol = objStockMst.GetHeaderValue(57#예상체결수량
 
 
print("코드", code)
print("이름", name)
print("시간", time)
print("종가", cprice)
print("대비", diff)
print("시가"open)
print("고가", high)
print("저가", low)
print("매도호가", offer)
print("매수호가", bid)
print("거래량", vol)
print("거래대금", vol_value)
 
'''결과 -2017.10.29 기준
코드 A005930
이름 삼성전자
시간 1556
종가 2654000
대비 34000
시가 2620000
고가 2666000
저가 2607000
매도호가 2657000
매수호가 2654000
거래량 147850
거래대금 39046225
'''
cs


Comments