해당 프로젝트는 크레온 API가 오직 Windows에서만 작동하기 때문에 Windows OS에서 작업한다
1. python 설치하기
Python Releases for Windows
The official home of the Python Programming Language
www.python.org
1) 64bit는 크레온 API가 작동하지 않기 때문에 32bit로 다시 다운받아줘야 한다
2) 설치에 나오는 것 모든 것을 다 체크해주고 설치가 완료되면 제어판 > 시스템 > 고급 시스템 설정 > 환경 변수에서 python이 변수로 설정되었는지 확인해준다
3) 그리고 python폴더에 들어가서 python.exe와 pythonw.exe 설정 > 호환성 > 관리자 권한으로 이 프로그램 실행 부분을 체크해준다.
4) cmd에서 python을 입력하면 python.exe가 실행되면 설치 성공!
2. VS Code로 py 실행
1) VScode에서 /stockauto 폴더를 생성하여 실행한 다음 terminal(cmd)을 열어 라이브러리를 설치해준다
$ pip install pywinauto
→ pywinauto는 윈도우 작업을 자동화하는 파이썬 라이브러리이다.
2) test.py 파일을 생성한다
그러면 아래와 같은 알림이 뜨는데 이는 VS Code에서 지원하는 python 확장 프로그램으로 install을 클릭하여 설치한다 (juptyer도 설치)
jupyter를 실행시켜 (ctrl+shift+p) > python select interpreter를 선택한 후 이번에 설치한 v3.8.6 32bit를 선택해준다.
그럼 vscode하단에 해당 버전이 설정되었다는 것을 확인시켜준다.
3. 크레온API로 주식 투자 코드짜보기
크레온플러스자료실 - 크레온
money2.creontrade.com
사전으로 대신증권 크레온 앱 다운 > 크레온 비대면 계좌 개설 > 윈도우에 크레온 HTS 다운을 실행해줘야 한다.
힘들게 고생하지말고 API 복붙하면 간단하다.
종목리스트 구하기 코드
import win32com.client
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
exit()
# 종목코드 리스트 구하기
objCpCodeMgr = win32com.client.Dispatch("CpUtil.CpCodeMgr")
codeList = objCpCodeMgr.GetStockListByMarket(1) #거래소
codeList2 = objCpCodeMgr.GetStockListByMarket(2) #코스닥
print("거래소 종목코드", len(codeList))
for i, code in enumerate(codeList):
secondCode = objCpCodeMgr.GetStockSectionKind(code)
name = objCpCodeMgr.CodeToName(code)
stdPrice = objCpCodeMgr.GetStockStdPrice(code)
print(i, code, secondCode, stdPrice, name)
print("코스닥 종목코드", len(codeList2))
for i, code in enumerate(codeList2):
secondCode = objCpCodeMgr.GetStockSectionKind(code)
name = objCpCodeMgr.CodeToName(code)
stdPrice = objCpCodeMgr.GetStockStdPrice(code)
print(i, code, secondCode, stdPrice, name)
print("거래소 + 코스닥 종목코드 ",len(codeList) + len(codeList2))
$python test.py
(크레온Plus가 로그인 되어있는 상태에서 실행)
4. 주가 Slack 알림 봇 만들기
1) api.slack.com 에서 stock-bot을 만든 후 자신의 채널에 추가해준다.
python프로젝트 폴더에 slacker 라이브러리를 설치한다 (link)
$ pip install slacker
슬랙의 정책 업데이트가 있어서 위의 라이브러리는 더이상 사용하지 못한다
(api.slack.com/changelog/2021-02-24-how-we-broke-your-slack-app)
2) 그래서 대신 requests 라이브러리를 설치한다.
$ pip install requests
3)requests를 활용하여 slacker의 기능을 하는 아래의 코드를 복붙한다.
post_message의 첫 번째 인자 myToken에는 slack에서 제공한 oauth토큰을 넣어주고
두번째에는 채널 이름, 세 번째에는 보낼 메세지를 입력한다.
slackbot.py
import requests
def post_message(token, channel, text):
response = requests.post("https://slack.com/api/chat.postMessage",
headers={"Authorization": "Bearer "+token},
data={"channel": channel,"text": text}
)
print(response)
myToken = "xoxb-123*****"
post_message(myToken,"#stock","jocoding")
4) 실행하면 아래와 같이 slack에 메세지가 전달된다.
$python slackbot.py
이제 저 세 번째 인자 메세지에 다른 정보를 입력하면 slack을 통해 주가를 확인할 수 있게 된다.
크레온Plus API에서 '주식 현재가 조회' 코드를 가져와 적용하면 아래와 같다.
import win32com.client
# 연결 여부 체크
objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos")
bConnect = objCpCybos.IsConnect
if (bConnect == 0):
print("PLUS가 정상적으로 연결되지 않음. ")
exit()
# 현재가 객체 구하기
objStockMst = win32com.client.Dispatch("DsCbo1.StockMst")
objStockMst.SetInputValue(0, 'A005930') #종목 코드 - 삼성전자
objStockMst.BlockRequest()
# 현재가 통신 및 통신 에러 처리
rqStatus = objStockMst.GetDibStatus()
rqRet = objStockMst.GetDibMsg1()
print("통신상태", rqStatus, rqRet)
if rqStatus != 0:
exit()
# 현재가 정보 조회
offer = objStockMst.GetHeaderValue(16) #매도호가
import requests
def post_message(token, channel, text):
response = requests.post("https://slack.com/api/chat.postMessage",
headers={"Authorization": "Bearer "+token},
data={"channel": channel,"text": text}
)
print(response)
myToken = "xoxb-1816391606471-1837334229092-qyNvyhx6plJMTV8HDVLulHcg"
post_message(myToken,"#stock","삼성 주가: "+ str(offer))
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/002.gif)
※ 출처
'Dot Programming > Python' 카테고리의 다른 글
[Python] Python Boto3로 AWS S3 사용법 간단 정리 (0) | 2021.05.20 |
---|---|
[Python] awscli, boto3를 이용하여 AWS S3 연동하기 (0) | 2021.05.18 |
[Python] BeautifulSoup으로 웹 스크래핑하기 (0) | 2021.05.12 |
[Python] Mac에서 Python 가상환경(Pyenv) 사용 (0) | 2021.03.23 |