По курьей причине API Coinmarketcap отдавал курсы некоторых криптовалют с дефектом ~98%. Если у вас свой обменник, я уверен, что вы бы не хотели отдать 1000 INJ за 370 USD при реальной стоимости 20k USD.
Аналогичные проблемы мы наблюдаем и у других провайдеров курсов с частотой 1–2 раза в год.
Резюме
Мы сделали сервис, который собирает данные курсов валют от нескольких источников и анализирует их корректность, и хостится на собственном сервере.
Написали на TypeScript, для установки на ваш сервер/VPS можно использовать Docker или собрать из репозитория. Требования к VPS минимальны, а для подключения источников данных достаточно их бесплатных аккаунтов. Уведомляет о сомнительных курсах в Slack, Discord или ADAMANT Messenger.
Как проверяем курсы
Currencyinfo получает данные из источников, которые вы указали в конфиге и анализирует валидность курса каждой валюты:
Считает ненадежными курс валюты, если получили данные менее, чем от minSources источников
Группирует курсы валюты по rateDifferencePercentThreshold
Выбирает самую надежную группу по groupPercentage или весам надежности weight
Считает финальный курс как средний/мин/макс, выбирает по приоритету источников priorities, или по весу надежности weight.
Вот пример для вычисления курса ADM/USD, когда получили разные курсы от трех источников — Coinmarketcap, Coingecko и Cryptocompare:
MOEX — Московская биржа. Увы, USD и EUR они не торгуют, но данные по RUB и CNY актуальны.
Currency API — Обновляет данные раз в день, поэтому имеет смысл только для фиата
ExchangeRate.Host — Предоставляет актуальные курсы фиата, драгоценных металлов и биткоина
CoinMarketCap — Курсы криптовалют с ежеминутными обновлениями
CryptoCompare — Курсы фиата криптовалют с частыми обновлениями
CoinGecko — Курсы криптовалют с ежеминутными обновлениями
С какими источниками данных работать вы укажете в конфиге. Некоторые из них требуют API-ключи, но для Currencyinfo с обновлением refreshInterval в 10 минут достаточно бесплатных аккаунтов. Если хотите получать курсы чаще — смотрите тарифы соответствующих источников данных.