'주식자동화' 태그의 글 목록 :: Horizontal Grays S2

이 주식자동화를 프로그램을 돌려놓고 수익이 알아서 막 나면 얼마나 좋을까?

하지만 수익은 커녕 손실만 계속 발생한다면 그것도 큰 문제다.

수익이 나던 손실이 나던 적어도 이 프로그램이 현재 뭘하고 있는지 내가 어디에 있던 나에게 알려는 줘야 한다. 

무슨 종목을 얼마에 체결하는지 같은 정보 등등

여튼 최악의 상황에서 원격데스크탑으로든 무슨 수를 써서든 주식용 컴퓨터에 접속을 해서 프로그램을 멈추든 하지 않겠는가.

 

 

이런 정보를 가장 많이들 사용하는 카카오톡으로 그때 그때 보내주면 좋겠는데 뭐 그건 아직 모르겠다.

카카오톡도 api가 있는걸로 아는데 그건 나중에 공부해보는걸로 하고

일단 이것 역시 시키는대로 ^^;;

 

Slack은 업무용 메신저로 엄청 많이 사용되는 것으로 알고 있다. 미국회사던가 여튼 이번에 코로나 사태에 '줌'과 함께 꽤나 좋은 실적을 낸 회사로 알고 있다.

잡설은 그만하고 슬랙에 접속해서 가입을 한다.

GOOLGE로 가입을 해도 되고, 로그인 버튼을 누르고 우측 상단 계정생성을 눌러 계정을 만들면 된다.

 

https://slack.com/

 

Slack은 미래의 업무가 이루어지는 곳입니다

Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다.

slack.com

 

이메일을 입력하면 6자리 인증코드를 확인하는 과정이 나오고

입력했던 본인의 이메일 slack에서 보낸 6자리 인증코드를 입력해서 다음으로 넘어가면  workspace 생성 화면이 나온다.

여기서 workspace 이름을 적당히 지어둔다. 위에선 jslee-stock이라고 지어줬다. 다음을 눌러 다음단계로 넘어가면

채널이름을 설정하는데 위에선 stock이라고 지어줬다. 그리고 다음

여럿이서 같이하는 작업이 아니고 혼자 쓸것이므로 팀원추가가 필요없다 형광펜으로 칠한 이단계 건너뛰기를 하면 기본설정이 끝이난다.

PC에서는 위와같은 초기화면이 뜨고

핸드폰 IOS, Android 모두 Slack 앱이 있는데 다운로드하여 접속하면 아래와 같은 화면이 뜬다.

위의 가입-설정의 워크스페이스와 이름이 jslee-stock과 jslee 로 다른데 가입-설정 과정을 사진으로 남기려고

새로 가입하여 만든 워크스페이스인 jslee-stock과 기존에 쓰던 워크스페이스인 jslee와 이름이 다르게 되었다.

 

다음은 이렇게 만든 slack 워크스페이스에 알람을 보내준 슬랙알람봇을 만들어준기 위해 아래의 링크에 접속한다.

api.slack.com

 

Create an App을 눌러 app을 만든다.

App Name 을 적당히 적고 (위의 예에선 jslee-stock-bot)

App Name 아래의 workspace에서 본인의 워크스페이스를 선택한다.(jslee-stock)

 

그러면 위와같이 App이 만들어지고 기본 정보들이 표시된다.

이제 이 알리봇에 권한을 줘야하는데 

왼쪽 메뉴에서 형광펜으로 칠한  OAuth & Permissions 을 클릭 하고 우측 메인화면을 스크롤 다운하면

Scope / Bot Token Scopes 가 나오는데 여기서 Add an OAuth Scope를 누르면 다음과 같이 여러 권한이 나온다.

이 여러권한 중 우리는 알림봇이 우리의 채팅창에 메시지를 보내는 것이므로

형광펜으로 칠한 chat:write 권한을 선택한다.

그리고 스크롤 업해서 위로 올라가다 보면 위 그림처럼 OAuth Tokens for Your Workspace의 Install to Workspace가 나오는다. 클릭해주자.

그러면 위 그림과 같이 허용할꺼냐고 묻는데 허용!

자 여기서 중요한게 뭐냐면 앞으로 우리가 작성하는 파이썬 프로그램은 이 알림봇에게 메시지를 보낼때

이 알림봇을 구분하는 구분자 같은게 있는데 그게 아래 그림의 Bot User OAuth Token 이다.

이 부분이 나중에 소스에 사용됨을 기억하자.

즉 파이썬을 작성한 코드에서 메시지는 이 Token을 가진 알림봇에 메시지를 전달하고

이 알림봇은 내 채팅창에 메시지를 전달하는 것이다.

 

이를 위해 한가지 더 작업해둘 사항이 있다.

다시 slack 채팅창으로 가서

형광펜 부분을 누른다. 그러면 아래와 같은 창이 뜨는데

통합 탭에서 앱/앱추가 를 눌러 만들어둔 앱을 추가해준다.

 

그러면 아래와 같이 jslee-stock-bot님과 함께 참여했다고 뜬다.

 

자 그럼 이제 이 slack 채팅으로 메시지를 보내보도록 하자.

지난번에 작업했던 대로 vs code 를 실행하여 임의로 파이썬 파일을 만들고 테스트를 해보도록 하자.

일단 msgtest.py 로 작업한다.

 

그 전에 해야할게 있는데 slack으로 메시지를 보내기 위해 파이썬은 requests 라는 것을 사용한다.

그래서 request를 깔아야하는데 역시 pip install requests 로 설치하도록 한다.

역시 이미 설치되어 있어서 위와 같은 메시지가 나온다만 설치되어 있지 않을 경우 설치되는 과정이 표시될 것이다.

 

설치가 되었다면 아래의 소스와 같이 타이핑 해보자

 

import requests
import win32com.client

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 = "여기는 본인이 사용하는 고유의 Bot User OAuth Token 값을 넣어야 함!!"

# 연결 여부 체크
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)  #매도호가
post_message(myToken,"#stock","삼성전자 현재가:" + str(offer))

(위 소스는 CREON Plus 자료실의 주식현재가 조회 소스에 Slack 메시지 전송을 덧붙인 예제임)

 

위 코드를 작성할때  11행의 반드시 myToken 값은 위의 api.slack.com 에서 표시되는 본인의 Bot User OAuth Token 값을 넣어줘야만 한다.

 

그리고 이 소스를 실행하기전에 CREON Plus 를 반드시 실행하고 위 소스를 실행한다.

실행은 터미널에서 python msgtest.py

그러면 터미널의 결과에서도 아래와 같이 조회가 완료되었고 Response [200] -이게 잘 되었다는 것- 으로 표시되고

다음과 같이 브라우저의 slack 채팅창에서도 메시지가 표시되고

핸드폰에 (slack에 미리 로그인한) 알림이 뜨는 것을 확인할 수 있다.

앞으로 이 파이썬의 requests를 이용해서 여러 정보를 slack의 메시지로 보내고 내가 어디에 있던 핸드폰 또는 브라우저 등으로 확인 할 수 있겠다.

 

오늘은 여기까지!

+ Recent posts