프로젝트/가상화폐 자동투자

[비트코인] 가상화폐 자동투자 프로그램 개발하기(5) - slack 알람 봇

aa_rong_blog 2021. 4. 28. 00:31

이번 포스트에서는 자동투자 프로그램이 매매를 진행할 때마다 메신저에서 알람을 보내주도록 해본다. 메신저는 API 및 다른 프로그램 연결이 용이한 Slack 을 사용하여 진행한다.

 

우선 slack 사용을 위한 기본 세팅을 해주자.

Slack  가입 및 워크스페이스 생성

우선 https://slack.com 아래 슬랙 홈페이지에 들어간다.

 

새 HQ에 오신 것을 환영합니다.

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

slack.com

오른쪽 상단의 '로그인' 을 눌러서 계정을 생성하고 로그인을 해준다. 보유중인 이메일을 가지고 간편하게 회원가입 및 로그인이 가능하다. 로그인이 되면 워크스페이스를 생성할 수 있는 창이 나오는데, '워크스페이스 생성'을 클릭한 후 워크 스페이스 이름, 채널 이름 등을 입력하여 주면 새로운 워크 스페이스가 생성된다.

 

Slack API 발급

이제 slack 과 프로그램의 소통을 가능하게 해주는 slack API 를 발급받아야 한다. api.slack.com 에 접속하여 Create a custom app 이라는 초록색 버튼을 클릭하여 app 을 생성하여 주도록 하자.

 

 

아래와 같은 창이 나오는데, App Name 은 임의로 입력하여 주고 아래 Development Slack Workspace 창에서는 아까 우리가 만든 workspace 를 선택하여 준 후 Create App 버튼을 눌러 생성하여 준다.

생성이 완료되면 App 의 설정창이 나오는데, 왼쪽의 리스트에서 OAuth & Permission 메뉴에 들어가 준 후 

Scopes 의 Bot Token Scopes 에서 Add an OAuth Scope 를 클릭 후 chat:write 기능을 추가해준다.

 

그 후 맨 위에서 Install to Workspace 버튼을 누르면 Bot User OAuth Token 라는 토큰이 발행된다. 이 값을 복사하여 보관하여 두자.

 

또한 이렇게 생성한 App 을 우리가 만든 채팅방에 연결해주어야 한다. 아까 만들었던 워크스페이스 채팅화면으로 들어가서 가장 오른쪽 상단에 세부정보(i) -> 더보기 -> 앱추가 -> api.slack 에서 생성한 app 추가 해준다.

파이썬 프로그램에 slack 연결

이제 파이썬에서 post request 를 slack 으로 보낼 것이다. 우선 pip install request 를 터미널에 쳐서 request 모듈을 설치하여 준다.

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)

이후 위와 같은 코드를 자동매매 코드에 추가한다. 발급받은 api token, 메세지를 발송할 channel 명, 보낼 text 를 slack api 에 post request 로 보내주는 함수이다. 편의를 위해 아래와 같이 발급받은 token 과 channel 명을 함수에 포함시켜도 된다.

import requests

def post_message(text):
    myToken = `your token`
    channel = `your channel`
    response = requests.post("https://slack.com/api/chat.postMessage",
        headers={"Authorization": "Bearer "+myToken},
        data={"channel": channel,"text": text}
    )
    print(response)

 

이렇게 만들었으면 아래와 같이 post_message 함수에 전송할 메세지만을 담아서 사용할 수 있다.

post_message("Message Here!")

 

자동매매 프로그램에서 slack 메신저로 받고 싶은 메시지를 자유롭게 추가하여 주자.

 

 

필자는 이렇게 프로그램이 시작되었을 때 시작 금액을 전송하고, buy 와 sell 주문이 실행됐을 때 체결 및 단가 정보를 전송하도록 하였다.

 

실행하여 아래와 같이 메시지가 잘 전달되는 것을 확인하였다. (부끄러운 잔고..)

 

 

 

완성 코드는 github.com/poArlim/crypto-auto 의 cryptoAutoTrade_v3.py 에서 확인할 수 있다.