Меню Закрыть

Изучаем динамику основных валют на Binance API и формируем портфель взрывного роста

На финансовых рынках стало крайне нестабильно. Сейчас специалисты по финансам и инвестициям серьезно затрудняются в ответе на вопрос “Куда лучше инвестировать?”. И правда, акции российских компаний (даже “голубые фишки”) больше не внушают доверия. Ответы с точки зрения инвесторов мы вам не дадим, конечно, мы все-таки аналитики. Однако, если вы хотите стать счастливым и успешным обладателем криптовалют, то сегодняшняя статья о том, как проанализировать криптовалюты на Binance, будет очень кстати.
Сегодня мы разберемся в том, как:

  1. найти Tоп-5 криптовалют по объему их капитализации и построить графики динамики стоимости
  2. сравним изменение цены валюты и капитализации криптовалюты за год

Скрипт для обработки данных с Binance

Если вы все же решите парсить биржу без дополнительных инструментов, то помните, что у Binance в архивных данных лежат не все периоды и валюты.

Весь скрипт выполнен с помощью CoinGecko API. Мы проверили несколько вариантов выполнения задачи и именно этот клиент отдает больше всего информации (например, по капитализации криптовалют).

Подготовка

# импорт библиотек
import requests
from bs4 import BeautifulSoup as bs
import time
import pandas as pd
import urllib.request
import matplotlib.pyplot as plt

Получаем Топ-5 криптовалют по капитализации

# получаем капитализацию валют через coingecko
r = requests.get("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=5&page=1", headers = {'User-Agent':'Mozilla/5.0'}) if r.status_code == 200: d = { 'crypto name': [i['id'] for i in r.json()], 'symbol': [i['symbol'].upper() for i in r.json()], 'capitalization': [i['market_cap'] for i in r.json()] } df_coingecko = pd.DataFrame(d) df_coingecko.head()

Динамика изменения стоимости валюты

# получаем динамику стоимости валюты bitcoin в usd за 7 дней
r = requests.get("https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=7", headers = {'User-Agent':'Mozilla/5.0'}) if r.status_code == 200: d = { 'datetime': [i[0] for i in r.json()['prices']], 'price': [i[1] for i in r.json()['prices']] } df_change = pd.DataFrame(d)

Визуализируем результаты

df_change['datetime'] = pd.to_datetime(df_change['datetime'],unit='ms')
df_change.set_index('datetime', inplace=True)
df_change['price'].plot(title="Bitcoin price changes", ylabel="Price, $")

Анализ роста криптовалют за месяц

# получаем данные по 100 монетам с самой большой капитализацией
r = requests.get("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&price_change_percentage=30d", headers = {'User-Agent':'Mozilla/5.0'}) if r.status_code == 200: d = { 'crypto name': [i['id'] for i in r.json()], 'symbol': [i['symbol'].upper() for i in r.json()], 'price_change_percentage_30d_in_currency': [i['price_change_percentage_30d_in_currency'] for i in r.json()] } df_change = pd.DataFrame(d) # сортируем
df_change.sort_values('price_change_percentage_30d_in_currency', ascending=False, inplace=True) # находим 5 валют с максимальным ростом за месяц
df_change.head() # находим 5 валют с максимальным падением за месяц
df_change.tail()
Анализ роста валют за год (включая изменение капитализации)
# получаем данные по 100 монетам с самой большой капитализацией за год
r = requests.get("https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&price_change_percentage=1y", headers = {'User-Agent':'Mozilla/5.0'}) if r.status_code == 200: d = { 'crypto name': [i['id'] for i in r.json()], 'symbol': [i['symbol'].upper() for i in r.json()], 'price_change_percentage_1y_in_currency': [i['price_change_percentage_1y_in_currency'] for i in r.json()] } df_year_change = pd.DataFrame(d) df_year_change.sort_values('price_change_percentage_1y_in_currency', ascending=False, inplace=True)

Наибольший рост цены за год у валюты Shiba-inu — более 24000 %

plt.rcParams["figure.figsize"] = (20, 5) # получаем данные по изменению за год
def get_year_charts(name): r = requests.get(f"https://api.coingecko.com/api/v3/coins/{name}/market_chart?vs_currency=usd&days=365", headers = {'User-Agent':'Mozilla/5.0'}) if r.status_code == 200: d = { 'datetime': [i[0] for i in r.json()['market_caps']], 'market_cap': [i[1] for i in r.json()['market_caps']], 'price': [i[1] for i in r.json()['prices']] #'volume': [i[1] for i in r.json()['total_volumes']] } df_ydynamic = pd.DataFrame(d) df_ydynamic['datetime'] = pd.to_datetime(df_ydynamic['datetime'],unit='ms') df_ydynamic.set_index('datetime', inplace=True) # Рисуем оси - рыночная капитализация (синий цвет по умолчанию) и цена (красный) plt.figure() ax = df_ydynamic['market_cap'].plot() ax.set_ylabel('market_cap') ax1 = df_ydynamic['price'].plot(secondary_y=True, style='r') ax1.set_ylabel('price') ax.set_title(f"{name.capitalize()} market cap and price changes") h1, l1 = ax.get_legend_handles_labels() h2, l2 = ax1.get_legend_handles_labels() ax.legend(h1+h2, l1+l2)

Обратите внимание на данные по самой быстро выросшей валюте — shiba-inu (SHIB) Есть интересный момент, когда в мае 2021 года цена дала резкий скачок и затем падение, а капитализация практически стояла на одном уровне. И только с середины мая, когда цена уменьшилась после взлета, капитализация стала расти. Возможно, это было связано с историей с Бутериным.

get_year_charts('shiba-inu')

Читать дальше