업비트 API 파이썬 코드
업비트API를 이용 하여 비트코인 시세 조회 업비트API 파이썬 코드
self.access_key = ‘ACCESS KEY 입력’ self.secret_key = ‘SECRETE KEY 입력’ 이부분에 업비트에서 발급받은 엑세스키와 시크릿키를 입력해주세요
방급 방법은 링크를 참고하세요
꿀팁
신청때 유동 아이피인분들은 CMD로 확인하시지 마시고 구글에서 ‘what is my ip’라고 치시고 IP 확인 하셔야 정상적인 아이피로 등록 하실수 있으십니다.
업비트API 파이썬 코드
import jwt
import uuid
import requests
from urllib.parse import urlencode
import hashlib
import matplotlib.pyplot as plt
import time
class Upbit:
def __init__(self):
self.access_key = 'ACCESS KEY 입력'
self.secret_key = 'SECRETE KEY 입력'
self.server_url = 'https://api.upbit.com/v1/'
def get_auth_headers(self, query):
m = hashlib.sha512()
m.update(urlencode(query).encode())
query_hash = m.hexdigest()
payload = {
'access_key': self.access_key,
'nonce': str(uuid.uuid4()),
'query_hash': query_hash,
'query_hash_alg': 'SHA512'
}
jwt_token = jwt.encode(payload, self.secret_key)
authorize_token = 'Bearer {}'.format(jwt_token)
headers = {"Authorization": authorize_token}
return headers
def request_private(self, content):
headers = self.get_auth_headers({})
res = requests.get(self.server_url + content, headers=headers).json()
return res
def request_public(self, content, query):
res = requests.request("GET", self.server_url + content, params=query).json()
return res
# Create an instance of the Upbit class
upbit = Upbit()
# Make a private API request
response = upbit.request_private('accounts')
print(response)
# Make a public API request with query parameters
query_params = {
'market': 'KRW-BTC',
'to': '2023-07-15T00:00:00Z',
'count': 200
}
response = upbit.request_public('candles/minutes/1', query_params)
print(response)
if 'error' in response:
print("Error:", response['error']['message'])
else:
data = response
closing_prices = [float(item['trade_price']) for item in data]
# Chart creation
plt.plot(range(len(closing_prices)), closing_prices)
plt.xlabel('Candle')
plt.ylabel('Closing Price')
plt.title('Closing Prices for the Market on Upbit')
plt.xticks(rotation=90)
plt.ticklabel_format(style='plain', axis='y') # Format y-axis labels as numerical values
plt.tight_layout()
plt.show()
import jwt
import uuid
import requests
from urllib.parse import urlencode
import hashlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time
from datetime import datetime, timezone
import matplotlib.pyplot as plt
import numpy as np
import mplfinance as mpf
import pandas as pd
class Upbit:
def __init__(self):
self.access_key = ''
self.secret_key = ''
self.server_url = 'https://api.upbit.com/v1/'
def get_auth_headers(self, query):
m = hashlib.sha512()
m.update(urlencode(query).encode())
query_hash = m.hexdigest()
payload = {
'access_key': self.access_key,
'nonce': str(uuid.uuid4()),
'query_hash': query_hash,
'query_hash_alg': 'SHA512'
}
jwt_token = jwt.encode(payload, self.secret_key)
authorize_token = 'Bearer {}'.format(jwt_token)
headers = {"Authorization": authorize_token}
return headers
def request_private(self, content):
headers = self.get_auth_headers({})
res = requests.get(self.server_url + content, headers=headers).json()
return res
def request_public(self, content, query):
res = requests.request("GET", self.server_url + content, params=query).json()
return res
# Create an instance of the Upbit class
upbit = Upbit()
# Make a private API request
response = upbit.request_private('accounts')
def update_chart(i):
current_time = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
query_params = {
'market': 'KRW-BTC',
'to': current_time,
'count': 1 # 최근 1분 캔들만 가져옴
}
response = upbit.request_public('candles/minutes/1', query_params)
if 'error' not in response:
new_data = response[0]
new_row = {
'Open': new_data['opening_price'],
'High': new_data['high_price'],
'Low': new_data['low_price'],
'Close': new_data['trade_price']
}
new_index = pd.to_datetime(new_data['candle_date_time_kst'])
df.loc[new_index] = new_row
df.sort_index(ascending=True, inplace=True)
ax.clear()
mpf.plot(df, ax=ax, type='candle', style='charles')
# 초기 데이터 로드
initial_data = upbit.request_public('candles/minutes/1', {'market': 'KRW-BTC', 'count': 300})
df = pd.DataFrame(initial_data)
df['candle_date_time_kst'] = pd.to_datetime(df['candle_date_time_kst'])
df.set_index('candle_date_time_kst', inplace=True)
df.rename(columns={'opening_price': 'Open', 'high_price': 'High', 'low_price': 'Low', 'trade_price': 'Close'}, inplace=True)
df = df[['Open', 'High', 'Low', 'Close']]
df.sort_index(ascending=True, inplace=True)
# 차트 생성
fig, ax = plt.subplots()
ani = animation.FuncAnimation(fig, update_chart, interval=60000) # 1분마다 업데이트
plt.show()