아래의 내용은 유튜브 '조코딩'님의 '파이썬으로 주식거래 자동화만들기'를 참고한 내용입니다.
앞서서 종목조회하기로 API를 테스트를 해봤으니 좀더 재미있게 느껴지는 걸 만들어 볼 수 있었다.
내가 원하는 종목코드를 알기만 하면, 그 종목의 상세정보를 슬랙으로 알림을 받을 수 있는 것이다.
사실 슬랙봇만들기는 예전에 AWS API를 사용해서 모니터링알람을 만들때 해봤었다.
그런데 그때는 슬랙의 ㅅ도 모른상태로 접했어서 이걸 연결하는데도 하루가 걸렸던것 같다.. .
하지만 또 까먹을 수 있으니까 좀 정리해두려고 한다.
1) 슬랙 설치 및 채널생성
이미 슬랙을 메신저로 사용하고 있다면, 금방할수 있을지도.
새로운 워크스페이스를 파서 새로운 채널을 생성 권장(테스트목적이니까)
2) 슬랙봇 생성
슬랙API 사용 홈페이지 : api.slack.com/
2-1) 슬랙봇은 하나의 custom app으로 새로 생성한다.
그리고 create new app으로 새로운 app(bot)을 생성한다.
나는 stock-bot이라는 이름으로 새로운 app을 생성하고, 지금 나의 워크스페이스(testworkspace)를 배포할 곳으로 지정
이미 나의 워크스페이스에는 몇가지 앱들이 있는데, 처음에 app과 bot이 같은 개념인지 몰라서 이름이 저렇다..ㅠㅠ
2-2) 봇 토큰 확인 및 권한부여
일단 봇토큰은 잘 기억해둔다. 지금 생성한 봇을 식별할 key로 쓰이기 때문이다.
해당 봇이 할 수 있는 action?을 지정해둔다.
우리 봇의 목적은 채널에 메세지를 말하는 봇이니까 write 권한을 부여한다.
2-3) 해당 봇을 workspace에 설치한다.
맨위에 install 버튼을 누르고, 원하는 채널에서 만든 앱(bot)을 초대한다.
3) Slacker 라이브러리 설치 및 테스트
파이썬에서는 슬랙과 연동할 수 있는 라이브러리가 git에 공개되어 있다. (정말 똑똑한사람 천지..)
아래 깃허브에 나와있는 설명대로 그대로 하면 연결가능
이때, 아까 기억해둔 슬랫봇 토큰을 넣어야한다.
Slacker활용법 : github.com/os/slacker
4) 삼성전자의 상세정보를 슬랙으로 던져보자!
아래의 크레온API 테스트코드 중 주식 현재가 가져오기 코드를 참고하면 된다.
import win32com.client
from slacker import Slacker
# 연결 여부 체크
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()
# 현재가 정보 조회
'''
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) # 저가
bid = objStockMst.GetHeaderValue(17) #매수호가
vol= objStockMst.GetHeaderValue(18) #거래량
vol_value= objStockMst.GetHeaderValue(19) #거래대금
# 예상 체결관련 정보
exPrice = objStockMst.GetHeaderValue(55) #예상체결가
exDiff = objStockMst.GetHeaderValue(56) #예상체결가 전일대비
exVol = objStockMst.GetHeaderValue(57) #예상체결수량
'''
offer = objStockMst.GetHeaderValue(16) #매도호가
exFlag = objStockMst.GetHeaderValue(58) #예상체결가 구분 플래그
print("매도호가", offer)
if (exFlag == ord('0')):
print("장 구분값: 동시호가와 장중 이외의 시간")
elif (exFlag == ord('1')) :
print("장 구분값: 동시호가 시간")
elif (exFlag == ord('2')):
print("장 구분값: 장중 또는 장종료")
slack = Slacker('xoxb-봇토큰입력')
# Send a message to #general channel
slack.chat.post_message('#stock_noti', '삼성전자 현재가(매도호가):'+str(offer))
가져올 수 있는 상세정보는 엄청많아서 그중에서 원하는걸 수정하면 된다.
나는 매도호가를 가져와서 슬랙으로 던졌다.
실제 어제와 오늘 삼정전자 매도호가를 가져와서 슬랙 메세지로 아래처럼 확인해볼 수 있다.
'사이드 프로젝트 > 주식자동 매매 프로그램' 카테고리의 다른 글
Python 주식 자동매매5 - 주식거래 자동화 프로그램 테스트 및 개선사항 (0) | 2021.02.15 |
---|---|
Python 주식 자동매매4 - 주식거래 자동화 프로그램 만들기 (0) | 2021.02.05 |
Python 주식 자동매매2 - 개발환경설치 및 대신증권 API 구조 (0) | 2021.02.05 |
Python 주식 자동매매1 | 주식거래 자동화 개요 및 구조 (0) | 2021.02.05 |