feat(binance_client, market_scanner, position_manager): 增强行情数据获取与处理逻辑
在 `binance_client` 中新增多个公开行情接口,包括深度信息、资金费率和未平仓合约数的获取,优化了 REST API 的调用逻辑。更新 `market_scanner` 以并行请求主周期和确认周期的 K线数据,提升了数据获取效率并引入超时处理。`position_manager` 中增加了从深度信息获取当前价格的逻辑,确保在多种情况下都能准确获取价格,增强了系统的稳定性和可追溯性。
This commit is contained in:
parent
3539180362
commit
249aec917a
61
docs/行情接口可用性说明.md
Normal file
61
docs/行情接口可用性说明.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# 行情接口可用性说明
|
||||
|
||||
基于「行情 WS 接口」「行情接口REST.txt」与当前交易系统实现,对各类接口的**是否已用、是否建议用**做简要说明。
|
||||
**已接入 REST**:深度、最新标记价格与资金费率、资金费率历史、未平仓合约数、持仓量历史、大户/全局多空比、主动买卖量(见 `binance_client.py`)。
|
||||
|
||||
---
|
||||
|
||||
## 一、当前系统已在用的
|
||||
|
||||
| 文档名称 | 在系统中的用法 |
|
||||
|---------|----------------|
|
||||
| **24hr 价格变动情况** | `ticker_24h_stream` WS + REST `get_ticker_24h` / `get_all_tickers_24h`,用于扫描涨跌幅、当前价、成交量。 |
|
||||
| **K 线数据** | `kline_stream` WS + REST `get_klines`,用于技术指标(RSI/MACD/ATR/EMA 等)与多周期分析。 |
|
||||
| **当前最优挂单** | `book_ticker_stream` WS(!bookTicker)+ 兜底 REST,用于当前价、滑点估算、挂保护单前价格校验。 |
|
||||
| **最新价格**(含 V2) | 功能被 24h ticker 与 book 覆盖,未单独接;需要“仅最新价”时可用 `ticker.price` 做轻量兜底。 |
|
||||
|
||||
---
|
||||
|
||||
## 二、建议接入、能明显改善的
|
||||
|
||||
| 文档名称 | 建议用途 | 说明 |
|
||||
|---------|----------|------|
|
||||
| **深度信息 (depth)** | 滑点估算、限价挂单参考、大单/盘口结构 | 目前只有最优买卖一档(book);接入 depth 后可做更准的市价冲击成本、或简单 order book 策略。可用 WS depth 流维护本地盘口,减少 REST 权重。 |
|
||||
| **最新标记价格和资金费率** | 强平/风险展示、资金费成本 | 当前 markPrice 来自持仓接口;若要做「全市场标记价」或单独展示资金费率,可接此接口。资金费可用于过滤高费率时开仓。 |
|
||||
| **标记价格 K 线数据** | 以标记价做技术分析 | 若希望指标更贴近强平价、减少插针影响,可部分替代「K 线数据」用于计算。 |
|
||||
| **查询资金费率历史 / 资金费率信息** | 资金费择时、多空成本 | 避免在资金费极高时开仓,或作为多空情绪/结构的辅助。 |
|
||||
| **获取未平仓合约数 / 合约持仓量历史** | 量价、趋势过滤 | 与价格/成交量结合,做趋势确认或过滤(如持仓量骤增+价格突破)。 |
|
||||
| **大户持仓量多空比 / 大户账户数多空比 / 多空持仓人数比** | 情绪/反向指标 | 可作为过滤条件或信号权重(例如极端多空比时谨慎同向开仓)。 |
|
||||
| **合约主动买卖量** | 买卖压力、入场时机 | 辅助判断多空力量,用于入场/出场或过滤。 |
|
||||
|
||||
---
|
||||
|
||||
## 三、可选、按策略需要再接
|
||||
|
||||
| 文档名称 | 可选用途 |
|
||||
|---------|----------|
|
||||
| **近期成交 / 近期成交(归集) / 查询历史成交** | 微观结构、大单检测、成交分布统计;当前策略未用。 |
|
||||
| **连续合约 K 线数据** | 跨期或连续合约分析时用。 |
|
||||
| **价格指数 K 线 / 溢价指数 K 线** | 套利、基差、溢价策略。 |
|
||||
| **基差 / 综合指数 / 多资产模式资产汇率指数 / 查询指数价格成分** | 指数、多腿或套利类策略。 |
|
||||
| **查询保险基金余额 / 自动减仓风险评级** | 风控展示、极端行情监控。 |
|
||||
| **一周交易时段** | 若要做「仅在某交易时段内交易」的规则时可接。 |
|
||||
| **RPI 深度信息** | 文档注明响应不包含 RPI 订单;若不涉及 RPI 订单可忽略。 |
|
||||
| **季度合约历史结算价** | 仅做季度合约或结算相关逻辑时需要。 |
|
||||
|
||||
---
|
||||
|
||||
## 四、落地优先级建议(结合当前项目)
|
||||
|
||||
1. **优先**
|
||||
- **深度 (depth)**:用 WS depth 做本地盘口,提升滑点估算与限价参考,减少对单一 book 的依赖。
|
||||
- **最新标记价格和资金费率**:若前端/风控要展示「标记价、资金费率」或按资金费过滤开仓,再接即可。
|
||||
|
||||
2. **其次**
|
||||
- **资金费率历史/信息**、**未平仓合约数/持仓量历史**:用于过滤或信号增强。
|
||||
- **大户多空比 / 主动买卖量**:作为可选过滤或权重,不改变主流程。
|
||||
|
||||
3. **按需**
|
||||
- 标记价格 K 线、连续合约 K 线、溢价/指数类、保险基金/自动减仓、交易时段等,在明确产品需求(如套利、风控大屏、时段规则)后再接。
|
||||
|
||||
如果你愿意,我可以按「深度 + 标记价/资金费率」先给出具体接入方案(WS 订阅方式、数据结构、在现有 `binance_client` / `position_manager` 里怎么用)。
|
||||
|
|
@ -736,6 +736,144 @@ class BinanceClient:
|
|||
logger.error(f"批量获取24小时行情失败: {e}")
|
||||
return {}
|
||||
|
||||
# ------------------------- 公开行情接口(文档:行情接口REST.txt)-------------------------
|
||||
|
||||
async def _public_futures_get(self, path: str, params: Optional[Dict[str, Any]] = None, timeout_sec: int = 10) -> Any:
|
||||
"""公开 GET 请求(无需签名),path 如 'fapi/v1/depth' 或 'futures/data/openInterestHist'。"""
|
||||
import aiohttp
|
||||
base = self._futures_base_url()
|
||||
url = f"{base}/{path}" if not path.startswith("/") else f"{base}{path}"
|
||||
params = {k: v for k, v in (params or {}).items() if v is not None}
|
||||
try:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url, params=params, timeout=aiohttp.ClientTimeout(total=timeout_sec)) as resp:
|
||||
text = await resp.text()
|
||||
if resp.status != 200:
|
||||
logger.debug(f"公开行情 GET 失败: {path} status={resp.status} body={text[:200]}")
|
||||
return None
|
||||
if not text or not text.strip():
|
||||
return None
|
||||
return json.loads(text)
|
||||
except asyncio.TimeoutError:
|
||||
logger.debug(f"公开行情 GET 超时: {path}")
|
||||
return None
|
||||
except Exception as e:
|
||||
logger.debug(f"公开行情 GET 异常 {path}: {e}")
|
||||
return None
|
||||
|
||||
async def get_depth(self, symbol: str, limit: int = 50) -> Optional[Dict[str, Any]]:
|
||||
"""
|
||||
深度信息 GET /fapi/v1/depth
|
||||
limit 可选 5,10,20,50,100,500,1000;权重 2~20。
|
||||
Returns: { lastUpdateId, E, T, bids: [[price, qty], ...], asks: [...] }
|
||||
"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
if limit not in (5, 10, 20, 50, 100, 500, 1000):
|
||||
limit = 50
|
||||
return await self._rate_limited_request(
|
||||
f"depth_{symbol}",
|
||||
self._public_futures_get("fapi/v1/depth", {"symbol": symbol, "limit": limit}),
|
||||
)
|
||||
|
||||
async def get_premium_index(self, symbol: Optional[str] = None) -> Any:
|
||||
"""
|
||||
最新标记价格和资金费率 GET /fapi/v1/premiumIndex
|
||||
带 symbol 权重 1,不带 10。返回单对象或数组。
|
||||
"""
|
||||
params = {} if symbol is None else {"symbol": self._resolve_api_symbol(symbol)}
|
||||
return await self._rate_limited_request(
|
||||
"premiumIndex",
|
||||
self._public_futures_get("fapi/v1/premiumIndex", params),
|
||||
)
|
||||
|
||||
async def get_funding_rate(self, symbol: Optional[str] = None, limit: int = 100,
|
||||
start_time: Optional[int] = None, end_time: Optional[int] = None) -> List[Dict]:
|
||||
"""
|
||||
资金费率历史 GET /fapi/v1/fundingRate
|
||||
limit 默认 100 最大 1000;与 fundingInfo 共享 500/5min/IP。
|
||||
"""
|
||||
params = {"limit": limit}
|
||||
if symbol:
|
||||
params["symbol"] = self._resolve_api_symbol(symbol)
|
||||
if start_time is not None:
|
||||
params["startTime"] = start_time
|
||||
if end_time is not None:
|
||||
params["endTime"] = end_time
|
||||
out = await self._public_futures_get("fapi/v1/fundingRate", params)
|
||||
return out if isinstance(out, list) else []
|
||||
|
||||
async def get_open_interest(self, symbol: str) -> Optional[Dict[str, Any]]:
|
||||
"""获取未平仓合约数 GET /fapi/v1/openInterest 权重 1。"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
return await self._rate_limited_request(
|
||||
f"openInterest_{symbol}",
|
||||
self._public_futures_get("fapi/v1/openInterest", {"symbol": symbol}),
|
||||
)
|
||||
|
||||
async def _futures_data_get(self, endpoint: str, params: Dict[str, Any]) -> Any:
|
||||
"""GET /futures/data/<endpoint>,权重多为 0,IP 限频 1000/5min。"""
|
||||
return await self._public_futures_get(f"futures/data/{endpoint}", params)
|
||||
|
||||
async def get_open_interest_hist(self, symbol: str, period: str = "1h", limit: int = 30,
|
||||
start_time: Optional[int] = None, end_time: Optional[int] = None) -> List[Dict]:
|
||||
"""合约持仓量历史 GET /futures/data/openInterestHist。period: 5m,15m,30m,1h,2h,4h,6h,12h,1d。"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
params = {"symbol": symbol, "period": period, "limit": limit}
|
||||
if start_time is not None:
|
||||
params["startTime"] = start_time
|
||||
if end_time is not None:
|
||||
params["endTime"] = end_time
|
||||
out = await self._futures_data_get("openInterestHist", params)
|
||||
return out if isinstance(out, list) else []
|
||||
|
||||
async def get_top_long_short_position_ratio(self, symbol: str, period: str = "1h", limit: int = 30,
|
||||
start_time: Optional[int] = None, end_time: Optional[int] = None) -> List[Dict]:
|
||||
"""大户持仓量多空比 GET /futures/data/topLongShortPositionRatio。"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
params = {"symbol": symbol, "period": period, "limit": limit}
|
||||
if start_time is not None:
|
||||
params["startTime"] = start_time
|
||||
if end_time is not None:
|
||||
params["endTime"] = end_time
|
||||
out = await self._futures_data_get("topLongShortPositionRatio", params)
|
||||
return out if isinstance(out, list) else []
|
||||
|
||||
async def get_top_long_short_account_ratio(self, symbol: str, period: str = "1h", limit: int = 30,
|
||||
start_time: Optional[int] = None, end_time: Optional[int] = None) -> List[Dict]:
|
||||
"""大户账户数多空比 GET /futures/data/topLongShortAccountRatio。"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
params = {"symbol": symbol, "period": period, "limit": limit}
|
||||
if start_time is not None:
|
||||
params["startTime"] = start_time
|
||||
if end_time is not None:
|
||||
params["endTime"] = end_time
|
||||
out = await self._futures_data_get("topLongShortAccountRatio", params)
|
||||
return out if isinstance(out, list) else []
|
||||
|
||||
async def get_global_long_short_account_ratio(self, symbol: str, period: str = "1h", limit: int = 30,
|
||||
start_time: Optional[int] = None, end_time: Optional[int] = None) -> List[Dict]:
|
||||
"""多空持仓人数比 GET /futures/data/globalLongShortAccountRatio。"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
params = {"symbol": symbol, "period": period, "limit": limit}
|
||||
if start_time is not None:
|
||||
params["startTime"] = start_time
|
||||
if end_time is not None:
|
||||
params["endTime"] = end_time
|
||||
out = await self._futures_data_get("globalLongShortAccountRatio", params)
|
||||
return out if isinstance(out, list) else []
|
||||
|
||||
async def get_taker_long_short_ratio(self, symbol: str, period: str = "1h", limit: int = 30,
|
||||
start_time: Optional[int] = None, end_time: Optional[int] = None) -> List[Dict]:
|
||||
"""合约主动买卖量 GET /futures/data/takerlongshortRatio。"""
|
||||
symbol = self._resolve_api_symbol(symbol)
|
||||
params = {"symbol": symbol, "period": period, "limit": limit}
|
||||
if start_time is not None:
|
||||
params["startTime"] = start_time
|
||||
if end_time is not None:
|
||||
params["endTime"] = end_time
|
||||
out = await self._futures_data_get("takerlongshortRatio", params)
|
||||
return out if isinstance(out, list) else []
|
||||
|
||||
async def get_account_balance(self) -> Dict[str, float]:
|
||||
"""
|
||||
获取U本位合约账户余额
|
||||
|
|
|
|||
|
|
@ -213,7 +213,8 @@ DEFAULT_TRADING_CONFIG = {
|
|||
'ATR_MULTIPLIER_MIN': 1.5, # 动态ATR倍数最小值(回归盈利期设置)
|
||||
'ATR_MULTIPLIER_MAX': 2.5, # 动态ATR倍数最大值(回归盈利期设置)
|
||||
'SCAN_INTERVAL': 900, # 扫描间隔15分钟(900秒),快速验证模式:提高扫描频率以增加交易机会
|
||||
'SCAN_SYMBOL_ANALYSIS_TIMEOUT_SEC': 18, # 单个交易对「详细分析」超时(秒),超时则跳过该交易对;网络慢可调大(如 25)
|
||||
'SCAN_SYMBOL_ANALYSIS_TIMEOUT_SEC': 12, # 单个交易对「详细分析」超时(秒);已并行拉取主周期/确认周期K线,12秒通常够用;网络慢可调大(18~25)
|
||||
'SCAN_KLINE_FETCH_TIMEOUT_SEC': 8, # K线拉取单独超时(秒);超时则返回降级结果(仅涨跌幅/成交量),不拖满整分析超时
|
||||
'KLINE_INTERVAL': '1h',
|
||||
'PRIMARY_INTERVAL': '4h', # 主周期4小时,过滤噪音
|
||||
'CONFIRM_INTERVAL': '1d', # 确认周期日线,看大趋势
|
||||
|
|
|
|||
|
|
@ -109,6 +109,13 @@ class KlineStream:
|
|||
_kline_cache_limit[key] = limit
|
||||
logger.debug(f"KlineStream: 已订阅 {symbol} {interval}")
|
||||
return True
|
||||
except (ConnectionResetError, OSError) as e:
|
||||
msg = str(e).lower()
|
||||
if "closing transport" in msg or "cannot write" in msg:
|
||||
logger.debug("KlineStream: 连接关闭中,订阅 %s %s 跳过(重连后将自动重试)", symbol, interval)
|
||||
else:
|
||||
logger.warning(f"KlineStream: 订阅 {symbol} {interval} 失败: {e}")
|
||||
return False
|
||||
except Exception as e:
|
||||
logger.warning(f"KlineStream: 订阅 {symbol} {interval} 失败: {e}")
|
||||
return False
|
||||
|
|
|
|||
|
|
@ -303,24 +303,63 @@ class MarketScanner:
|
|||
except Exception:
|
||||
ticker_ts = None
|
||||
|
||||
# 获取更多K线数据用于技术指标计算(使用配置的主周期)
|
||||
# 获取更多K线数据用于技术指标计算(主周期 + 确认周期并行请求;单独超时避免整分析拖到 18s)
|
||||
primary_interval = config.TRADING_CONFIG.get('PRIMARY_INTERVAL', '1h')
|
||||
klines = await self.client.get_klines(
|
||||
symbol=symbol,
|
||||
interval=primary_interval,
|
||||
limit=50 # 获取更多数据用于计算指标
|
||||
)
|
||||
|
||||
if len(klines) < 2:
|
||||
return None
|
||||
|
||||
# 获取4H周期数据用于多周期共振检查
|
||||
confirm_interval = config.TRADING_CONFIG.get('CONFIRM_INTERVAL', '4h')
|
||||
klines_4h = await self.client.get_klines(
|
||||
symbol=symbol,
|
||||
interval=confirm_interval,
|
||||
limit=50 # 获取4H周期数据
|
||||
)
|
||||
cfg = dict(config.TRADING_CONFIG or {})
|
||||
klines_timeout = float(cfg.get('SCAN_KLINE_FETCH_TIMEOUT_SEC', 8) or 8)
|
||||
if klines_timeout < 3:
|
||||
klines_timeout = 3.0
|
||||
elif klines_timeout > 20:
|
||||
klines_timeout = 20.0
|
||||
klines, klines_4h = [], []
|
||||
try:
|
||||
klines, klines_4h = await asyncio.wait_for(
|
||||
asyncio.gather(
|
||||
self.client.get_klines(symbol=symbol, interval=primary_interval, limit=50),
|
||||
self.client.get_klines(symbol=symbol, interval=confirm_interval, limit=50),
|
||||
),
|
||||
timeout=klines_timeout,
|
||||
)
|
||||
except asyncio.TimeoutError:
|
||||
logger.debug(f"{symbol} K线拉取超时({klines_timeout:.0f}秒),使用降级结果(仅涨跌幅/成交量)")
|
||||
klines, klines_4h = [], []
|
||||
|
||||
if not klines or len(klines) < 2:
|
||||
# 降级:仍有 ticker 时返回仅涨跌幅/成交量的结果,不直接跳过,避免整轮扫描被拖慢
|
||||
try:
|
||||
change_pct = float(ticker.get('changePercent', 0) or 0)
|
||||
vol = float(ticker.get('volume', 0) or ticker.get('quoteVolume', 0) or 0)
|
||||
price = ticker_price if ticker_price is not None else float(ticker.get('lastPrice', 0) or ticker.get('price', 0) or 0)
|
||||
return {
|
||||
'symbol': symbol,
|
||||
'price': price,
|
||||
'kline_close_price': price,
|
||||
'ticker_price': ticker_price,
|
||||
'ticker_ts': ticker_ts,
|
||||
'prevPrice': None,
|
||||
'kline_change_percent': change_pct,
|
||||
'changePercent': change_pct,
|
||||
'volume24h': vol,
|
||||
'direction': 'UP' if change_pct > 0 else 'DOWN',
|
||||
'rsi': None,
|
||||
'macd': None,
|
||||
'bollinger': None,
|
||||
'atr': None,
|
||||
'ema20': None,
|
||||
'ema50': None,
|
||||
'ema20_4h': None,
|
||||
'price_4h': None,
|
||||
'marketRegime': 'unknown',
|
||||
'signalScore': 0,
|
||||
'signal_strength': 0,
|
||||
'trend_4h': None,
|
||||
'klines': [],
|
||||
'klines_4h': [],
|
||||
}
|
||||
except Exception as e:
|
||||
logger.debug(f"{symbol} 降级结果构建失败: {e}")
|
||||
return None
|
||||
|
||||
# 提取价格数据(主周期)
|
||||
close_prices = [float(k[4]) for k in klines] # 收盘价
|
||||
|
|
@ -341,8 +380,6 @@ class MarketScanner:
|
|||
|
||||
# ⚠️ 优化:检查技术指标计算结果缓存(基于K线数据的最后更新时间)
|
||||
# 如果K线数据没有更新,可以直接使用缓存的技术指标
|
||||
primary_interval = config.TRADING_CONFIG.get('PRIMARY_INTERVAL', '1h')
|
||||
confirm_interval = config.TRADING_CONFIG.get('CONFIRM_INTERVAL', '4h')
|
||||
cache_key_indicators = f"indicators:{symbol}:{primary_interval}:{confirm_interval}"
|
||||
last_kline_time = int(klines[-1][0]) if klines else 0 # 最后一根K线的时间戳
|
||||
|
||||
|
|
|
|||
|
|
@ -1607,6 +1607,20 @@ class PositionManager:
|
|||
if mark_price and float(mark_price) > 0:
|
||||
current_price = float(mark_price)
|
||||
logger.debug(f"{symbol} 从持仓获取标记价格: {current_price}")
|
||||
# 3) REST:深度最优档中点(权重低)→ 24h ticker
|
||||
if current_price is None:
|
||||
depth = await self.client.get_depth(symbol, limit=5)
|
||||
if depth:
|
||||
bids = depth.get("bids") or []
|
||||
asks = depth.get("asks") or []
|
||||
if bids and asks and len(bids[0]) >= 1 and len(asks[0]) >= 1:
|
||||
try:
|
||||
mid = (float(bids[0][0]) + float(asks[0][0])) / 2
|
||||
if mid > 0:
|
||||
current_price = mid
|
||||
logger.debug(f"{symbol} 从 depth REST 获取当前价格: {current_price}")
|
||||
except (ValueError, TypeError, IndexError):
|
||||
pass
|
||||
if current_price is None:
|
||||
ticker = await self.client.get_ticker_24h(symbol)
|
||||
if ticker:
|
||||
|
|
@ -1619,7 +1633,7 @@ class PositionManager:
|
|||
|
||||
# 如果仍然没有当前价格,记录警告
|
||||
if current_price is None:
|
||||
logger.warning(f"{symbol} ⚠️ 无法获取当前价格(已尝试 WS bookTicker/ticker24h、持仓、REST),止损单可能无法正确验证触发条件")
|
||||
logger.warning(f"{symbol} ⚠️ 无法获取当前价格(已尝试 WS bookTicker/ticker24h、持仓、depth、REST ticker),止损单可能无法正确验证触发条件")
|
||||
|
||||
# 在挂止损单前,检查当前价格是否已经触发止损(避免 -2021 错误)
|
||||
if current_price and stop_loss:
|
||||
|
|
|
|||
952
行情接口REST.txt
952
行情接口REST.txt
|
|
@ -241,3 +241,955 @@ symbol STRING NO 交易对
|
|||
]
|
||||
|
||||
|
||||
深度信息
|
||||
接口描述
|
||||
交易对深度信息
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/depth
|
||||
|
||||
注意: 响应消息不包含RPI订单,其不可见。
|
||||
|
||||
请求权重
|
||||
limit 权重
|
||||
5, 10, 20, 50 2
|
||||
100 5
|
||||
500 10
|
||||
1000 20
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
limit INT NO 默认 500; 可选值:[5, 10, 20, 50, 100, 500, 1000]
|
||||
响应示例
|
||||
{
|
||||
"lastUpdateId": 1027024,
|
||||
"E": 1589436922972, // 消息时间
|
||||
"T": 1589436922959, // 撮合引擎时间
|
||||
"bids": [ // 买单
|
||||
[
|
||||
"4.00000000", // 价格
|
||||
"431.00000000" // 数量
|
||||
]
|
||||
],
|
||||
"asks": [ // 卖单
|
||||
[
|
||||
"4.00000200", // 价格
|
||||
"12.00000000" // 数量
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
RPI深度信息
|
||||
接口描述
|
||||
交易对深度信息,包含非交叉的RPI订单
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/rpiDepth
|
||||
|
||||
注意: 响应消息包含RPI订单数量。相互交叉的价格档位不可见。
|
||||
|
||||
请求权重
|
||||
limit 权重
|
||||
1000 20
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
limit INT NO 默认 1000; 可选值:[1000]
|
||||
响应示例
|
||||
{
|
||||
"lastUpdateId": 1027024,
|
||||
"E": 1589436922972, // 消息时间
|
||||
"T": 1589436922959, // 撮合引擎时间
|
||||
"bids": [ // 买单
|
||||
[
|
||||
"4.00000000", // 价格
|
||||
"431.00000000" // 数量
|
||||
]
|
||||
],
|
||||
"asks": [ // 卖单
|
||||
[
|
||||
"4.00000200", // 价格
|
||||
"12.00000000" // 数量
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
近期成交
|
||||
接口描述
|
||||
获取近期订单簿成交
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/trades
|
||||
|
||||
注意: 响应消息不包含RPI订单,其不可见。
|
||||
|
||||
请求权重
|
||||
5
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
limit INT NO 默认:500,最大1000
|
||||
仅返回订单簿成交,即不会返回保险基金和自动减仓(ADL)成交
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"id": 28457, // 成交ID
|
||||
"price": "4.00000100", // 成交价格
|
||||
"qty": "12.00000000", // 成交量
|
||||
"quoteQty": "48.00", // 成交额
|
||||
"time": 1499865549590, // 时间
|
||||
"isBuyerMaker": true // 买方是否为挂单方
|
||||
"isRPITrade": true // Maker方是否为RPI挂单
|
||||
}
|
||||
]
|
||||
|
||||
查询历史成交(MARKET_DATA)
|
||||
接口描述
|
||||
查询订单簿历史成交
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/historicalTrades
|
||||
|
||||
请求权重
|
||||
20
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
limit INT NO 默认值:100 最大值:500.
|
||||
fromId LONG NO 从哪一条成交id开始返回. 缺省返回最近的成交记录
|
||||
仅返回订单簿成交,即不会返回保险基金和自动减仓(ADL)成交
|
||||
仅支持返回最近3个月的数据
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"id": 28457, // 成交ID
|
||||
"price": "4.00000100", // 成交价格
|
||||
"qty": "12.00000000", // 成交量
|
||||
"quoteQty": "48.00", // 成交额
|
||||
"time": 1499865549590, // 时间
|
||||
"isBuyerMaker": true // 买方是否为挂单方
|
||||
"isRPITrade": true // Maker方是否为RPI挂单
|
||||
}
|
||||
]
|
||||
|
||||
近期成交(归集)
|
||||
接口描述
|
||||
归集交易与逐笔交易的区别在于,同一价格、同一方向、同一时间(100ms计算)的订单簿trade会被聚合为一条
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/aggTrades
|
||||
|
||||
注意: 响应消息聚合RPI订单数据,但无任何特殊标签区别。
|
||||
|
||||
权重: 20
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
fromId LONG NO 从包含fromID的成交开始返回结果
|
||||
startTime LONG NO 从该时刻之后的成交记录开始返回结果
|
||||
endTime LONG NO 返回该时刻为止的成交记录
|
||||
limit INT NO 默认 500; 最大 1000.
|
||||
接口仅支持查询最近1年的交易数据
|
||||
如果同时发送startTime和endTime,间隔必须小于一小时
|
||||
如果没有发送任何筛选参数(fromId, startTime, endTime),默认返回最近的成交记录
|
||||
保险基金和自动减仓(ADL)成交不属于订单簿成交,故不会被归并聚合
|
||||
同时发送startTime/endTime和fromId可能导致请求超时,建议仅发送fromId或仅发送startTime和endTime
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"a": 26129, // 归集成交ID
|
||||
"p": "0.01633102", // 成交价
|
||||
"q": "4.70443515", // 成交量
|
||||
"f": 27781, // 被归集的首个成交ID
|
||||
"l": 27781, // 被归集的末个成交ID
|
||||
"T": 1498793709153, // 成交时间
|
||||
"m": true, // 是否为主动卖出单
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
K线数据
|
||||
接口描述
|
||||
每根K线的开盘时间可视为唯一ID
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/klines
|
||||
|
||||
请求权重
|
||||
取决于请求中的LIMIT参数
|
||||
|
||||
LIMIT参数 权重
|
||||
[1,100) 1
|
||||
[100, 500) 2
|
||||
[500, 1000] 5
|
||||
> 1000 10
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
interval ENUM YES 时间间隔
|
||||
startTime LONG NO 起始时间
|
||||
endTime LONG NO 结束时间
|
||||
limit INT NO 默认值:500 最大值:1500.
|
||||
缺省返回最近的数据
|
||||
响应示例
|
||||
[
|
||||
[
|
||||
1499040000000, // 开盘时间
|
||||
"0.01634790", // 开盘价
|
||||
"0.80000000", // 最高价
|
||||
"0.01575800", // 最低价
|
||||
"0.01577100", // 收盘价(当前K线未结束的即为最新价)
|
||||
"148976.11427815", // 成交量
|
||||
1499644799999, // 收盘时间
|
||||
"2434.19055334", // 成交额
|
||||
308, // 成交笔数
|
||||
"1756.87402397", // 主动买入成交量
|
||||
"28.46694368", // 主动买入成交额
|
||||
"17928899.62484339" // 请忽略该参数
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
连续合约K线数据
|
||||
接口描述
|
||||
每根K线的开盘时间可视为唯一ID
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/continuousKlines
|
||||
|
||||
请求权重
|
||||
取决于请求中的LIMIT参数
|
||||
|
||||
LIMIT参数 权重
|
||||
[1,100) 1
|
||||
[100, 500) 2
|
||||
[500, 1000] 5
|
||||
> 1000 10
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
pair STRING YES 标的交易对
|
||||
contractType ENUM YES 合约类型
|
||||
interval ENUM YES 时间间隔
|
||||
startTime LONG NO 起始时间
|
||||
endTime LONG NO 结束时间
|
||||
limit INT NO 默认值:500 最大值:1500
|
||||
缺省返回最近的数据
|
||||
|
||||
合约类型:
|
||||
|
||||
PERPETUAL 永续合约
|
||||
CURRENT_QUARTER 当季交割合约
|
||||
NEXT_QUARTER 次季交割合约
|
||||
TRADIFI_PERPETUAL 传统金融合约
|
||||
响应示例
|
||||
[
|
||||
[
|
||||
1607444700000, // 开盘时间
|
||||
"18879.99", // 开盘价
|
||||
"18900.00", // 最高价
|
||||
"18878.98", // 最低价
|
||||
"18896.13", // 收盘价(当前K线未结束的即为最新价)
|
||||
"492.363", // 成交量
|
||||
1607444759999, // 收盘时间
|
||||
"9302145.66080", // 成交额
|
||||
1874, // 成交笔数
|
||||
"385.983", // 主动买入成交量
|
||||
"7292402.33267", // 主动买入成交额
|
||||
"0" // 请忽略该参数
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
价格指数K线数据
|
||||
接口描述
|
||||
价格指数K线数据,每根K线的开盘时间可视为唯一ID
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/indexPriceKlines
|
||||
|
||||
请求权重
|
||||
取决于请求中的LIMIT参数
|
||||
|
||||
LIMIT参数 权重
|
||||
[1,100) 1
|
||||
[100, 500) 2
|
||||
[500, 1000] 5
|
||||
> 1000 10
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
pair STRING YES 标的交易对
|
||||
interval ENUM YES 时间间隔
|
||||
startTime LONG NO 起始时间
|
||||
endTime LONG NO 结束时间
|
||||
limit INT NO 默认值:500 最大值:1500
|
||||
缺省返回最近的数据
|
||||
响应示例
|
||||
[
|
||||
[
|
||||
1591256400000, // 开盘时间
|
||||
"9653.69440000", // 开盘价
|
||||
"9653.69640000", // 最高价
|
||||
"9651.38600000", // 最低价
|
||||
"9651.55200000", // 收盘价(当前K线未结束的即为最新价)
|
||||
"0 ", // 请忽略
|
||||
1591256459999, // 收盘时间
|
||||
"0", // 请忽略
|
||||
60, // 请忽略
|
||||
"0", // 请忽略
|
||||
"0", // 请忽略
|
||||
"0" // 请忽略
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
标记价格K线数据
|
||||
接口描述
|
||||
每根K线的开盘时间可视为唯一ID
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/markPriceKlines
|
||||
|
||||
请求权重
|
||||
取决于请求中的LIMIT参数
|
||||
|
||||
LIMIT参数 权重
|
||||
[1,100) 1
|
||||
[100, 500) 2
|
||||
[500, 1000] 5
|
||||
> 1000 10
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
interval ENUM YES 时间间隔
|
||||
startTime LONG NO 起始时间
|
||||
endTime LONG NO 结束时间
|
||||
limit INT NO 默认值:500 最大值:1500
|
||||
缺省返回最近的数据
|
||||
响应示例
|
||||
[
|
||||
[
|
||||
1591256400000, // 开盘时间
|
||||
"9653.69440000", // 开盘价
|
||||
"9653.69640000", // 最高价
|
||||
"9651.38600000", // 最低价
|
||||
"9651.55200000", // 收盘价(当前K线未结束的即为最新价)
|
||||
"0 ", // 请忽略
|
||||
1591256459999, // 收盘时间
|
||||
"0", // 请忽略
|
||||
60, // 请忽略
|
||||
"0", // 请忽略
|
||||
"0", // 请忽略
|
||||
"0" // 请忽略
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
溢价指数K线数据
|
||||
接口描述
|
||||
合约溢价指数K线。每根K线的开盘时间可视为唯一ID。
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/premiumIndexKlines
|
||||
|
||||
请求权重
|
||||
取决于请求中的LIMIT参数
|
||||
|
||||
LIMIT参数 权重
|
||||
[1,100) 1
|
||||
[100, 500) 2
|
||||
[500, 1000] 5
|
||||
> 1000 10
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
interval ENUM YES 时间间隔
|
||||
startTime LONG NO 起始时间
|
||||
endTime LONG NO 结束时间
|
||||
limit INT NO 默认值:500 最大值:1500
|
||||
缺省返回最近的数据
|
||||
响应示例
|
||||
[
|
||||
[
|
||||
1691603820000, // 开盘时间
|
||||
"-0.00042931", // 开盘价
|
||||
"-0.00023641", // 最高价
|
||||
"-0.00059406", // 最低价
|
||||
"-0.00043659", // 收盘价
|
||||
"0", // 请忽略
|
||||
1691603879999, // 收盘时间
|
||||
"0", // 请忽略
|
||||
12, // 请忽略
|
||||
"0", // 请忽略
|
||||
"0", // 请忽略
|
||||
"0" // 请忽略
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
最新标记价格和资金费率
|
||||
接口描述
|
||||
采集各大交易所数据加权平均
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/premiumIndex
|
||||
|
||||
请求权重
|
||||
带symbol 1, 不带symbol 10
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING NO 交易对
|
||||
响应示例
|
||||
响应:
|
||||
|
||||
{
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"markPrice": "11793.63104562", // 标记价格
|
||||
"indexPrice": "11781.80495970", // 指数价格
|
||||
"estimatedSettlePrice": "11781.16138815", // 预估结算价,仅在交割开始前最后一小时有意义
|
||||
"lastFundingRate": "0.00038246", // 最近更新的资金费率
|
||||
"interestRate": "0.00010000", // 标的资产基础利率
|
||||
"nextFundingTime": 1597392000000, // 下次资金费时间
|
||||
"time": 1597370495002 // 更新时间
|
||||
}
|
||||
|
||||
当不指定symbol时相应
|
||||
|
||||
[
|
||||
{
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"markPrice": "11793.63104562", // 标记价格
|
||||
"indexPrice": "11781.80495970", // 指数价格
|
||||
"estimatedSettlePrice": "11781.16138815", // 预估结算价,仅在交割开始前最后一小时有意义
|
||||
"lastFundingRate": "0.00038246", // 最近更新的资金费率
|
||||
"interestRate": "0.00010000", // 标的资产基础利率
|
||||
"nextFundingTime": 1597392000000, // 下次资金费时间
|
||||
"time": 1597370495002 // 更新时间
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
查询资金费率历史
|
||||
接口描述
|
||||
查询资金费率历史
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/fundingRate
|
||||
|
||||
请求权重
|
||||
和GET /fapi/v1/fundingInfo共享500/5min/IP
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING NO 交易对
|
||||
startTime LONG NO 起始时间
|
||||
endTime LONG NO 结束时间
|
||||
limit INT NO 默认值:100 最大值:1000
|
||||
如果 startTime 和 endTime 都未发送, 返回最近200条数据.
|
||||
如果 startTime 和 endTime 之间的数据量大于 limit, 返回 startTime + limit情况下的数据。
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"fundingRate": "-0.03750000", // 资金费率
|
||||
"fundingTime": 1570608000000, // 资金费时间
|
||||
"markPrice": "34287.54619963" // 资金费对应标记价格
|
||||
},
|
||||
{
|
||||
"symbol": "BTCUSDT",
|
||||
"fundingRate": "0.00010000",
|
||||
"fundingTime": 1570636800000,
|
||||
"markPrice": "34287.54619963" // 资金费对应标记价格
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
查询资金费率信息
|
||||
接口描述
|
||||
查询资金费率信息,接口仅返回FundingRateCap/FundingRateFloor/fundingIntervalHours等被特殊调整过的交易对,没调整过的不返回。
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/fundingInfo
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
和GET /fapi/v1/fundingRate共享500/5min/IP
|
||||
|
||||
请求参数
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol": "BLZUSDT",
|
||||
"adjustedFundingRateCap": "0.02500000",
|
||||
"adjustedFundingRateFloor": "-0.02500000",
|
||||
"fundingIntervalHours": 8,
|
||||
"disclaimer": false
|
||||
}
|
||||
]
|
||||
|
||||
24hr价格变动情况
|
||||
接口描述
|
||||
请注意,不携带symbol参数会返回全部交易对数据,不仅数据庞大,而且权重极高
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/ticker/24hr
|
||||
|
||||
请求权重
|
||||
带symbol为1, 不带为40
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING NO 交易对
|
||||
不发送交易对参数,则会返回所有交易对信息
|
||||
响应示例
|
||||
{
|
||||
"symbol": "BTCUSDT",
|
||||
"priceChange": "-94.99999800", //24小时价格变动
|
||||
"priceChangePercent": "-95.960", //24小时价格变动百分比
|
||||
"weightedAvgPrice": "0.29628482", //加权平均价
|
||||
"lastPrice": "4.00000200", //最近一次成交价
|
||||
"lastQty": "200.00000000", //最近一次成交额
|
||||
"openPrice": "99.00000000", //24小时内第一次成交的价格
|
||||
"highPrice": "100.00000000", //24小时最高价
|
||||
"lowPrice": "0.10000000", //24小时最低价
|
||||
"volume": "8913.30000000", //24小时成交量
|
||||
"quoteVolume": "15.30000000", //24小时成交额
|
||||
"openTime": 1499783499040, //24小时内,第一笔交易的发生时间
|
||||
"closeTime": 1499869899040, //24小时内,最后一笔交易的发生时间
|
||||
"firstId": 28385, // 首笔成交id
|
||||
"lastId": 28460, // 末笔成交id
|
||||
"count": 76 // 成交笔数
|
||||
}
|
||||
|
||||
或(当不发送交易对信息)
|
||||
|
||||
[
|
||||
{
|
||||
"symbol": "BTCUSDT",
|
||||
"priceChange": "-94.99999800", //24小时价格变动
|
||||
"priceChangePercent": "-95.960", //24小时价格变动百分比
|
||||
"weightedAvgPrice": "0.29628482", //加权平均价
|
||||
"lastPrice": "4.00000200", //最近一次成交价
|
||||
"lastQty": "200.00000000", //最近一次成交额
|
||||
"openPrice": "99.00000000", //24小时内第一次成交的价格
|
||||
"highPrice": "100.00000000", //24小时最高价
|
||||
"lowPrice": "0.10000000", //24小时最低价
|
||||
"volume": "8913.30000000", //24小时成交量
|
||||
"quoteVolume": "15.30000000", //24小时成交额
|
||||
"openTime": 1499783499040, //24小时内,第一笔交易的发生时间
|
||||
"closeTime": 1499869899040, //24小时内,最后一笔交易的发生时间
|
||||
"firstId": 28385, // 首笔成交id
|
||||
"lastId": 28460, // 末笔成交id
|
||||
"count": 76 // 成交笔数
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
最新价格V2
|
||||
接口描述
|
||||
返回最近价格
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v2/ticker/price
|
||||
|
||||
请求权重
|
||||
单交易对1,无交易对2
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING NO 交易对
|
||||
不发送交易对参数,则会返回所有交易对信息
|
||||
该接口返回头中的X-MBX-USED-WEIGHT-1M参数不准确,可以忽略
|
||||
响应示例
|
||||
响应:
|
||||
|
||||
{
|
||||
"symbol": "LTCBTC", // 交易对
|
||||
"price": "4.00000200", // 价格
|
||||
"time": 1589437530011 // 撮合引擎时间
|
||||
}
|
||||
|
||||
或(当不发送symbol)
|
||||
|
||||
[
|
||||
{
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"price": "6000.01", // 价格
|
||||
"time": 1589437530011 // 撮合引擎时间
|
||||
}
|
||||
]
|
||||
|
||||
当前最优挂单
|
||||
接口描述
|
||||
返回当前最优的挂单(最高买单,最低卖单)
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/ticker/bookTicker
|
||||
|
||||
注意: 响应消息不包含RPI订单,其不可见。
|
||||
|
||||
请求权重
|
||||
单交易对2,无交易对5
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING NO 交易对
|
||||
不发送交易对参数,则会返回所有交易对信息
|
||||
该接口返回头中的X-MBX-USED-WEIGHT-1M参数不准确,可以忽略
|
||||
响应示例
|
||||
{
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"bidPrice": "4.00000000", //最优买单价
|
||||
"bidQty": "431.00000000", //挂单量
|
||||
"askPrice": "4.00000200", //最优卖单价
|
||||
"askQty": "9.00000000", //挂单量
|
||||
"time": 1589437530011 // 撮合引擎时间
|
||||
}
|
||||
|
||||
或(当不发送symbol)
|
||||
|
||||
[
|
||||
{
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"bidPrice": "4.00000000", //最优买单价
|
||||
"bidQty": "431.00000000", //挂单量
|
||||
"askPrice": "4.00000200", //最优卖单价
|
||||
"askQty": "9.00000000", //挂单量
|
||||
"time": 1589437530011 // 撮合引擎时间
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
季度合约历史结算价
|
||||
接口描述
|
||||
返回季度合约历史结算价
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/delivery-price
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
pair STRING YES 如BTCUSDT
|
||||
响应示例
|
||||
响应:
|
||||
|
||||
[
|
||||
{
|
||||
"deliveryTime": 1695945600000,
|
||||
"deliveryPrice": 27103.00000000
|
||||
},
|
||||
{
|
||||
"deliveryTime": 1688083200000,
|
||||
"deliveryPrice": 30733.60000000
|
||||
},
|
||||
{
|
||||
"deliveryTime": 1680220800000,
|
||||
"deliveryPrice": 27814.20000000
|
||||
},
|
||||
{
|
||||
"deliveryTime": 1648166400000,
|
||||
"deliveryPrice": 44066.30000000
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
获取未平仓合约数
|
||||
接口描述
|
||||
获取未平仓合约数
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/openInterest
|
||||
|
||||
请求权重
|
||||
1
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES 交易对
|
||||
响应示例
|
||||
{
|
||||
"openInterest": "10659.509", // 未平仓合约数量
|
||||
"symbol": "BTCUSDT", // 交易对
|
||||
"time": 1589437530011 // 撮合引擎时间
|
||||
}
|
||||
|
||||
|
||||
合约持仓量历史
|
||||
接口描述
|
||||
查询合约持仓量历史
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/openInterestHist
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES
|
||||
period ENUM YES "5m","15m","30m","1h","2h","4h","6h","12h","1d"
|
||||
limit LONG NO default 30, max 500
|
||||
startTime LONG NO
|
||||
endTime LONG NO
|
||||
若无 startime 和 endtime 限制, 则默认返回当前时间往前的limit值
|
||||
仅支持最近1个月的数据
|
||||
IP限频为1000次/5min
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol":"BTCUSDT",
|
||||
"sumOpenInterest":"20403.12345678",// 持仓总数量
|
||||
"sumOpenInterestValue": "176196512.12345678", // 持仓总价值
|
||||
"CMCCirculatingSupply": "165880.538", // CMC提供的流通供应量
|
||||
"timestamp":"1583127900000"
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
"symbol":"BTCUSDT",
|
||||
"sumOpenInterest":"20401.36700000",
|
||||
"sumOpenInterestValue":"149940752.14464448",
|
||||
"CMCCirculatingSupply": "165900.14853",
|
||||
"timestamp":"1583128200000"
|
||||
},
|
||||
]
|
||||
|
||||
大户持仓量多空比
|
||||
接口描述
|
||||
大户的多头和空头总持仓量占比,大户指保证金余额排名前20%的用户。 多仓持仓量比例 = 大户多仓持仓量 / 大户总持仓量 空仓持仓量比例 = 大户空仓持仓量 / 大户总持仓量 多空持仓量比值 = 多仓持仓量比例 / 空仓持仓量比例
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/topLongShortPositionRatio
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES
|
||||
period ENUM YES "5m","15m","30m","1h","2h","4h","6h","12h","1d"
|
||||
limit LONG NO default 30, max 500
|
||||
startTime LONG NO
|
||||
endTime LONG NO
|
||||
若无 startime 和 endtime 限制, 则默认返回当前时间往前的limit值
|
||||
仅支持最近30天的数据
|
||||
IP限频为1000次/5min
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol":"BTCUSDT",
|
||||
"longShortRatio":"1.4342",// 大户多空持仓量比值
|
||||
"longAccount": "0.5344", // 大户多仓持仓量比例
|
||||
"shortAccount":"0.4238", // 大户空仓持仓量比例
|
||||
"timestamp":"1583139600000"
|
||||
|
||||
},
|
||||
|
||||
{
|
||||
|
||||
"symbol":"BTCUSDT",
|
||||
"longShortRatio":"1.4337",
|
||||
"longAccount": "0.5891",
|
||||
"shortAccount":"0.4108",
|
||||
"timestamp":"1583139900000"
|
||||
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
大户账户数多空比
|
||||
接口描述
|
||||
持仓大户的净持仓多头和空头账户数占比,大户指保证金余额排名前20%的用户。一个账户记一次。 多仓账户数比例 = 持多仓大户数 / 总持仓大户数 空仓账户数比例 = 持空仓大户数 / 总持仓大户数 多空账户数比值 = 多仓账户数比例 / 空仓账户数比例
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/topLongShortAccountRatio
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES
|
||||
period ENUM YES "5m","15m","30m","1h","2h","4h","6h","12h","1d"
|
||||
limit LONG NO default 30, max 500
|
||||
startTime LONG NO
|
||||
endTime LONG NO
|
||||
若无 startime 和 endtime 限制, 则默认返回当前时间往前的limit值
|
||||
仅支持最近30天的数据
|
||||
IP限频为1000次/5min
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol":"BTCUSDT",
|
||||
"longShortRatio":"1.8105",// 大户多空账户数比值
|
||||
"longAccount": "0.6442", // 大户多仓账户数比例
|
||||
"shortAccount":"0.3558", // 大户空仓账户数比例
|
||||
"timestamp":"1583139600000"
|
||||
},
|
||||
{
|
||||
|
||||
"symbol":"BTCUSDT",
|
||||
"longShortRatio":"1.8233",
|
||||
"longAccount": "0.5338",
|
||||
"shortAccount":"0.3454",
|
||||
"timestamp":"1583139900000"
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
多空持仓人数比
|
||||
接口描述
|
||||
多空持仓人数比
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/globalLongShortAccountRatio
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES
|
||||
period ENUM YES "5m","15m","30m","1h","2h","4h","6h","12h","1d"
|
||||
limit LONG NO default 30, max 500
|
||||
startTime LONG NO
|
||||
endTime LONG NO
|
||||
若无 startime 和 endtime 限制, 则默认返回当前时间往前的limit值
|
||||
仅支持最近30天的数据
|
||||
IP限频为1000次/5min
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol":"BTCUSDT",
|
||||
"longShortRatio":"0.1960", // 多空人数比值
|
||||
"longAccount": "0.6622", // 多仓人数比例
|
||||
"shortAccount":"0.3378", // 空仓人数比例
|
||||
"timestamp":"1583139600000"
|
||||
|
||||
},
|
||||
|
||||
{
|
||||
|
||||
"symbol":"BTCUSDT",
|
||||
"longShortRatio":"1.9559",
|
||||
"longAccount": "0.6617",
|
||||
"shortAccount":"0.3382",
|
||||
"timestamp":"1583139900000"
|
||||
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
|
||||
合约主动买卖量
|
||||
接口描述
|
||||
合约主动买卖量
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/takerlongshortRatio
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING YES
|
||||
period ENUM YES "5m","15m","30m","1h","2h","4h","6h","12h","1d"
|
||||
limit LONG NO default 30, max 500
|
||||
startTime LONG NO
|
||||
endTime LONG NO
|
||||
若无 startime 和 endtime 限制, 则默认返回当前时间往前的 limit 值
|
||||
仅支持最近 30 天的数据
|
||||
IP限频为1000次/5min
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
buySellRatio: "1.5586",
|
||||
buyVol: "387.3300", // 主动买入量
|
||||
sellVol: "248.5030", // 主动卖出量
|
||||
timestamp: "1585614900000",
|
||||
},
|
||||
|
||||
{
|
||||
buySellRatio: "1.3104",
|
||||
buyVol: "343.9290",
|
||||
sellVol: "248.5030",
|
||||
timestamp: "1583139900000",
|
||||
},
|
||||
]
|
||||
|
||||
基差
|
||||
接口描述
|
||||
查询期货基差
|
||||
|
||||
HTTP请求
|
||||
GET /futures/data/basis
|
||||
|
||||
请求权重
|
||||
0
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
pair STRING YES BTCUSDT
|
||||
contractType ENUM YES CURRENT_QUARTER, NEXT_QUARTER, PERPETUAL
|
||||
period ENUM YES "5m","15m","30m","1h","2h","4h","6h","12h","1d"
|
||||
limit LONG YES Default 30,Max 500
|
||||
startTime LONG NO
|
||||
endTime LONG NO
|
||||
若无 startime 和 endtime 限制, 则默认返回当前时间往前的limit值
|
||||
仅支持最近30天的数据
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"indexPrice": "34400.15945055",
|
||||
"contractType": "PERPETUAL",
|
||||
"basisRate": "0.0004",
|
||||
"futuresPrice": "34414.10",
|
||||
"annualizedBasisRate": "",
|
||||
"basis": "13.94054945",
|
||||
"pair": "BTCUSDT",
|
||||
"timestamp": 1698742800000
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
综合指数交易对信息
|
||||
接口描述
|
||||
获取交易对为综合指数的基础成分信息。
|
||||
|
||||
HTTP请求
|
||||
GET /fapi/v1/indexInfo
|
||||
|
||||
请求权重
|
||||
1
|
||||
|
||||
请求参数
|
||||
名称 类型 是否必需 描述
|
||||
symbol STRING NO
|
||||
响应示例
|
||||
[
|
||||
{
|
||||
"symbol": "DEFIUSDT",
|
||||
"time": 1589437530011, // 请求时间
|
||||
"component": "baseAsset", //成分资产
|
||||
"baseAssetList":[
|
||||
{
|
||||
"baseAsset":"BAL", // 基础资产
|
||||
"quoteAsset": "USDT", // 报价资产
|
||||
"weightInQuantity":"1.04406228", //权重(数量)
|
||||
"weightInPercentage":"0.02783900" //权重(比例)
|
||||
},
|
||||
{
|
||||
"baseAsset":"BAND",
|
||||
"quoteAsset": "USDT",
|
||||
"weightInQuantity":"3.53782729",
|
||||
"weightInPercentage":"0.03935200"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user