Использование API CoinMarketCap #HowToBUIDL (6 / n)
Есть множество способов получить информацию о криптовалюте и токенах. Если вам интересно что-то изучить, вот несколько идей, которые помогут вам начать работу и #BUIDLing собственного сайта с данными о ценах, объеме или рейтинге. Обратите внимание, что это не полный набор доступных источников, но я буду время от времени обновлять этот блог, используя различные методы получения рыночных данных.
CoinMarketCap - это сайт с набором основных фактов и цифр о криптовалютном рынке. Вы увидите общее количество криптовалют, рынков, MarketCap, объема за 24 часа и доминирования BTC. Затем появляется список всех доступных криптовалют и токенов, перечисленных в порядке их - как вы уже догадались - рыночной капитализации монет, которая представляет собой произвольное число в обращении, умноженное на текущую цену. Он используется как мера для сравнения монет. Мы можем получить ту же информацию, которую видим на сайте, в нашем коде.
Давайте сначала установим оболочку Javascript RESTful API с открытым исходным кодом для CMC.
Я использую разветвленную версию tiaanduplessis / coinmarketcap-api.
Полную документацию по API можно прочитать здесь.
npm install coinmarketcap-api`
Теперь, когда он доступен в нашем проекте, получите ссылку на библиотеку и создайте экземпляр объекта API.
CMC = require("coinmarketcap-api") cmc = new CMC();
Получите ту же информацию, используя асинхронную функцию cmc.getGlobal()
.
Ответ возвращается со свойством data
, заполненным active_cryptocurrencies
, active_markets
, bitcoin_percentage_of_market_cap
и quotes.USD
с total_market_cap
и total_volume_24h
. При желании вы можете создать сайт, используя те же данные, но с другим стилем.
Затем давайте рассмотрим получение информации обо всех доступных валютах. Может быть, вам интересно узнать идентификатор конкретной монеты, например Monero.
Асинхронная функция cmc.getListings()
вернет полный набор монет:
{ data: [ { id: 1, name: 'Bitcoin', symbol: 'BTC', website_slug: 'bitcoin'}, { id: 2, name: 'Litecoin', symbol: 'LTC',website_slug: 'litecoin'}, { id: 3, name: 'Namecoin', symbol: 'NMC',website_slug: 'namecoin' }, // ... more items ], metadata: { timestamp: 1531157458, num_cryptocurrencies: 1619, error: null } }
Обратите внимание, что у каждой монеты есть id
name
symbol
и website_slug
. listings.data.length
равно 1619
, что соответствует active_cryptocurrencies
.
Теперь давайте найдем первое объявление с названием «Monero».
xmr = listings.data.filter(l => l.name === 'Monero' )[0]; { id: 328, name: 'Monero', symbol: 'XMR', website_slug: 'monero' }
Мы воспользуемся этим, чтобы найти некоторые сведения об этой валюте, поскольку это требуется для другой части API. Свяжите его с нашим свойством переменной: xmr.id
.
Давайте сделаем то же самое для другой криптовалюты с символомWAX
'.
wax = listings.data.filter(l => l.symbol === 'WAX' )[0]; { id: 2300, name: 'WAX', symbol: 'WAX', website_slug: 'wax' }
Большой. Теперь мы можем запросить у API информацию о тикерах xmr
и wax
.
Существует асинхронная функция getTicker
, которая принимает необязательный параметр:
cmc.getTicker({id:wax.id})
{ data: { id: 2300, name: 'WAX', symbol: 'WAX', website_slug: 'wax', rank: 96, circulating_supply: 828063006, total_supply: 1850000000, max_supply: null, quotes: { USD: { price: 0.123043, volume_24h: 941801, market_cap: 101887356, percent_change_1h: 0.21, percent_change_24h: -4.22, percent_change_7d: -6.92 } }, last_updated: 1531158940 }, metadata: { timestamp: 1531158616, error: null } } wax_ticker = _;
Опять же, вы заметите, что data.quotes.USD.price
соответствует тому же значению, которое вы видите на веб-сайте (на эту дату и время: 0,123043 доллара США).
Проделаем то же самое с xmr
:
cmc.getTicker({id:xmr.id})
{ data: { id: 328, name: 'Monero', symbol: 'XMR', website_slug: 'monero', rank: 13, circulating_supply: 16209366, total_supply: 16209366, max_supply: null, quotes: { USD: { price: 138.291, volume_24h: 32556600, market_cap: 2241609385, percent_change_1h: 0.56, percent_change_24h: -0.59, percent_change_7d: -0.16 } }, last_updated: 1531159466 }, metadata: { timestamp: 1531159117, error: null } } xmr_ticker = _;
Еще раз мы видим, что информация о цене, возвращаемая API, соответствует сайту.
Теперь, когда у нас есть две разные котировки тикеров, хранящиеся в wax_ticker
и xmr_ticker
, мы можем быстро вычислить, чтобы приблизительно оценить коэффициент конверсии между WAX и XMR.
xmr_price = xmr_ticker.data.quotes.USD.price; // 138.291 wax_price = wax_ticker.data.quotes.USD.price; // 0.123043 xmrwax = xmr_price / wax_price; // 1123.9241565956618
Из этой информации мы можем вывести, что потребуется около 1124 wax
токенов, чтобы равняться той же сумме долларовой стоимости в одном xmr
токене. Или вы можете думать об этом так: 1 токен Monero может купить вам ~ 1124 восковых жетона.
Большинство бирж используют общие пары оснований, такие как BTC / USD или ETH / BTC, или XMR / BTC, но редко встречаются в списке необычные пары оснований. Поскольку теперь вы знаете, как получить информацию о ценах для данного тикера, вы можете получить хорошую оценку, используя coinmarketcap-api
для себя, и, возможно, создать собственный тикер на своем сайте.
Имейте в виду, что информация о ценах на CoinMarketCap может быть отложена и не учитывает точно спред между ценой покупки и продажи данной валюты. Таким образом, эти данные должны использоваться только в информационных целях, а не для принятия торговых решений или принятия решений по управлению рисками. По крайней мере, я надеюсь, что это пробудит у вас любопытство к другим вещам, которые вы могли бы #BUIDL, и, возможно, даже к более удобному для пользователя способу сравнения совершенно несвязанных валют самостоятельно.
В приведенных выше примерах мы выполняли функции в truffle console
, но если вам нужно дождаться результатов функции, вы захотите использовать удобные async/await
библиотеки. Я привел здесь небольшой небольшой пример, которому вы можете подражать. get_cmc_price_in_usd
- это async
функция, которая принимает id
и возвращает Promise
, которое разрешается, когда становятся доступны getTicker
результаты. Подобные функции можно написать для любых других данных API.
const async = require('asyncawait/async'); const await = require('asyncawait/await'); async function get_cmc_price_in_usd(cmc_id) { return new Promise(function(res, rej) { cmc.getTicker({id:cmc_id}).then( function(t) { res(t.data.quotes.USD.price); } ); }); }; let xmr_price = await get_cmc_price_in_usd(xmr.id);
В следующем посте мы рассмотрим, как получить более точную и актуальную информацию о ценах на такой бирже, как Kucoin. CoinMarketCap подходит для одноразового исследования и дает вам более длительный ориентир для цен, но торговые решения должны приниматься на основе данных о ценах в реальном времени.
Дэн Эммонс - разработчик блокчейнов, владелец Emmonspired LLC, сертифицированный биткойн-профессионал, сертифицированный разработчик Ethereum, разработчик полного стека и советник по криптовалютным проектам. Он также является создателем канала Youtube и подкаста iTunes под названием #ByteSizeBlockchain.