1.8 Binance_interface API 币本位合约交易账户

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.'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PYTED量化交易研究所

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值