跳到主要内容

账户管理

本节介绍如何查询账户信息、余额、持仓、订单等。

账户概览

除了在订阅中获取基本的仓位、订单和余额信息外,您还可以通过以下同步命令获取与账户相关的信息:

命令说明
获取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)

响应参数

字段类型描述
assetString资产名称
balanceNumber总余额
available_balanceNumber可用余额
unrealized_pnlNumber未实现盈亏

响应示例

"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)

响应参数

字段类型描述
assetString资产名称
balanceNumber总余额
available_balanceNumber可用余额
unrealized_pnlNumber未实现盈亏

响应示例

"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)

请求参数

参数类型是否必须描述
symbolString交易对名称

请求示例

def get_balance_by_coin():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"BalanceByCoin": "USDT"
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
assetString资产名称
balanceNumber总余额
available_balanceNumber可用余额
unrealized_pnlNumber未实现盈亏

响应示例

"Ok": {
"asset": "USDT",
"balance": 1000.0,
"available_balance": 900.0,
"unrealized_pnl": 100.0
}

获取持仓(Position)

请求参数

参数类型是否必须描述
PositionString/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)

响应参数

字段类型描述
symbolString交易对名称
timestampNumber时间戳
margin_modeString保证金模式: Cross/Isolated
sideString持仓方向: Long/Short
leverageNumber杠杆倍数
amountNumber持仓数量
entry_priceNumber开仓均价
unrealized_pnlNumber未实现盈亏

响应示例

"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)

请求参数

参数类型是否必须描述
symbolString交易对名称
leverageNumber杠杆

请求示例

def get_max_position():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"MaxPosition": ["BTC_USDT", 10]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
longPositionValue多仓最大持仓
shortPositionValue空仓最大持仓

PositionValue:

字段类型描述
NotionalNumber最大持仓价值
QuantityNumber最大持仓数量

响应示例

"Ok": {
"long": {
"Notional": 10000000.0
},
"short": {
"Quantity": 100.0
}
}

获取最大杠杆(MaxLeverage)

请求参数

参数类型是否必须描述
symbolString交易对名称

请求示例

def get_max_leverage():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"MaxLeverage": "BTC_USDT"
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
leverageNumber最大杠杆

响应示例

"Ok": {
"leverage": 125
}

获取保证金模式(MarginMode)

请求参数

参数类型是否必须描述
symbolString交易对名称
coinString保证金币种

请求示例

def get_margin_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"MarginMode": ["BTC_USDT", "USDT"]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
margin_modeString保证金模式: Cross/Isolated

响应示例

"Ok": "Cross"

设置保证金模式(SetMarginMode)

请求参数

参数类型是否必须描述
symbolString交易对名称
coinString保证金币种
margin_modeString保证金模式: Cross/Isolated

请求示例

def set_margin_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetMarginMode": ["BTC_USDT", "USDT", "Cross"]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

获取手续费率(FeeRate)

请求参数

参数类型是否必须描述
symbolString交易对名称

请求示例

def get_fee_rate():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"FeeRate": "BTC_USDT"
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
takerNumberTaker手续费率
makerNumberMaker手续费率

响应示例

"Ok": {
"taker": 0.0004,
"maker": 0.0002
}

设置杠杆(SetLeverage)

请求参数

参数类型是否必须描述
symbolString交易对名称
leverageNumber杠杆倍数

请求示例

def set_leverage():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetLeverage": ["BTC_USDT", 1]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

设置双向持仓(SetDualSidePosition)

请求参数

参数类型是否必须描述
dual_side_positionBooleantrue:开启双向持仓, false:单向持仓

请求示例

def set_dual_side_position():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetDualSidePosition": True
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

是否双向持仓(IsDualSidePosition)

请求参数

请求示例

def is_dual_side_position():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "IsDualSidePosition"
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
is_dual_sideBoolean是否双向持仓

响应示例

"Ok": true

划转(Transfer)

请求参数

参数类型是否必须描述
assetString币种
amountNumber划转数量
fromString转出账户类型
toString转入账户类型

账户类型说明:

  • 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)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

获取账户信息(GetAccountInfo)

请求参数

请求示例

def get_account_info():
cmd = {
"account_id": 0,
"cmd": {
"Sync": "GetAccountInfo"
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
total_mmrNumber总保证金率
total_equityNumber总权益
total_availableNumber总可用

响应示例

"Ok": {
"total_mmr": 0.0,
"total_equity": 1234.56,
"total_available": 1234.56
}

借币(Borrow)

请求参数

参数类型是否必须描述
coinString币种
amountNumber数量

请求示例

def borrow():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Borrow": ["USDT", 100.0]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

获取借币(GetBorrowed)

请求参数

参数类型是否必须描述
coinString币种

请求示例

def get_borrowed():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"GetBorrowed": "USDT"
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
borrowArray[Borrow]当前借币详情

Borrow:

字段类型描述
coinString币种
amountNumber数量

响应示例

"Ok": [
{
"coin": "USDT",
"amount": 100.0
}
]

还币(Repay)

请求参数

参数类型是否必须描述
coinString币种
amountNumber数量

请求示例

def repay():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"Repay": ["USDT", 100.0]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

获取借币利率(GetBorrowRate)

请求参数

参数类型是否必须描述
coinString币种

请求示例

def get_borrow_rate():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"GetBorrowRate": "USDT"
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
ccyString币种
rateNumber利率

响应示例

"Ok": [
{
"ccy": "USDT",
"rate": 0.0001
}
]

获取借币限额(GetBorrowLimit)

请求参数

参数类型是否必须描述
is_vipBoolean是否是vip
coinString币种

请求示例

def get_borrow_limit():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"GetBorrowLimit": [None, "USDT"]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
debtNumber当前负债
interestNumber当前计息
coinString借贷币种
rateString日利率
borrow_limitString可借贷限额
vip_detailObject尊享用户详情(okx)

VipDetail 尊享用户详情:

字段类型描述
pos_loanNumber当前账户负债占用
available_loanNumber当前账户剩余可用
used_loanNumber当前账户已借额度

响应示例

"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_modeString账户模式

账户模式说明:

  • Classic: 初始经典账户模型
  • SpotAndSwap: 现货和合约模式
  • MultiCurrency: 跨币种保证金模式
  • Portfolio: 组合保证金模式

响应示例

"Ok": "MultiCurrency"

设置账户模式(SetAccountMode)

请求参数

参数类型是否必须描述
account_modeString账户模式

请求示例

def set_account_mode():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"SetAccountMode": "MultiCurrency"
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
resultString结果 Ok/Err

响应示例

"Ok": null

获取结算资金费率(FundingFee)

请求参数

参数类型是否必须描述
symbolString交易对名称
start_timeNumber开始时间戳
end_timeNumber结束时间戳

请求示例

def get_funding_fee():
cmd = {
"account_id": 0,
"cmd": {
"Sync": {
"FundingFee": ["BTC_USDT", 1678234567000, 1678234667000]
}
}
}
res = self.trader.publish(cmd)

响应参数

字段类型描述
symbolString交易对名称
timestampNumber时间戳
funding_feeNumber资金费率

响应示例

"Ok": [
{
"symbol": "BTC_USDT",
"timestamp": 1678234567000,
"funding_fee": 0.0001
},
{
"symbol": "BTC_USDT",
"timestamp": 1678234567000,
"funding_fee": 0.0001
}
]