ページネーション、フィルタリング、ソート
ページネーション、フィルタリング、ソートを使用して効率的にデータを取得する方法を学びましょう。クエリパラメータを使ってクエリを最適化し、API呼び出しを減らす方法を解説します。
Smart Money APIでは効率的なデータ取得のためにカーソルベースのページネーションを採用しています。ページ番号とリミットを指定して結果セットを制御できます。
| パラメータ |
タイプ |
デフォルト |
最大値 |
| page |
integer |
1 |
N/A |
| limit |
integer |
50 |
500 |
ページネーションの例
# 最初の100件を取得
curl "https://api.smartmoneyapi.com/v1/whales/events?page=1&limit=100"
# 2ページ目を取得
curl "https://api.smartmoneyapi.com/v1/whales/events?page=2&limit=100"
レスポンスのページネーション情報
{
"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 "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"
ソート
ポジションサイズやP&Lなどのフィールドで結果をソートします。フィールドと方向(asc/desc)を指定します。
# ポジションサイズの降順でソート(大きい順)
curl "https://api.smartmoneyapi.com/v1/whales/events?sort=position_sizeℴ=desc"
# P&Lの昇順でソート
curl "https://api.smartmoneyapi.com/v1/whales/events?sort=pnl_percentℴ=asc"
完全な例
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"Found {len(positions)} whale positions")
ベストプラクティス
1. 最大リミット(100-500)を使用: 同じ量のデータを取得するためのAPI呼び出しを減らせます。効率的に結果をバッチ処理しましょう。
2. サーバーサイドでフィルタリング: アプリケーションコードではなくクエリパラメータを使ってソースでフィルタリングします。データ転送量を削減できます。
3. サーバーでソート: APIからソート済みの結果をリクエストします。大規模なソートはサーバー側で効率的に行われます。
4. キャッシュとページネーション: 結果をローカルにキャッシュし、キャッシュされたデータをページネーションすることでAPI呼び出しを最小限に抑えます。
5. 可能なら早期終了: 常に全ページを取得する必要はありません。ユースケースに十分なデータが得られたら処理を停止しましょう。