Когда ребята из поддержки EXMON присылают фидбэк от пользователей, часто видишь одну и ту же картину: люди искренне удивляются, почему их ордера на споте или P2P не срабатывают так, как рисовалось по паттернам в TradingView. Для базовой торговли графиков цен хватает, но это вершина айсберга. Крупный капитал оставляет следы совсем в других местах — в смарт-контрактах, пулах ликвидности и пулах деривативов.
Чтобы понимать, куда на самом деле перетекает ликвидность, приходится собирать информацию по кускам. Обычно для этого открыт стандартный набор из пяти платформ, у каждой из которых хватает своих скрытых проблем и багов.
Dune Analytics
Для кастомных задач Dune незаменима, но это инструмент с характером. По сути, перед вами просто SQL-интерфейс к гигантской базе сырых ончейн-данных. Если нужно вытащить чистый приток капитала в пулы Uniswap v3 или посмотреть реальные балансы кошельков инсайдеров после крупного минта — дорога только туда.
Правда, без знания синтаксиса PostgreSQL там делать нечего. Можно, конечно, юзать готовые дашборды от комьюнити, но тут кроется ловушка. Пару месяцев назад мы наткнулись на популярный дашборд по объемам Layer 2 сетей, который показывал почти двукратное завышение метрик. Оказалось, создатель криво прописал inner join и дублировал транзакции при повторных вызовах контракта. Так что слепо верить чужим дашбордам - так себе идея, код запросов приходится перепроверять руками.
Token Terminal
Если хочется посмотреть на Web3-проекты как на классический бизнес, обычно смотрят Token Terminal. Платформа подтягивает финансовые метрики: P/E ratio, выручку, чистую прибыль протоколов.
Иногда разбор этих таблиц сильно отрезвляет. Проект может висеть в топ-30 по капитализации, а открываешь вкладку комиссий и там копейки реального дохода. Весь рост держался на том, что команда тупо печатала нативные токены и раздавала их в качестве наград за стекинг. Как только эмиссия снижается, экономика складывается. Правда, для анализа мемкоинов или свежих токенов без бизнес-модели сервис полностью бесполезен, там просто нет данных для расчета.
Пару слов про макро-индикаторы Glassnode
При анализе долгосрочных циклов Биткоина многие аналитики смотрят на Glassnode. Метрики вроде NUPL (чистая нереализованная прибыль/убыток) или балансы монет на кошельках бирж неплохо показывают общий контекст рынка - назревает ли паника или, наоборот, все сидят в экстремальной жадности.
Но воспринимать их как готовые торговые сигналы точно не стоит. Индикаторы Glassnode неповоротливы. Рынок может быть дико перегрет по ончейн-метрикам, а цена продолжит переть вверх еще пару недель на чистом ликвидационном хайпе. К тому же ценовая политика у них кусается: платить сотни долларов в месяц за доступ к метрикам T3-уровня имеет смысл только институционалам.
DefiLlama
Главный агрегатор по DeFi-сектору. Платформа подкупает тем, что пытается очищать показатели TVL (Total Value Locked) от двойного учета капитала, когда один и тот же залог реинвестируется через несколько протоколов плечевого кредитования.
Но сбои бывают и тут. После крупных обновлений сетей детализация по отдельным пулам ликвидности может отставать на несколько часов, а то и суток. Был случай, когда протокол обновил логику смарт-контракта, и DefiLlama пару дней вообще показывала нулевой TVL для пула, хотя торги там шли полным ходом. Тем не менее по охвату секторов вроде RWA или ликвидного стекинга альтернатив им пока мало.
Coinglass
Специфический ресурс для мониторинга фьючерсного рынка. Сюда идут за открытым интересом (Open Interest), ставками финансирования и картами ликвидаций.
Из практики: Иногда крупные скопления стоп-ордеров на тепловой карте действительно срабатывают как магнит для цены. Это не значит, что рынок 100% пойдет туда, но такие зоны плотности всегда привлекают внимание крупных участников, ищущих ликвидность для закрытия своих позиций. При этом слепо доверять историческим данным Coinglass нельзя — они периодически перерисовывают графики ликвидаций прошлых периодов, если биржи отдают логи с задержкой.
Сводная шпаргалка по метрикам
Чтобы не запутаться, где что искать, проще ориентироваться по базовым задачам:
- Dune: поиск следов крупных игроков, проверка распределения токенов смарт-контракта;
- Token Terminal: аудит реальной доходности, соотношение капитализации к комиссиям;
- Glassnode: оценка глобальных зон капитуляции и перегрева BTC/ETH;
- DefiLlama: мониторинг TVL, отслеживание объемов минта стейблкоинов;
- Coinglass: анализ Funding Rate, поиск зон потенциальных сквизов на фьючерсах.
Автоматизация сбора аномалий через API
Сидеть сутками на сайтах бессмысленно. Проще набросать простейший скрипт, который будет парсить деривативные метрики Coinglass и подсвечивать аномальные изменения открытого интереса (Open Interest), когда на рынке начинается жесткий замес.
import logging
import os
from typing import Any, Dict, List, Optional
import requests
# Настройки логирования для продакшена
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"
)
logger = logging.getLogger("CoinglassAnalyzer")
# Пороговые значения для бизнес-логики (удобно выносить в конфиг)
OI_CHANGE_THRESHOLD_PCT = 12.0
LIQUIDATION_THRESHOLD_USD = 40_000_000.0
class CoinglassClient:
"""Клиент для работы с API Coinglass v2 и базового анализа рынка."""
BASE_URL = "https://open-api.coinglass.com/public/v2"
def __init__(self, api_key: Optional[str] = None):
# Приоритет переданному ключу, если нет - берем из среды
self.api_key = api_key or os.getenv("COINGLASS_API_KEY")
if not self.api_key:
raise ValueError("API ключ Coinglass не найден. Передайте его в конструктор или задайте переменную окружения COINGLASS_API_KEY")
self.session = requests.Session()
self.session.headers.update({
"accept": "application/json",
"coinglassSecret": self.api_key
})
def fetch_liquidation_data(self, symbol: str) -> Optional[List[Dict[str, Any]]]:
"""
Получает данные по ликвидациям для конкретного символа.
Эндпоинт v2 для ликвидаций обычно возвращает список по биржам или агрегированный массив.
"""
url = f"{self.BASE_URL}/derivatives/orderbook_liquidation"
params = {"symbol": symbol.upper()}
try:
response = self.session.get(url, params=params, timeout=10)
response.raise_for_status()
payload = response.json()
# Проверка кастомного флага успешности Coinglass API
if str(payload.get("code")) != "0" and not payload.get("success"):
logger.error(f"API вернуло ошибку для {symbol}: {payload.get('msg', 'Unknown error')}")
return None
# В v2 данные обычно лежат в 'data', и это может быть как список, так и словарь
return payload.get("data")
except requests.RequestException as e:
logger.error(f"Сетевая ошибка при запросе данных {symbol}: {e}")
return None
def analyze_market(self, symbol: str) -> Optional[Dict[str, Any]]:
"""Анализирует маркет-дата на основе полученных ликвидаций и OI."""
raw_data = self.fetch_liquidation_data(symbol)
if not raw_data:
return None
# API Coinglass может возвращать список объектов по биржам.
# Профессиональный код должен уметь работать и с единичным объектом, и с массивом.
main_data = raw_data[0] if isinstance(raw_data, list) and raw_data else raw_data
if not isinstance(main_data, dict):
logger.error(f"Некорректный формат данных от API для {symbol}")
return None
try:
# Безопасное извлечение с приведением типов
oi = float(main_data.get("openInterest") or 0)
oi_change = float(main_data.get("openInterestChgVolPercentage") or 0)
liq = float(main_data.get("totalLiquidationVolume") or 0)
except (ValueError, TypeError) as e:
logger.error(f"Ошибка парсинга числовых значений для {symbol}: {e}")
return None
alerts = []
if abs(oi_change) >= OI_CHANGE_THRESHOLD_PCT:
alerts.append(f"Signifcant OI Shift: {oi_change:.2f}%")
if liq >= LIQUIDATION_THRESHOLD_USD:
alerts.append(f"High Liquidation Volume: ${liq:,.0f}")
# Информационный лог процесса
logger.info(
f"{symbol.upper()} | OI: ${oi:,.0f} | Δ OI: {oi_change:.2f}% | "
f"24h Liq: ${liq:,.0f} | Alerts Triggered: {len(alerts)}"
)
# Вывод ворнингов, если сработали триггеры
for alert in alerts:
logger.warning(f"ALERT [{symbol.upper()}]: {alert}")
return {
"symbol": symbol.upper(),
"open_interest": oi,
"oi_change_pct": oi_change,
"liquidations_24h": liq,
"alerts": alerts
}
if __name__ == "__main__":
# Пример инициализации и запуска скрипта "вживую"
# Для теста подставьте ваш ключ прямо сюда или экспортируйте в терминале: export COINGLASS_API_KEY="ваш_ключ"
try:
analyzer = CoinglassClient()
analysis_result = analyzer.analyze_market("BTC")
if analysis_result:
print("\n--- Результаты анализа ---")
print(analysis_result)
except ValueError as err:
logger.critical(err)Ну и конечно, ни один из этих инструментов сам по себе не дает готового торгового преимущества и не гарантирует 100% профита. Но в связке, они помогают лучше понимать логику происходящего на рынке и принимать решения, опираясь на движение реальных денег, а не на субъективные ожидания.