코드들은 github에 업로드되어있습니다.
https://github.com/JaeYeongSong/Blog/tree/main/BTC_Pyupbit-Autotrade
저번 시간에 뭘 알아보았죠? 내가 보유한 원화, 코인 정보를 조회하는 걸 배웠습니다.
오늘 알아볼 것은 1편에서 알아본 것에 심화과정이라고 생각하시면 될 것 같습니다.
오늘은 1편에서 알아본 보유한 자산 정보 조회를 응용하여, Slack 메신저로 자산 정보를 보내는 방법을 알아봅시다.
오늘의 소스 코들을 불러오겠습니다.
import pyupbit
import requests
import threading
access = "your access"
secret = "your secret"
myToken = "your key"
upbit = pyupbit.Upbit(access, secret)
def post_message(token, channel, text):
"""슬랙 메시지 전송"""
response = requests.post("https://slack.com/api/chat.postMessage",
headers={"Authorization": "Bearer "+token},
data={"channel": channel,"text": text}
)
def restart():
myKRW_balance = upbit.get_balance("KRW") # 보유 현금 조회
myBTC_balance = upbit.get_balance("KRW-BTC") # KRW-BTC 조회
myKRW = f"나의 KRW 잔고 : {myKRW_balance}"
myBTC = f"나의 BTC 잔고 : {myBTC_balance}"
# 맨 위에 '---'표시는 전에 전송된 정보와 구분하기 위해 사용했습니다
post_message(myToken,"#balance", "-------------------------------------------------")
post_message(myToken,"#balance", myKRW)
post_message(myToken,"#balance", myBTC)
# 몇초마다 반복하는지 설정합니다(초(s) 단위)
threading.Timer(300, restart).start() # 현재는 300초(5분) 마다
restart()
▲ AT_basic/01-2.py
소스 코드에 대한 설명도 해드려야겠죠?
위에서부터 차례대로 설명해드리겠습니다.
import는 필요한 라이브러리를 들고 오는 겁니다.
pyupbit는 upbit에 있는 내 자산 정보(원화, 코인)를 가져오기 위해 import 해줬고,
그다음 requests는 Slack 메신저에 자산 정보를 보내야 하기 때문에, HTTP 통신 목적으로 import 해줬습니다.
마지막으로 threading은 Slack 메신저에 자산 정보를 한 번만 보내는 것이 아니라,
반복적으로 계속 보내줘야 하기 때문에 import를 해 주었습니다.
access = "your access"
secret = "your secret"
myToken = "your key"
▲ AT_basic/01-2.py 중 key 입력 구문
그다음 access와 secret에는 upbit api key를 발급받으면 얻을 수 있는 2가지 key를 입력해주시면 됩니다.
그리고 한 칸 아래에 있는 myToken은 Slack api를 통해 봇을 만드시고 봇의 Token를 적어주시면 됩니다.
그리고 그다음 def 함수 같은 경우에는 Slack을 통해 알람을 보내기 위해 정의하는 함수입니다.
그다음 아래 Slack 메신저로 자산 정보를 보낼 수 있는 코드가 있습니다.
아래 반복문에 대해 한 번 알아봅시다.
def restart():
myKRW_balance = upbit.get_balance("KRW") # 보유 현금 조회
myBTC_balance = upbit.get_balance("KRW-BTC") # KRW-BTC 조회
myKRW = f"나의 KRW 잔고 : {myKRW_balance}"
myBTC = f"나의 BTC 잔고 : {myBTC_balance}"
# 맨 위에 '---'표시는 전에 전송된 정보와 구분하기 위해 사용했습니다
post_message(myToken,"#balance", "-------------------------------------------------")
post_message(myToken,"#balance", myKRW)
post_message(myToken,"#balance", myBTC)
# 몇초마다 반복하는지 설정합니다(초(s) 단위)
threading.Timer(300, restart).start() # 현재는 300초(5분) 마다
restart()
▲ AT_basic/01-2.py 중 반복문
일단 def로 restart라는 함수를 하나 만들어줍시다.
그다음에 myKRW, BTC_balance라는 변수로 보유한 원화와, 비트코인을 조회합시다.
myKRW_balance = upbit.get_balance("KRW") # 보유 현금 조회
myBTC_balance = upbit.get_balance("KRW-BTC") # KRW-BTC 조회
▲ AT_basic/01-2.py 중 보유 자산 조회
1편에서 알아본 것처럼
upbit.get_balance("")
여기 괄호 안에 원화는 KRW, 비트코인은 KRW-BTC, 도지 코인은 KRW-DOGE 처럼
이렇게 조회를 원하시는 코인을 적어주시면 됩니다.(대문자로 적어주세요!)
그다음 myKRW, BTC라는 변수로 Slack 메신저로 자산 정보를 보냈을 때
보낸 정보가 무엇인지 나타내기 위해 앞에 무엇을 나타내는지 적어주면 됩니다.
myKRW = f"나의 KRW 잔고 : {myKRW_balance}"
myBTC = f"나의 BTC 잔고 : {myBTC_balance}"
▲ AT_basic/01-2.py 중 보유 자산 이름 설명
여기서 나의 KRW 또는 BTC 잔고라고 적혀있는 부분을 보유자산 조회할 때
myKRW, BTC_balance 변수에 맞게 앞에 무슨 코인을 나타내는지 적어주시면 됩니다.
만약에 두 번째 자산 조회하는 곳에 KRW-DOGE라고 적으시면
이번 변수에 '나의 DOGE 잔고' 라고 이렇게 적어주시면 됩니다.
그다음 post_message 라는 함수를 호출해서, 자산 정보를 보내봅시다.
post_message(myToken,"#balance", "-------------------------------------------------")
post_message(myToken,"#balance", myKRW)
post_message(myToken,"#balance", myBTC)
▲ AT_basic/01-2.py 중 Slack 메신저로 자산 정보 보내기
이 부분에서 #balance 라는 부분이 있는데 이 부분은 Slack 봇을 만드신다면
Slack 봇이 있는 채널 이름을 적어주시면 됩니다.
코드 설명을 해드리자면 맨 위에 '-------' 이 부분은 저번에 보냈던 정보와 헷갈리지 않도록 하기 위해,
구분하기 위해 '----' 이 표시를 사용했습니다.
그다음 아래 2줄의 코드는 보유 자산을 Slack 메신저로 보내기 위해 아까전에 정의한
myKRW, BTC 변수를 넣어주었습니다.
그 다음 마지막으로
threading.Timer(300, restart).start() # 현재는 300초(5분) 마다
▲ AT_basic/01-2.py 중 반복 함수(타이머)
threading.Timer를 통해서 반복적으로 몇 초마다 Slack 메신저로 자산 정보를 보낼 건지에 대해 정의해주는 코드입니다.
threading.Timer 뒤에 괄호 열고 현재 임시로 300 이라고 적혀 있는데
이 부분을 몇 초마다 반복할지 정해주는 코드입니다.
독자분들이 얼마큼 사용할지는 개인의 설정에 맞게 적용하시면 됩니다.
예시로 30분이라면 1800 이라고 적어주면 되겠죠?
한 번 작동시켜 봅시다.
시작 버튼을 누르고 한 번 작동시켜 보니
정상 작동이 된 것을 확인할 수 있습니다.
여기서 부족한 점은, 변화가 생길 때마다 오는 게 아니기 때문에 채팅창이 씨끄러울 겁니다.
그러므로 알림은 꺼주시고, 확인할 때만 이 Slack 봇이 있는 채널에 들어가셔서 자신의 자산 정보를 확인하시면 될 것 같습니다.
원래 스마트폰으로 보신다면 upbit라는 앱을 사용하여 자산 정보를 확인하시면 되겠지만, 다른 컴퓨터나 전자기기에서
카카오 인증을 받지 못하신다면 이걸로 사용하시면 좋을 것 같습니다.
지금까지 읽어주신 분들 감사드립니다.
지금까지 Slack 메신저로 자산 정보 보내기 코드였습니다.