Использование 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 здесь.