账户管理
本节介绍如何查询账户信息、余额、持仓、订单等。
账户概览
除了在订阅中获取基本的仓位、订单和余额信息外,您还可以通过以下同步命令获取与账户相关的信息:
| 命令 | 说明 |
|---|---|
获取USDT余额(UsdtBalance) | 获取USDT余额 |
获取多种币种余额(Balance) | 获取多种币种余额 |
获取指定币种余额(BalanceByCoin) | 获取指定币种余额 |
获取持仓(Position) | 获取持仓 |
获取最大持仓(MaxPosition) | 获取最大持仓 |
获取最大杠杆(MaxLeverage) | 获取最大杠杆 |
获取保证金模式(MarginMode) | 获取保证金模式 |
设置保证金模式(SetMarginMode) | 设置保证金模式 |
获取手续费率(FeeRate) | 获取手续费率 |
设置杠杆(SetLeverage) | 设置杠杆 |
设置双向持仓(SetDualSidePosition) | 设置双向持仓 |
是否双向持仓(IsDualSidePosition) | 是否双向持仓 |
划转(Transfer) | 划转 |
获取账户信息(GetAccountInfo) | 获取账户信息 |
借币(Borrow) | 借币 |
获取借币(GetBorrowed) | 获取借币 |
还币(Repay) | 还币 |
获取借币利率(GetBorrowRate) | 获取借币利率 |
获取借币限额(GetBorrowLimit) | 获取借币限额 |
获取账户模式(GetAccountMode) | 获取账户模式 |
设置账户模式(SetAccountMode) | 设置账户模式 |
获取结算资金费率(FundingFee) | 获取结算资金费率 |
账户信息
获取USDT余额(UsdtBalance)
请求参数
无
请求示例
def get_usdt_balance():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "UsdtBalance"
}
}
balance = self.trader.publish(cmd).get('Ok', {}).get("balance", 0.0)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| asset | String | 资产名称 |
| balance | Number | 总余额 |
| available_balance | Number | 可用余额 |
| unrealized_pnl | Number | 未实现盈亏 |
响应示例
"Ok": {
"asset": "USDT",
"balance": 1000.0,
"available_balance": 900.0,
"unrealized_pnl": 100.0
}
获取多种币种余额(Balance)
请求参数 无
请求示例
def get_balance():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "Balance"
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| asset | String | 资产名称 |
| balance | Number | 总余额 |
| available_balance | Number | 可用余额 |
| unrealized_pnl | Number | 未实现盈亏 |
响应示例
"Ok": [
{
"asset": "BTC",
"balance": 1.0,
"available_balance": 0.8,
"unrealized_pnl": 0.0
},
{
"asset": "USDT",
"balance": 10000.0,
"available_balance": 8000.0,
"unrealized_pnl": 100.0
}
]
获取指定币种余额(BalanceByCoin)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
请求示例
def get_balance_by_coin():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"BalanceByCoin": "USDT"
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| asset | String | 资产名称 |
| balance | Number | 总余额 |
| available_balance | Number | 可用余额 |
| unrealized_pnl | Number | 未实现盈亏 |
响应示例
"Ok": {
"asset": "USDT",
"balance": 1000.0,
"available_balance": 900.0,
"unrealized_pnl": 100.0
}
获取持仓(Position)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| Position | String/null | 否 | 交易对名称,null表示查询所有 |
请求示例
def get_position():
# 查询给定交易对持仓
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Position": "BTC_USDT"
}
}
}
res = self.trader.publish(cmd)
# 查询所有持仓
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Position": None
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| symbol | String | 交易对名称 |
| timestamp | Number | 时间戳 |
| margin_mode | String | 保证金模式: Cross/Isolated |
| side | String | 持仓方向: Long/Short |
| leverage | Number | 杠杆倍数 |
| amount | Number | 持仓数量 |
| entry_price | Number | 开仓均价 |
| unrealized_pnl | Number | 未实现盈亏 |
响应示例
"Ok": [
{
"symbol": "BTC_USDT",
"timestamp": 1678234567000,
"margin_mode": "Cross",
"side": "Long",
"leverage": 10,
"amount": 0.1,
"entry_price": 50000.0,
"unrealized_pnl": 100.0
}
]
获取最大持仓(MaxPosition)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
| leverage | Number | 是 | 杠杆 |
请求示例
def get_max_position():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"MaxPosition": ["BTC_USDT", 10]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| long | PositionValue | 多仓最大持仓 |
| short | PositionValue | 空仓最大持仓 |
PositionValue:
| 字段 | 类型 | 描述 |
|---|---|---|
| Notional | Number | 最大持仓价值 |
| Quantity | Number | 最大持仓数量 |
响应示例
"Ok": {
"long": {
"Notional": 10000000.0
},
"short": {
"Quantity": 100.0
}
}
获取最大杠杆(MaxLeverage)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
请求示例
def get_max_leverage():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"MaxLeverage": "BTC_USDT"
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| leverage | Number | 最大杠杆 |
响应示例
"Ok": {
"leverage": 125
}
获取保证金模式(MarginMode)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
| coin | String | 是 | 保证金币种 |
请求示例
def get_margin_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"MarginMode": ["BTC_USDT", "USDT"]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| margin_mode | String | 保证金模式: Cross/Isolated |
响应示例
"Ok": "Cross"
设置保证金模式(SetMarginMode)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
| coin | String | 是 | 保证金币种 |
| margin_mode | String | 是 | 保证金模式: Cross/Isolated |
请求示例
def set_margin_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetMarginMode": ["BTC_USDT", "USDT", "Cross"]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
获取手续费率(FeeRate)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
请求示例
def get_fee_rate():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"FeeRate": "BTC_USDT"
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| taker | Number | Taker手续费率 |
| maker | Number | Maker手续费率 |
响应示例
"Ok": {
"taker": 0.0004,
"maker": 0.0002
}
设置杠杆(SetLeverage)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
| leverage | Number | 是 | 杠杆倍数 |
请求示例
def set_leverage():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetLeverage": ["BTC_USDT", 1]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
设置双向持仓(SetDualSidePosition)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| dual_side_position | Boolean | 是 | true:开启双向持仓, false:单向持仓 |
请求示例
def set_dual_side_position():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetDualSidePosition": True
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
是否双向持仓(IsDualSidePosition)
请求参数
无
请求示例
def is_dual_side_position():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "IsDualSidePosition"
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| is_dual_side | Boolean | 是否双向持仓 |
响应示例
"Ok": true
划转(Transfer)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| asset | String | 是 | 币种 |
| amount | Number | 是 | 划转数量 |
| from | String | 是 | 转出账户类型 |
| to | String | 是 | 转入账户类型 |
账户类型说明:
- Spot: 现货钱包
- UsdtFuture: U本位合约钱包
- CoinFuture: 币本位合约钱包
- Margin: 杠杆全仓钱包
- IsolatedMargin: 杠杆逐仓钱包
请求示例
def transfer():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Transfer": {
"asset": "USDT",
"amount": 1.0,
"from": "Spot",
"to": "CoinFuture"
}
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
获取账户信息(GetAccountInfo)
请求参数
无
请求示例
def get_account_info():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "GetAccountInfo"
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| total_mmr | Number | 总保证金率 |
| total_equity | Number | 总权益 |
| total_available | Number | 总可用 |
响应示例
"Ok": {
"total_mmr": 0.0,
"total_equity": 1234.56,
"total_available": 1234.56
}
借币(Borrow)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| coin | String | 是 | 币种 |
| amount | Number | 是 | 数量 |
请求示例
def borrow():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Borrow": ["USDT", 100.0]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
获取借币(GetBorrowed)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| coin | String | 是 | 币种 |
请求示例
def get_borrowed():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"GetBorrowed": "USDT"
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| borrow | Array[Borrow] | 当前借币详情 |
Borrow:
| 字段 | 类型 | 描述 |
|---|---|---|
| coin | String | 币种 |
| amount | Number | 数量 |
响应示例
"Ok": [
{
"coin": "USDT",
"amount": 100.0
}
]
还币(Repay)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| coin | String | 是 | 币种 |
| amount | Number | 是 | 数量 |
请求示例
def repay():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Repay": ["USDT", 100.0]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
获取借币利率(GetBorrowRate)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| coin | String | 否 | 币种 |
请求示例
def get_borrow_rate():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"GetBorrowRate": "USDT"
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| ccy | String | 币种 |
| rate | Number | 利率 |
响应示例
"Ok": [
{
"ccy": "USDT",
"rate": 0.0001
}
]
获取借币限额(GetBorrowLimit)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| is_vip | Boolean | 否 | 是否是vip |
| coin | String | 是 | 币种 |
请求示例
def get_borrow_limit():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"GetBorrowLimit": [None, "USDT"]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| debt | Number | 当前负债 |
| interest | Number | 当前计息 |
| coin | String | 借贷币种 |
| rate | String | 日利率 |
| borrow_limit | String | 可借贷限额 |
| vip_detail | Object | 尊享用户详情(okx) |
VipDetail 尊享用户详情:
| 字段 | 类型 | 描述 |
|---|---|---|
| pos_loan | Number | 当前账户负债占用 |
| available_loan | Number | 当前账户剩余可用 |
| used_loan | Number | 当前账户已借额度 |
响应示例
"Ok": {
"debt": 0.0,
"interest": 0.0,
"coin": "USDT",
"rate": 0.0001,
"borrow_limit": 1000.0,
"vip_detail": {
"pos_loan": 0.0,
"available_loan": 0.0,
"used_loan": 0.0
}
}
获取账户模式(GetAccountMode)
请求参数
无
请求示例
def get_account_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "GetAccountMode"
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| account_mode | String | 账户模式 |
账户模式说明:
- Classic: 初始经典账户模型
- SpotAndSwap: 现货和合约模式
- MultiCurrency: 跨币种保证金模式
- Portfolio: 组合保证金模式
响应示例
"Ok": "MultiCurrency"
设置账户模式(SetAccountMode)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| account_mode | String | 是 | 账户模式 |
请求示例
def set_account_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetAccountMode": "MultiCurrency"
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| result | String | 结果 Ok/Err |
响应示例
"Ok": null
获取结算资金费率(FundingFee)
请求参数
| 参数 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| symbol | String | 是 | 交易对名称 |
| start_time | Number | 否 | 开始时间戳 |
| end_time | Number | 否 | 结束时间戳 |
请求示例
def get_funding_fee():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"FundingFee": ["BTC_USDT", 1678234567000, 1678234667000]
}
}
}
res = self.trader.publish(cmd)
响应参数
| 字段 | 类型 | 描述 |
|---|---|---|
| symbol | String | 交易对名称 |
| timestamp | Number | 时间戳 |
| funding_fee | Number | 资金费率 |
响应示例
"Ok": [
{
"symbol": "BTC_USDT",
"timestamp": 1678234567000,
"funding_fee": 0.0001
},
{
"symbol": "BTC_USDT",
"timestamp": 1678234567000,
"funding_fee": 0.0001
}
]