업비트API 파이썬 코드 비트코인 시세 조회 파이썬 코드 (1)

업비트API 파이썬 코드

업비트 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()
업비트 API 파이썬 코드

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()

다른 포스팅 확인

댓글 남기기

%d 블로거가 이것을 좋아합니다: