Использование API Covalent для создания актуальной информационной панели

Когда я пишу это в начале февраля 2022 года, рынок криптовалют (а также фондовый рынок) переживает довольно резкий спад. Но до этого, когда я начал этот проект, криптовалюта пережила впечатляющий бычий рост, когда 10 ноября 2021 года биткойн достиг рекордного максимума в 69 000 долларов. Серьезные проекты с инновационными технологиями, а также монеты с единственной целью мем-потенциала или «шиткойны», как любовно называют их в криптосфере, такие как мой любимый — DogeBonk), процветали.

Хотя я также инвестирую в серьезные проекты, мне очень нравится торговать альткойнами, а именно теми, которые используются в Binance Smart Chain (BSC). Совершенно очевидно, что это просто форма азартных игр, но следить за созданными сообществом мемами о шиткойнах приятно.

Однако один недостаток, с которым я столкнулся, — это возможность отслеживать ваши монеты и текущую прибыль. Те, кто знаком с токенами BSC, знают о BSCscan и poocoin.app, но эти сайты имеют ограничения относительной простоты отслеживания ваших транзакций.

Я решил создать сводную таблицу, которая будет автоматически отправляться мне по электронной почте ежедневно и предоставлять статистику, которую я хочу видеть для своих токенов BSC, и я планирую шаг за шагом проследить, как я этого добился.

Начиная

Сначала вам нужно перейти на https://www.covalenthq.com/ и получить ключ API. Covalent щедро предлагает бесплатный API с множеством конечных точек и поддерживаемых сетей блокчейнов, и я использовал API Covalent для большинства функций в этом проекте.

Первое, что нам нужно сделать, это получить обновленный снимок нашего кошелька, используя функцию ниже.

«Адрес» относится к 42-значному адресу вашего кошелька. Скрытый список — это просто список тикеров криптовалюты («ETH» и т. д.), которые вы не хотите отображать в результатах своего кошелька.

Часто мошеннические токены пытаются добавить ваш кошелек как часть мошенничества — скройте их, чтобы вы не беспокоились о них. Также обратите внимание, что при использовании сети, отличной от BSC, вам потребуется другой номер, а не «56» в URL-адресе API. Обратитесь к документации Covalent для других идентификаторов сети.

Получение данных о ценах

Со списком данных словарей кошелька, которые были возвращены функцией get_wallet(), мы теперь хотим получить самые последние и точные цены. Хотя Covalent API предоставляет цену в качестве конечной точки API, я обнаружил, что данные о цене отстают. Вместо этого я использовал API PancakeSwap.

Затем мы можем изменить наш список кошельков с этими обновленными ценами. Я также создал другой список, чтобы использовать его позже в качестве фильтра для удаления любых ответов, которые давали «0» в качестве цены (токены, которые были удалены или имели проблемы с API, собирающим данные).

# Update wallet prices
for i in wallet:
    for j in current_prices:
        if j['Name'] == i['Name']:
            i['Price'] = j['Price']
# Generate filter to remove '0' prices
zerodrop = []
for i in current_prices:
    if float(i['Price']) == 0:
        if i['Name'] != 'BNB':
            zerodrop.append(i['Name'])

Следующее, что нам нужно, — это совокупная сумма всех наших транзакций для наших шиткойнов. Эта следующая функция считывает данные нашего кошелька из предыдущей функции и вычисляет эквивалентную стоимость BNB переданных токенов, умноженную на стоимость BNB в долларах США во время транзакции, чтобы получить долларовую стоимость суммы всех транзакций для каждого из наших токенов. . Это дает нам чистую стоимость в долларах США для каждого из токенов в нашем кошельке.

Большой! Теперь мы можем добавить этот вывод в данные нашего кошелька.

# Update wallet list of dicts with net cost value
for i in wallet:
    for j in netcost:
        if j['Name'] == i['Name']:
            i['Net Cost'] = j['Net Cost']

В блокноте Jupyter, где я запустил этот код, я преобразовал этот ответ кошелька в фрейм данных, очистил форматирование, обновил столбец значения в долларах США и создал столбец «Процент прироста».

Я также хотел включить несколько скользящих средних — недельных и шестинедельных. Ниже я включил код для недельной скользящей средней:

Создание визуализаций

Последнее, что нам нужно сделать, это сгенерировать информационную панель с этой информацией и отправить ее на мою электронную почту.

Две цифры, с которых я начал добавлять на панель инструментов для отправки по электронной почте, — это распределение средств или то, как мой крипто-кошелек BSC разделен между разными монетами, и цифра, показывающая мой процент прибыли/убытка для каждой из монет в мой бумажник.

Есть много других визуализаций, которые можно создать с помощью данных, которые я собрал из Covalent.

Например, если вы ежедневно сохраняли данные, возвращаемые Covalent, в таблицу SQL, вы могли бы отслеживать стоимость своего портфеля с течением времени.

На данный момент мы будем придерживаться таблицы данных и двух визуализаций, которые мы создали в последнем встроенном блоке кода.

Отправка электронной почты

Для настройки отправки данных портфолио на мою электронную почту я позаимствовал и изменил отличный код, который нашел в статье на Medium Доминика Полцера, найденной здесь.

Я создал новую учетную запись Gmail, которая будет использоваться исключительно для отправки автоматических электронных писем с помощью Python (я использовал эту же учетную запись для отправки уведомлений об акциях в другой статье, которую я написал здесь). Я бы не рекомендовал использовать вашу основную учетную запись электронной почты для этой задачи.

После настройки учетных данных почты мы настраиваем сообщение для отправки. В этом случае я преобразовал объект фрейма данных и объекты информационной панели в HTML, чтобы убедиться, что они правильно отображаются в электронном письме.

Вот скриншот письма, отправленного на мой почтовый ящик:

Чтобы автоматизировать ежедневную отправку электронных писем, я преобразовал файл .ipynb в файл .bat и настроил планировщик заданий на запуск задачи один раз в день. Ознакомьтесь с моей статьей об автоматических уведомлениях о наличии на складе здесь, чтобы узнать больше о том, как настроить планировщик заданий для запуска скрипта.

Спасибо за чтение, и я надеюсь, вам понравилась эта статья. Не стесняйтесь, дайте мне знать, если у вас есть какие-либо вопросы. Полный код можно найти на моем Github здесь.