分页、筛选与排序
掌握分页、筛选与排序技术实现高效数据检索。学习如何通过查询参数优化请求并减少API调用次数。
分页
Smart Money API采用基于游标的分页机制实现高效数据检索。通过指定页码和条目数控制返回结果集。
| 参数 | 类型 | 默认值 | 最大值 |
|---|---|---|---|
| page | integer | 1 | N/A |
| limit | integer | 50 | 500 |
分页示例
cURL
# 获取前100条结果
curl "https://api.smartmoneyapi.com/v1/whales/events?page=1&limit=100"
# 获取第二页
curl "https://api.smartmoneyapi.com/v1/whales/events?page=2&limit=100"
分页响应信息
JSON
{
"success": true,
"data": {...},
"pagination": {
"page": 1,
"limit": 50,
"total": 420,
"total_pages": 9,
"has_next": true,
"has_prev": false
}
}
筛选
根据交易对、交易所、方向等条件筛选结果。多个筛选条件默认采用AND逻辑组合。
| 筛选字段 | 可选值 | 示例 |
|---|---|---|
| symbol | 交易对 | BTCUSDT, ETHUSDT |
| exchange | bybit, binance, hyperliquid | bybit |
| direction | long, short | long |
| min_position_size | 数字 | 10.5 |
| min_pnl_percent | 数字 | 2.0 |
筛选示例
cURL
# 按交易对和方向筛选
curl "https://api.smartmoneyapi.com/v1/whales/events?symbol=BTCUSDT&direction=long"
# 按交易所和最小持仓量筛选
curl "https://api.smartmoneyapi.com/v1/whales/events?exchange=bybit&min_position_size=15"
排序
按持仓量、盈亏百分比等字段排序。需指定字段名和方向(asc升序/desc降序)。
cURL
# 按持仓量降序排列(最大持仓优先)
curl "https://api.smartmoneyapi.com/v1/whales/events?sort=position_sizeℴ=desc"
# 按盈亏百分比升序排列
curl "https://api.smartmoneyapi.com/v1/whales/events?sort=pnl_percentℴ=asc"
完整示例
Python:遍历所有分页
Python
import requests
def get_all_whale_positions(api_key, symbol=None):
"""分页获取所有鲸鱼仓位数据"""
all_positions = []
page = 1
while True:
params = {
"page": page,
"limit": 100, # 最大批量数
"sort": "position_size",
"order": "desc"
}
if symbol:
params["symbol"] = symbol
response = requests.get(
"https://api.smartmoneyapi.com/v1/whales/events",
headers={"Authorization": f"Bearer {api_key}"},
params=params
)
data = response.json()
all_positions.extend(data["data"]["positions"])
# 检查是否还有下一页
if not data["pagination"]["has_next"]:
break
page += 1
return all_positions
# 使用示例
positions = get_all_whale_positions("sk_live_abc123xyz789", symbol="BTCUSDT")
print(f"获取到{len(positions)}条鲸鱼仓位记录")
最佳实践
1. 使用最大分页限制(100-500): 减少API调用次数获取同等数据量。实现高效批量结果获取。
2. 服务端筛选: 使用查询参数在数据源处筛选,而非在应用代码中处理。减少数据传输量。
3. 服务端排序: 直接请求API返回排序结果。服务端的大规模排序更高效。
4. 缓存与分页: 本地缓存结果并通过缓存数据分页,最大限度减少API调用。
5. 适时终止请求: 不必总是获取全部分页数据。当满足使用需求时可提前终止请求。