Binance_interface API 币本位合约交易账户
1. API 币本位合约交易账户接口总览
方法 | 解释 | Path |
---|---|---|
set_positionSide_dual | 更改持仓模式 | /dapi/v1/positionSide/dual |
get_positionSide_dual | 查询持仓模式 | /dapi/v1/positionSide/dual |
set_order | 下单 | /dapi/v1/order |
set_order_test | 测试下单接口 (TRADE) | /dapi/v1/order/test |
alter_order | 修改订单 | /dapi/v1/order |
set_batchOrders | 批量下单 | /dapi/v1/batchOrders |
alter_batchOrders | 批量修改订单 | /dapi/v1/batchOrders |
get_orderAmendment | 查询订单修改历史 | /dapi/v1/orderAmendment |
get_order | 查询订单 | /dapi/v1/order |
cancel_order | 撤销订单 | /dapi/v1/order |
cancel_allOpenOrders | 撤销全部订单 | /dapi/v1/allOpenOrders |
cancel_batchOrders | 批量撤销订单 | /dapi/v1/batchOrders |
set_countdownCancelAll | 倒计时撤销所有订单 | /dapi/v1/countdownCancelAll |
get_openOrder | 查询当前挂单 | /dapi/v1/openOrder |
get_openOrders | 查看当前全部挂单 | /dapi/v1/openOrders |
get_allOrders | 查询所有订单(包括历史订单) | /dapi/v1/allOrders |
get_balance | 账户余额 | /dapi/v1/balance |
get_account | 账户信息 | /dapi/v1/account |
set_leverage | 调整开仓杠杆 | /dapi/v1/leverage |
set_marginType | 变换逐全仓模式 | /dapi/v1/marginType |
set_positionMargin | 调整逐仓保证金 | /dapi/v1/positionMargin |
get_positionMargin_history | 逐仓保证金变动历史 | /dapi/v1/positionMargin/history |
get_positionRisk | 用户持仓风险 | /dapi/v1/positionRisk |
get_userTrades | 账户成交历史 | /dapi/v1/userTrades |
get_income | 获取账户损益资金流水 | /dapi/v1/income |
get_leverageBracket_by_pair | 标的交易对默认杠杆分层标准 (USER_DATA) | /dapi/v2/leverageBracket |
get_leverageBracket_by_symbol | 交易对杠杆分层标准 (USER_DATA) | /dapi/v2/leverageBracket |
get_forceOrders | 用户强平单历史 | /dapi/v1/forceOrders |
get_adlQuantile | 持仓ADL队列估算 | /dapi/v1/adlQuantile |
get_commissionRate | 用户手续费率 | /dapi/v1/commissionRate |
get_income_asyn | 获取合约资金流水下载Id | /dapi/v1/income/asyn |
get_income_asyn_id | 通过下载Id获取合约资金流水下载链接 | /dapi/v1/income/asyn/id |
2. 模型实例化
from binance_interface.api import CM
from binance_interface.app.utils import eprint
# 转发:需搭建转发服务器,可参考:https://github.com/pyted/binance_resender
proxy_host = None
key = 'xxxx'
secret = 'xxxx'
cm = CM(
key=key, secret=secret,
proxy_host=proxy_host
)
accountTrade = cm.accountTrade
3. 账户相关
3.1 账户余额V2 get_balance
balance_result = accountTrade.get_balance()
eprint(balance_result, data_length=5)
输出:
>>> {'code': 200,
>>> 'data': [{'accountAlias': 'FzTiAusRuXmYTisR',
>>> 'asset': 'ATOM',
>>> 'balance': '0.00000000',
>>> 'withdrawAvailable': '0.00000000',
>>> 'updateTime': 0,
>>> '...': '......'},
>>> {'accountAlias': 'FzTiAusRuXmYTisR',
>>> 'asset': 'LINK',
>>> 'balance': '0.00000000',
>>> 'withdrawAvailable': '0.00000000',
>>> 'updateTime': 0,
>>> '...': '......'},
>>> {'accountAlias': 'FzTiAusRuXmYTisR',
>>> 'asset': 'XRP',
>>> 'balance': '0.00000000',
>>> 'withdrawAvailable': '0.00000000',
>>> 'updateTime': 0,
>>> '...': '......'},
>>> {'accountAlias': 'FzTiAusRuXmYTisR',
>>> 'asset': 'LTC',
>>> 'balance': '0.00000000',
>>> 'withdrawAvailable': '0.00000000',
>>> 'updateTime': 0,
>>> '...': '......'},
>>> {'accountAlias': 'FzTiAusRuXmYTisR',
>>> 'asset': 'ROSE',
>>> 'balance': '0.00000000',
>>> 'withdrawAvailable': '0.00000000',
>>> 'updateTime': 0,
>>> '...': '......'},
>>> '......'],
>>> 'msg': ''}
3.2 账户信息V2 get_account
account_result = accountTrade.get_account()
eprint(account_result)
输出:
>>> {'code': 200,
>>> 'data': {'feeTier': 0,
>>> 'canTrade': True,
>>> 'canDeposit': True,
>>> 'canWithdraw': True,
>>> 'updateTime': 0,
>>> 'assets': [{'asset': 'APE',
>>> 'walletBalance': '0.00000000',
>>> 'unrealizedProfit': '0.00000000',
>>> 'marginBalance': '0.00000000',
>>> 'maintMargin': '0.00000000',
>>> '...': '......'},
>>> {'asset': 'FTM',
>>> 'walletBalance': '0.00000000',
>>> 'unrealizedProfit': '0.00000000',
>>> 'marginBalance': '0.00000000',
>>> 'maintMargin': '0.00000000',
>>> '...': '......'},
>>> {'asset': 'TRX',
>>> 'walletBalance': '0.00000000',
>>> 'unrealizedProfit': '0.00000000',
>>> 'marginBalance': '0.00000000',
>>> 'maintMargin': '0.00000000',
>>> '...': '......'},
>>> {'asset': 'NEAR',
>>> 'walletBalance': '0.00000000',
>>> 'unrealizedProfit': '0.00000000',
>>> 'marginBalance': '0.00000000',
>>> 'maintMargin': '0.00000000',
>>> '...': '......'},
>>> {'asset': 'LUNA',
>>> 'walletBalance': '0.00000000',
>>> 'unrealizedProfit': '0.00000000',
>>> 'marginBalance': '0.00000000',
>>> 'maintMargin': '0.00000000',
>>> '...': '......'},
>>> '......'],
>>> 'positions': [{'symbol': 'ALGOUSD_PERP',
>>> 'initialMargin': '0',
>>> 'maintMargin': '0',
>>> 'unrealizedProfit': '0.00000000',
>>> 'positionInitialMargin': '0',
>>> '...': '......'},
>>> {'symbol': 'ALGOUSD_PERP',
>>> 'initialMargin': '0',
>>> 'maintMargin': '0',
>>> 'unrealizedProfit': '0.00000000',
>>> 'positionInitialMargin': '0',
>>> '...': '......'},
>>> {'symbol': 'ALGOUSD_PERP',
>>> 'initialMargin': '0',
>>> 'maintMargin': '0',
>>> 'unrealizedProfit': '0.00000000',
>>> 'positionInitialMargin': '0',
>>> '...': '......'},
>>> {'symbol': 'ENSUSD_PERP',
>>> 'initialMargin': '0',
>>> 'maintMargin': '0',
>>> 'unrealizedProfit': '0.00000000',
>>> 'positionInitialMargin': '0',
>>> '...': '......'},
>>> {'symbol': 'ENSUSD_PERP',
>>> 'initialMargin': '0',
>>> 'maintMargin': '0',
>>> 'unrealizedProfit': '0.00000000',
>>> 'positionInitialMargin': '0',
>>> '...': '......'},
>>> '......']},
>>> 'msg': ''}
3.3 用户手续费率 get_commissionRate
commissionRate_result = accountTrade.get_commissionRate(symbol='ETHUSD_PERP')
eprint(commissionRate_result)
输出:
>>> {'code': 200,
>>> 'data': {'symbol': 'ETHUSD_PERP', 'makerCommissionRate': '0.000200', 'takerCommissionRate': '0.000500'},
>>> 'msg': ''}
3.4 账户成交历史 get_userTrades
userTrade_result = accountTrade.get_userTrades(symbol='ETHUSD_PERP')
eprint(userTrade_result, data_length=2, length=20)
输出:
>>> {'code': 200,
>>> 'data': [{'symbol': 'ETHUSD_PERP',
>>> 'id': 685068357,
>>> 'orderId': 67341315779,
>>> 'pair': 'ETHUSD',
>>> 'side': 'SELL',
>>> 'price': '2291.66',
>>> 'qty': '1',
>>> 'realizedPnl': '0',
>>> 'marginAsset': 'ETH',
>>> 'baseQty': '0.00436365',
>>> 'commission': '0.00000218',
>>> 'commissionAsset': 'ETH',
>>> 'time': 1703344228754,
>>> 'positionSide': 'SHORT',
>>> 'buyer': False,
>>> 'maker': False},
>>> {'symbol': 'ETHUSD_PERP',
>>> 'id': 685068387,
>>> 'orderId': 67341329490,
>>> 'pair': 'ETHUSD',
>>> 'side': 'BUY',
>>> 'price': '2291.32',
>>> 'qty': '1',
>>> 'realizedPnl': '0',
>>> 'marginAsset': 'ETH',
>>> 'baseQty': '0.00436430',
>>> 'commission': '0.00000218',
>>> 'commissionAsset': 'ETH',
>>> 'time': 1703344262863,
>>> 'positionSide': 'LONG',
>>> 'buyer': True,
>>> 'maker': False},
>>> '......'],
>>> 'msg': ''}
4. 持仓与杠杆
4.1 更改持仓模式 set_positionSide_dual
# "true": 双向持仓模式;"false": 单向持仓模式
# 如果已经是该持仓模式,返回:{'code': -4059, 'msg': 'No need to change position side.'}
accountTrade.set_positionSide_dual(dualSidePosition=True)
输出:
>>> {'code': -4059, 'msg': 'No need to change position side.'}
4.2 查询持仓模式 get_positionSide_dual
accountTrade.get_positionSide_dual()
输出:
>>> {'code': 200, 'data': {'dualSidePosition': True}, 'msg': ''}
4.3 变换逐全仓模式 set_marginType
# 保证金模式 ISOLATED(逐仓), CROSSED(全仓)
# 如果已经是该模式,返回{'code': -4046, 'msg': 'No need to change margin type.'}
accountTrade.set_marginType(symbol='ETHUSD_PERP', marginType='ISOLATED')
输出:
>>> {'code': -4046, 'msg': 'No need to change margin type.'}
4.4 调整开仓杠杆 set_leverage
accountTrade.set_leverage(symbol='ETHUSD_PERP', leverage=1)
输出:
>>> {'code': 200,
>>> 'data': {'symbol': 'ETHUSD_PERP', 'leverage': 1, 'maxQty': '50000'},
>>> 'msg': ''}
5. 交易与订单
5.1 下单 set_order
5.1.1 限单价开仓
# 开多
set_order_result = accountTrade.set_order(
symbol='ETHUSD_PERP',
price='2000',
quantity='1',
side='BUY',
type='LIMIT',
timeInForce='GTC',
positionSide='LONG',
)
eprint(set_order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610442187,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'CLLRMwe23TQ8P5wukVP2Hl',
>>> 'price': '2000',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'reduceOnly': False,
>>> 'closePosition': False,
>>> 'side': 'BUY',
>>> 'positionSide': 'LONG',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'LIMIT',
>>> 'updateTime': 1706246830608},
>>> 'msg': ''}
5.1.2 市单价开仓
# 开空
set_order_result = accountTrade.set_order(
symbol='ETHUSD_PERP',
quantity='1',
side='SELL',
type='MARKET',
positionSide='SHORT',
)
eprint(set_order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610458314,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'qajOGO6Z7jpWW7xpccTKlr',
>>> 'price': '0',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'MARKET',
>>> 'reduceOnly': False,
>>> 'closePosition': False,
>>> 'side': 'SELL',
>>> 'positionSide': 'SHORT',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'MARKET',
>>> 'updateTime': 1706246838640},
>>> 'msg': ''}
5.1.3 限单价平仓
# 平多
set_order_result = accountTrade.set_order(
symbol='ETHUSD_PERP',
price='2500',
quantity='1',
side='SELL',
type='LIMIT',
timeInForce='GTC',
positionSide='LONG',
)
eprint(set_order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610674285,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'iJr8aKn4ihHghIrUxM6HGz',
>>> 'price': '2500',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'reduceOnly': True,
>>> 'closePosition': False,
>>> 'side': 'SELL',
>>> 'positionSide': 'LONG',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'LIMIT',
>>> 'updateTime': 1706247026725},
>>> 'msg': ''}
5.1.4 市单价平仓
# 平空
set_order_result = accountTrade.set_order(
symbol='ETHUSD_PERP',
quantity='1',
side='BUY',
type='MARKET',
positionSide='SHORT',
)
eprint(set_order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610682867,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'A7Ac9oiN6Uis0vc4HBrc6p',
>>> 'price': '0',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'MARKET',
>>> 'reduceOnly': True,
>>> 'closePosition': False,
>>> 'side': 'BUY',
>>> 'positionSide': 'SHORT',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'MARKET',
>>> 'updateTime': 1706247044607},
>>> 'msg': ''}
5.2 当前挂单 get_openOrders
openOrderList_result = accountTrade.get_openOrders(symbol='ETHUSD_PERP')
eprint(openOrderList_result)
输出:
>>> {'code': 200,
>>> 'data': [{'orderId': 70610674285,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'iJr8aKn4ihHghIrUxM6HGz',
>>> '...': '......'},
>>> {'orderId': 70610442187,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'CLLRMwe23TQ8P5wukVP2Hl',
>>> '...': '......'}],
>>> 'msg': ''}
5.3 查询订单 get_order
order_result = accountTrade.get_order(
symbol='ETHUSD_PERP',
orderId='70610674285',
)
eprint(order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610674285,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'iJr8aKn4ihHghIrUxM6HGz',
>>> 'price': '2500',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'reduceOnly': True,
>>> 'closePosition': False,
>>> 'side': 'SELL',
>>> 'positionSide': 'LONG',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'LIMIT',
>>> 'time': 1706247026725,
>>> 'updateTime': 1706247026725},
>>> 'msg': ''}
5.4 修改订单 alter_order
alter_order_result = accountTrade.alter_order(
symbol='ETHUSD_PERP',
orderId='70610674285',
price='2600',
side='SELL',
quantity='1',
)
eprint(alter_order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610674285,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'iJr8aKn4ihHghIrUxM6HGz',
>>> 'price': '2600',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'reduceOnly': True,
>>> 'closePosition': False,
>>> 'side': 'SELL',
>>> 'positionSide': 'LONG',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'LIMIT',
>>> 'updateTime': 1706247087696},
>>> 'msg': ''}
5.5 批量下单 set_batchOrders
set_batchOrders_result = accountTrade.set_batchOrders(
batchOrders=[
dict(symbol='ETHUSD_PERP', price='1500', quantity='1', side='BUY', type='LIMIT', timeInForce='GTC',
positionSide='LONG', ),
dict(symbol='ETHUSD_PERP', price='1600', quantity='1', side='BUY', type='LIMIT', timeInForce='GTC',
positionSide='LONG', ),
]
)
eprint(set_batchOrders_result)
输出:
>>> {'code': 200,
>>> 'data': [{'orderId': 70610709872,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'vNxmIN08X2UakcOkI2OrfG0',
>>> '...': '......'},
>>> {'orderId': 70610709873,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'NEW',
>>> 'clientOrderId': 'N02rKwVjOc5SlRtWWVt5eK1',
>>> '...': '......'}],
>>> 'msg': ''}
5.6 撤销订单 cancel_order
cancel_order_result = accountTrade.cancel_order(
symbol='ETHUSD_PERP',
orderId='70610674285'
)
eprint(cancel_order_result)
输出:
>>> {'code': 200,
>>> 'data': {'orderId': 70610674285,
>>> 'symbol': 'ETHUSD_PERP',
>>> 'pair': 'ETHUSD',
>>> 'status': 'CANCELED',
>>> 'clientOrderId': 'iJr8aKn4ihHghIrUxM6HGz',
>>> 'price': '2600',
>>> 'avgPrice': '0.00',
>>> 'origQty': '1',
>>> 'executedQty': '0',
>>> 'cumQty': '0',
>>> 'cumBase': '0',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'reduceOnly': True,
>>> 'closePosition': False,
>>> 'side': 'SELL',
>>> 'positionSide': 'LONG',
>>> 'stopPrice': '0',
>>> 'workingType': 'CONTRACT_PRICE',
>>> 'priceProtect': False,
>>> 'origType': 'LIMIT',
>>> 'updateTime': 1706247105009},
>>> 'msg': ''}
5.7 撤销单一交易对的所有挂单 cancel_allOpenOrders
cancel_openOrders_result = accountTrade.cancel_allOpenOrders(symbol='ETHUSD_PERP')
eprint(cancel_openOrders_result)
输出:
>>> {'code': 200, 'msg': 'The operation of cancel all open order is done.'}