如何通过API查询bitget钱包历史成交记录?
流量次数: 作者:小编 发布时间:2025-03-20 18:23:44
一、API接口说明
1. 接口地址
现货交易记录
GET /api/v2/spot/trade/fills
合约交易记录
GET /api/v2/mix/order/fills
bitget钱包官网https://www.bitkeep-web3.com
2. 核心请求参数
参数名 类型 必填 说明
symbol string 是 交易对(如BTCUSDT_SPBL)
startTime long 否 起始时间戳(毫秒)
endTime long 否 结束时间戳(毫秒)
limit int 否 返回条数(默认100,最大500)
二、Python代码实现
1. 基础查询(现货最近100笔成交)
python
复制
import requests
import time
import hmac
import hashlib
API_KEY = "YOUR_API_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
def generate_sign(timestamp, method, path, body):
message = str(timestamp) + method + path + body
return hmac.new(SECRET_KEY.encode(), message.encode(), hashlib.sha256).hexdigest()
# 请求参数
symbol = "BTCUSDT_SPBL" # 现货BTC/USDT
end_time = int(time.time() * 1000)
start_time = end_time - 24*60*60*1000 # 24小时前
headers = {
"ACCESS-KEY": API_KEY,
"ACCESS-SIGN": generate_sign(end_time, "GET", "/api/v2/spot/trade/fills", ""),
"ACCESS-TIMESTAMP": str(end_time),
"Content-Type": "application/json"
}
response = requests.get(
"https://api.bitget.com/api/v2/spot/trade/fills",
params={"symbol": symbol, "startTime": start_time, "endTime": end_time},
headers=headers
)
print(response.json())
2. 分页获取全部历史记录
python
复制
def get_all_fills(symbol, days=30):
all_fills = []
end_time = int(time.time() * 1000)
start_time = end_time - days*24*60*60*1000
while True:
params = {"symbol": symbol, "limit": 500, "endTime": end_time}
response = requests.get(..., params=params).json()
fills = response["data"]
if not fills:
break
all_fills.extend(fills)
end_time = fills[-1]["createTime"] - 1 # 下一批次截止时间
return all_fills
三、返回数据结构解析
现货成交记录字段说明
json
复制
{
"code": "00000",
"data": [
{
"accountId": "123456",
"symbol": "BTCUSDT_SPBL",
"orderId": "7890123456",
"fillId": "7890123456_1",
"orderType": "market", // 订单类型:limit/market
"side": "buy", // 方向:buy/sell
"fillPrice": "43210.5",// 成交价
"fillQty": "0.01", // 成交量
"fillTotalAmount": "432.105", // 成交总额
"fee": "0.86421", // 手续费
"feeCoin": "USDT", // 手续费币种
"createTime": 1629990000000
}
]
}
合约成交记录额外字段
json
复制
{
"posSide": "long", // 持仓方向:long/short
"pnl": "5.32", // 盈亏金额
"tradeSide": "open", // 开仓/平仓:open/close
}
四、高级查询技巧
1. 时间范围优化
精确查询:通过startTime与endTime缩小范围提升速度
自然日切割:按天分段请求避免单次返回数据过大
2. 多交易对批量查询
python
复制
symbols = ["BTCUSDT_SPBL", "ETHUSDT_SPBL"]
all_results = {}
for symbol in symbols:
all_results[symbol] = get_all_fills(symbol)
3. 数据持久化存储
python
复制
import pandas as pd
df = pd.DataFrame(all_fills)
df['createTime'] = pd.to_datetime(df['createTime'], unit='ms')
df.to_parquet("trade_history.parquet") # 高性能列式存储
五、常见问题处理
问题现象 解决方案
返回40006权限错误 检查API密钥是否授予read权限
高频查询触发429限速 添加time.sleep(0.1)延迟请求
跨时区时间转换错误 使用pytz库处理时间戳本地化
手续费字段精度丢失 使用Decimal类型处理浮点数运算
六、安全建议
权限最小化:API密钥仅开启read权限
敏感数据脱敏:日志中过滤orderId等敏感字段
HTTPS加密:禁止使用HTTP明文传输
IP白名单:限制API调用源IP