一站式解锁DeFi全视角数据,开发者也能复刻交易技巧
如果你正在为 去中心化交易所 找实时链上数据接口,亦或想把 交易对波动、大户动向、最新成交额 通通抓回来做自己的看板,那么本篇文章就是为你写的。我们将围绕 DEX API 的两大核心接口(DEXTrades 与 DEXTradeByTokens),分场景拆解 5 大典型查询,并穿插实用 FAQ 与可一键复用的代码片段,帮你快速落地。
一、DEX API 的两大接口速览
接口 | 作用 | 适合场景 |
---|---|---|
DEXTrades | 按交易维度聚合 | 研究单条交易、回溯成交明细 |
DEXTradeByTokens | 按代币维度聚合 | 拉出某地址或代币对的整体买卖盘 |
两段式数据模式让你既能“看见森林”,亦能“数清树木”,对于做 流动性监控、套利机器人、实时价格看板 都十分友好。
二、快速 get:以太坊上全部 DEX 概览
想一眼看清链上有多少去中心化交易所在跑,只需要下面这段 GraphQL。它会返回“协议家族名、独立买方、独立卖方、买单数量”四大关键指标,帮你筛出 真正活跃的交易场景。
query DexMarkets($network: evm_network) {
EVM(network: $network) {
DEXTradeByTokens {
Trade {
Dex { ProtocolFamily }
}
buyers: uniq(of: Trade_Buyer)
sellers: uniq(of: Trade_Sender)
count(if: {Trade: {Side: {Type: {is: buy}}}})
}
}
}
# 变量示例
{"network": "eth"}
👉 想直观对比 Uniswap、Curve、SushiSwap 谁的买方更多?点这里立即体验
三、锁定单一 DEX:Uniswap 深度统计
当你只看 Uniswap 这一条赛道,需求瞬间升级:每小时成交量、活跃买卖地址数量、代币覆盖数……以下查询把时间粒度和币种维度都拆出来,自动按时间升序返回,完美匹配你的 收益率统计脚本。
query DexMarkets($network: evm_network, $market: String) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {ascendingByField: "Block_Time"}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}}
) {
Block { Time(interval: {count: 1, in: hours}) }
trades: count
buyers: uniq(of: Trade_Buyer)
sellers: uniq(of: Trade_Sender)
tokens: uniq(of: Trade_Currency_SmartContract)
}
}
}
# 变量示例
{"market": "Uniswap", "network": "eth"}
四、速览某 DEX 的 200 个最热门交易对
多数交易员上来就问:“3 小时内,Uniswap 上哪些币对波动最大?”下面的拉取帮你列出 近 3 小时 USD 成交额 Top 200,并给出 10 分钟、1 小时、3 小时 三维价差参考,方便快速判断 短线套利空间。
query DexMarkets($network: evm_network, $market: String,
$time_10min_ago: DateTime, $time_1h_ago: DateTime, $time_3h_ago: DateTime) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {descendingByField: "usd"}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}},
Block: {Time: {after: $time_3h_ago}}}
limit: {count: 200}
) {
Trade {
Currency { Symbol Name SmartContract Fungible }
Side {
Currency { Symbol Name SmartContract }
}
price_usd: PriceInUSD(maximum: Block_Number)
price_last: Price(maximum: Block_Number)
price_10min_ago: Price(maximum: Block_Number,
if: {Block: {Time: {before: $time_10min_ago}}})
price_1h_ago: Price(maximum: Block_Number,
if: {Block: {Time: {before: $time_1h_ago}}})
price_3h_ago: PriceInUSD(minimum: Block_Number)
}
usd: sum(of: Trade_AmountInUSD)
count
}
}
}
# 变量示例(时间戳可按需替换)
{"market": "Uniswap", "network": "eth",
"time_10min_ago": "2024-09-22T13:21:39Z",
"time_1h_ago": "2024-09-22T12:31:39Z",
"time_3h_ago": "2024-09-22T10:31:39Z"}
}
五、追踪“鲸鱼”动向:Top Trader 排行榜
抓出近 7 天或 24 小时内成交总额最大的 100 个地址,就相当于帮你锁定 潜在鲸鱼。按下面的示例直接跑,你会拿到每个 Trader 的地址、成交总额、名义币对,可直接喂给 风控系统 或 跟单策略。
query DexMarkets($network: evm_network, $market: String) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {descendingByField: "volumeUsd"}
limit: {count: 100}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}}
) {
Trade {
Buyer
Dex {
OwnerAddress
ProtocolFamily
ProtocolName
}
Currency { SmartContract Symbol Name }
Side {
Currency { SmartContract Symbol Name }
}
}
volumeUsd: sum(of: Trade_Side_AmountInUSD)
}
}
}
# 变量示例
{"market": "Uniswap", "network": "eth"}
六、最新成交价连续拉取
机器人需要“滴答”级价格?沿用以下查询,可秒级拉取 最新 50 笔交易,字段覆盖买卖方向、交易哈希、美元价、原生价格、区块时间,非常适合做 滑点监控 或 实时 TV 屏。
query LatestTrades($network: evm_network, $market: String) {
EVM(network: $network) {
DEXTradeByTokens(
orderBy: {descending: Block_Time}
limit: {count: 50}
where: {Trade: {Dex: {ProtocolFamily: {is: $market}}}}
) {
Block { Time }
Transaction { Hash }
Trade {
Dex {
OwnerAddress
ProtocolFamily
ProtocolName
}
AmountInUSD
Price
Amount
Side {
Type
Currency { Symbol SmartContract Name }
AmountInUSD
Amount
}
Currency { Symbol SmartContract Name }
}
}
}
}
# 变量示例
{"market": "Uniswap", "network": "eth"}
七、常见问题(FAQ)
Q1:DEXTrades 与 DEXTradeByTokens 到底怎么选?
A:若你关心“每条交易明细”,用 DEXTrades;若要统计“代币维度”聚合,比如总成交额、买家数,用 DEXTradeByTokens 会更高效。
Q2:接口频率限制是多少?
A:公开端点默认 30 req/min,企业密钥可提升到 500 req/min,并支持 WebSocket 流式推送来获取 实时价格 与 流动性变化。
Q3:想要 Polygon 或 BSC 的数据该怎么改?
A:统一把变量里的 "network": "eth"
改为 "matic"
或 "bsc"
即可,字段结构与字段名不变,零成本迁移。
Q4:如何同时拿到买盘与卖盘数量?
A:在查询里用 count(if: {Trade: {Side: {Type: {is: buy}}}})
与 count(if: {Trade: {Side: {Type: {is: sell}}}})
各写一条即可。
Q5:返回值只有合约地址看不懂怎么办?
A:你可先用 [Token Symbol Lookup API] 反向解析,或在同一请求里加 Currency { Symbol Name }
,提前映射为人类可读名称。
Q6:GraphQL IDE 为什么报错 “Type mismatch”?
A:通常是时间戳格式不对,务必使用 ISO 8601,例如:2024-09-22T10:31:39Z
,且保持 UTC 时区。
八、立即行动:把数据搬进你的策略
读完这篇,你已经拥有了监控 去中心化交易所 所需的全部利器。从宏观的 全链 DEX 市场总览,到微观的 最新 50 笔成交 乃至 鲸鱼追踪,DEX API 都能“一键到账”。把今天展示的 5 段代码存进脚本仓库,配合定时器或消息队列,每天睁开眼就能获得最新的链上数据雷达。
祝你用数据提前洞察,每一次波动都不错过。