Make Binance API Transactions Easier
Project description
Binance_trade 说明文档
version:1.0.4
1 Binance_trade 介绍
Biance_trade基于pbinance与binance_candle封装了现货(SPOT)、U本位(UM)与币本位(CM)中常用的函数,降低量化交易难度。
2 安装Binance_trade
pip3 install binance_trade
3 快速开始
1.获取现货现货交易BTCUSDT的价格,降价2%挂单买入,买入金额为1000USDT,挂单时间为2小时,如果超时则取消订单。
from binance_trade import BinanceSPOT
from pprint import pprint
if __name__ == '__main__':
binanceSPOT = BinanceSPOT(
key='****',
secret='****',
)
# 产品
symbol = 'BTCUSDT'
# 开仓金额
openMoney = 10000
# 购买价格
askPrice = binanceSPOT.market.get_bookTicker(symbol=symbol)['data']['askPrice'] # 卖1价格
askPrice = float(askPrice)
openPrice = askPrice * 0.98 # 降价2%
# 挂单时间
timeout = 60 * 60 * 2 # 单位秒
# 超时是否取消订单
cancel = True
# 是否堵塞模式
block = True
# 限价单开仓
result = binanceSPOT.trade.open_limit(
symbol=symbol, # 产品
openPrice=openPrice, # 开仓价格
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
timeout=timeout, # 等待订单成功的超时时间
cancel=True, # 订单超时后是否取消
)
pprint(result)
2.获取U本位合约BTCUSDT的价格,降价5%,采用逐仓、10倍杠杆、开仓金额1000USDT挂单,挂单时间为2小时,如果超时则取消。
采用异步的方式管理这个订单,并设置订单成功或失败后的回调函数
from binance_trade import BinanceUM
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
binanceUM = BinanceUM(
key='****',
secret='****'
)
# 产品
symbol = 'BTCUSDT'
# 开仓金额
openMoney = 10000
# 购买价格
askPrice = binanceUM.market.get_bookTicker(symbol=symbol)['data']['askPrice'] # 卖1价格
askPrice = float(askPrice)
openPrice = askPrice * 0.95 # 降价5%
# 限价单开仓
binanceUM.trade.open_limit(
symbol=symbol, # 产品
openPrice=openPrice, # 开仓价格
marginType='ISOLATED', # 保证金模式: ISOLATED: 逐仓 CROSSED: 全仓
positionSide='LONG', # 持仓方向 LONG: 多单 SHORT: 空单
leverage=10, # 开仓金额
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
quantity=None, # 开仓数量 None:用openMoney计算可以购买的最大数量
block=True, # 是否以堵塞的模式
timeout=60 * 60 * 2, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
3.对于U本位合约以当前BTCUSDT的价格,止盈20%挂单买入平空,超时时间2小时,超时后取消订单,并设置回调函数。
from binance_trade import BinanceUM
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
binanceUM = BinanceUM(
key='****',
secret='****'
)
# 产品
symbol = 'BTCUSDT'
# 限价单平仓
binanceUM.trade.close_limit(
symbol=symbol, # 产品
marginType='ISOLATED', # 保证金模式: ISOLATED: 逐仓 CROSSED: 全仓
positionSide='LONG', # 持仓方向 LONG: 多单 SHORT: 空单
closePrice=None, # 平仓价格 平仓价格closePrice与止盈率tpRate必须添加一个 优先级closePrice > tpRate
tpRate=0.2, # 止盈率
# 平多 positionSide="LONG": closePrice = askPrice * (1 + abs(tpRate))
# 平空 positionSide="SHORT": closePrice = askPrice * (1 - abs(tpRate))
quantity='all', # 平仓数量,'all' 表示全部
block=True, # 是否以堵塞的模式
timeout=60 * 60 * 2, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 平仓成功触发的回调函数
errorback=errorback, # 平仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
4 现货产品 BinanceSPOT
4.1 现货账户
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_account | 获取账户信息 |
| get_balances | 获取全部现货余额 |
| get_balance | 获取单个现货余额 |
from binance_trade import BinanceSPOT
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
# 获取账户信息
account = binanceSPOT.account.get_account()
pprint(account)
# 获取全部现货余额
balances = binanceSPOT.account.get_balances()
pprint(balances)
# 获取单个现货余额
balance = binanceSPOT.account.get_balance(
symbol='BTCUSDT',
base_asset='USDT'
) # 等价于: # balances = binanceSPOT.account.get_balance(asset='BTC')
pprint(balance)
4.2 现货行情
4.2.1 现货交易规则信息
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_exchangeInfos | 获取全部交易规则与交易对 |
| get_exchangeInfo | 获取单个交易规则与交易对 |
| get_symbols_trading_on | 获取可以交易的产品列表 |
| get_symbols_trading_off | 获取不可交易的产品列表 |
from binance_trade import BinanceSPOT
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
# 获取全部交易规则与交易对
exchangeInfos = binanceSPOT.market.get_exchangeInfos()
pprint(exchangeInfos)
# 获取单个交易规则与交易对
exchangeInfo = binanceSPOT.market.get_exchangeInfo(symbol='BTCUSDT')
pprint(exchangeInfo)
# 获取可以交易的产品列表
symbols_trading_on = binanceSPOT.market.get_symbols_trading_on()
pprint(symbols_trading_on)
# 获取不可交易的产品列表
get_symbols_trading_off = binanceSPOT.market.get_symbols_trading_off()
pprint(get_symbols_trading_off)
4.2.2 现货实时价格
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_bookTickersMap | 获取全部产品的最优挂单字典(包含不可交易的产品) |
| get_bookTickers | 获取全部产品的最优挂单列表(包含不可交易的产品) |
| get_bookTicker | 获取单个产品的最优挂单 |
| get_tickerPricesMap | 获取全部产品的最新价格字典(包含不可交易的产品) |
| get_tickerPrices | 获取全部产品的最新价格列表(包含不可交易的产品) |
| get_tickerPrice | 获取单个产品的最新价格 |
| get_depth | 获取单个产品的深度交易 |
from binance_trade import BinanceSPOT
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
# 获取全部产品的最优挂单
bookTickersMap = binanceSPOT.market.get_bookTickersMap()
pprint(bookTickersMap)
bookTickers = binanceSPOT.market.get_bookTickers()
pprint(bookTickers)
# 获取单个产品的最优挂单
bookTicker = binanceSPOT.market.get_bookTicker(symbol='BTCUSDT')
pprint(bookTicker)
# 获取全部产品的最新价格
tickerPricesMap = binanceSPOT.market.get_tickerPricesMap()
pprint(tickerPricesMap)
tickerPrices = binanceSPOT.market.get_tickerPrices()
pprint(tickerPrices)
# 获取单个产品的最新价格
tickerPrice = binanceSPOT.market.get_tickerPrice(symbol='BTCUSDT')
pprint(tickerPrice)
# 获取单个产品的深度交易
depth = binanceSPOT.market.get_depth(symbol='BTCUSDT', limit=100)
pprint(depth)
4.2.3 现货历史K线
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_history_candle | 获取产品的历史K线数据 |
| get_history_candle_latest | 获取产品指定数量的最新历史K线数据 |
| get_history_candle_by_date | 获取产品指定日期的历史K线数据 |
from binance_trade import BinanceSPOT
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
# 获取产品的历史K线数据
history_candle = binanceSPOT.market.get_history_candle(
symbol='BTCUSDT',
start='2023-01-01 00:00:00',
end='2023-01-01 23:59:00',
bar='1m',
)
pprint(history_candle)
# 获取产品指定数量的最新历史K线数据
history_candle_latest = binanceSPOT.market.get_history_candle_latest(
symbol='BTCUSDT',
length=1440,
bar='1m',
)
pprint(history_candle_latest)
# 获取产品指定日期的历史K线数据
history_candle_by_date = binanceSPOT.market.get_history_candle_by_date(
symbol='BTCUSDT',
date='2023-01-01',
bar='1m',
)
pprint(history_candle_by_date)
4.3 现货交易
4.3.1 现货基础订单
便捷函数:
| 函数名 | 说明 |
|---|---|
| set_order | 普通下单购买 |
| get_order | 查询订单 |
| get_openOrders | 查看全部当前全部挂单 |
| get_openOrder | 查询单个产品当前挂单 |
| cancel_order | 撤销订单 |
| wait_order_FILLED | 等待订单成交 |
from binance_trade import BinanceSPOT
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
# 普通下单购买
set_order = binanceSPOT.trade.set_order(
symbol='xxx',
side='BUY',
type='LIMIT',
timeInForce='GTC',
quantity='xxx',
price='xxx',
)
pprint(set_order)
# 查询订单
order = binanceSPOT.trade.get_order(
symbol='xxx',
orderId='xxx'
)
pprint(order)
# 查看全部当前全部挂单
openOrders = binanceSPOT.trade.get_openOrders()
pprint(openOrders)
# 查询单个产品当前挂单
openOrder = binanceSPOT.trade.get_openOrder(symbol='xxx')
pprint(openOrder)
# 撤销订单
binanceSPOT.trade.cancel_order(
symbol='xxx',
orderId='xxx',
)
# 等待订单成交
binanceSPOT.trade.wait_order_FILLED(
symbol='xxx',
orderId='xxx',
)
4.3.2 现货下单价格与数量
便捷函数:
| 函数名 | 说明 |
|---|---|
| round_quantity | 圆整下单数量 |
| round_price | 圆整开仓价格 |
| get_quantity | 根据开仓金额、开仓价格与杠杆计算最大可开仓数量 |
| quantity_to_f | 将下单数量转化为字符串 |
| price_to_f | 将下单价格转化为字符串 |
from pprint import pprint
from binance_trade import BinanceSPOT
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
# 圆整下单数量
round_quantity_result = binanceSPOT.trade.round_quantity(
quantity=100.00023234234234,
symbol='MANAUSDT',
)
pprint(round_quantity_result)
# 圆整下单价格
round_price_result = binanceSPOT.trade.round_price(
price=20.123123123,
symbol='MANAUSDT',
type='FLOOR', # FLOOR:向下圆整 CEIL:向上圆整
)
pprint(round_price_result)
# 根据开仓金额、开仓价格与杠杆计算最大可开仓数量
get_quantity_result = binanceSPOT.trade.get_quantity(
openPrice=2.123123,
openMoney=20,
symbol='MANAUSDT',
leverage=1
)
pprint(get_quantity_result)
# 将下单数量转化为字符串
quantity_to_f_result = binanceSPOT.trade.quantity_to_f(
quantity=get_quantity_result['data'],
symbol='MANAUSDT',
)
pprint(quantity_to_f_result)
# 将下单价格转化为字符串
price_to_f_result = binanceSPOT.trade.price_to_f(
price=round_price_result['data'],
symbol='MANAUSDT',
)
pprint(price_to_f_result)
4.3.3 现货限价单开仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| open_limit | 限价单开仓 |
from binance_trade import BinanceSPOT
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
symbol = 'PHAUSDT' # 测试产品
openMoney = 15 # 购买金额
askPrice = binanceSPOT.market.get_bookTicker(symbol=symbol)['data']['askPrice'] # 卖1价格
askPrice = float(askPrice)
openPrice = askPrice * 0.8 # 购买价格为卖1价的8折,测试挂单
# 限价单开仓
binanceSPOT.trade.open_limit(
symbol=symbol, # 产品
openPrice=openPrice, # 开仓价格
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
quantity=None, # 开仓数量 None:用openMoney计算可以购买的最大数量
block=True, # 是否以堵塞的模式
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
4.3.4 现货市价单开仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| open_market | 市价单开仓 |
from binance_trade import BinanceSPOT
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
symbol = 'xxxx' # 测试产品 可以选择:PHAUSDT
openMoney = 15 # 购买金额
# 市价单开仓
binanceSPOT.trade.open_market(
symbol=symbol, # 产品
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个
quantity=None, # 开仓数量 None:用openMoney计算可以购买的最大数量
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=False, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
4.3.5 现货限价单平仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| close_limit | 限价单平仓 |
from binance_trade import BinanceSPOT
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
symbol = 'PHAUSDT' # 测试产品
base_asset = 'USDT' # 产品的基础货币
# 限价单平仓
binanceSPOT.trade.close_limit(
symbol=symbol, # 产品
base_asset=base_asset, # 产品的基础货币
closePrice=None, # 平仓价格 平仓价格closePrice与止盈率tpRate必须添加一个 优先级closePrice > tpRate
tpRate=0.05, # 以(当前实时价格 * (1 + tpRate)) 作为平仓价格
quantity='all', # 平仓数量,'all' 表示全部
block=True, # 是否以堵塞的模式
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 平仓成功触发的回调函数
errorback=errorback, # 平仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
4.3.6 现货市价单平仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| close_market | 市价单平仓 |
from binance_trade import BinanceSPOT
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceSPOT = BinanceSPOT(key=key, secret=secret)
symbol = 'xxxx' # 测试产品 可以选择:PHAUSDT
base_asset = 'USDT' # 产品的基础货币
# 市价单平仓
binanceSPOT.trade.close_market(
symbol=symbol, # 产品
base_asset=base_asset, # 产品的基础货币
quantity='all', # 平仓数量,'all' 表示全部
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 平仓成功触发的回调函数
errorback=errorback, # 平仓失败触发的回调函数
newThread=False, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5 U本位合约 BinanceUM
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_account | 获取账户信息 |
| get_balances | 获取账户全部余额 |
| get_balance | 获取账户单个货币余额 |
| set_leverage | 调整开仓杠杆 |
| set_marginType | 更改持仓模式 |
| get_positions | 获取全部产品的持仓信息 |
| get_position | 获取单个产品的持仓信息 |
5.1 U本位账户
from binance_trade import BinanceUM
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
# 获取账户信息
account = binanceUM.account.get_account()
pprint(account)
# 获取账户全部余额
balances = binanceUM.account.get_balances()
pprint(balances)
# 获取账户单个货币余额
balance = binanceUM.account.get_balance(asset='BTC')
pprint(balance)
# 调整开仓杠杆
leverage = binanceUM.account.set_leverage(symbol='BTCUSDT', leverage=1)
pprint(leverage)
# 更改持仓模式
marginType = binanceUM.account.set_marginType(symbol='BTCUSDT', marginType='ISOLATED')
pprint(marginType)
# 获取全部产品的持仓信息
positions = binanceUM.account.get_positions()
pprint(positions)
# 获取单个产品的持仓信息
position = binanceUM.account.get_position(symbol='BTCUSDT')
pprint(position)
5.2 U本位行情
5.2.1 U本位交易规则信息
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_exchangeInfos | 获取全部交易规则与交易对 |
| get_exchangeInfo | 获取单个交易规则与交易对 |
| get_symbols_trading_on | 获取可以交易的产品列表 |
| get_symbols_trading_off | 获取不可交易的产品列表 |
from binance_trade import BinanceUM
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
# 获取全部交易规则与交易对
exchangeInfos = binanceUM.market.get_exchangeInfos()
pprint(exchangeInfos)
# 获取单个交易规则与交易对
exchangeInfo = binanceUM.market.get_exchangeInfo(symbol='BTCUSDT')
pprint(exchangeInfo)
# 获取可以交易的产品列表
symbols_trading_on = binanceUM.market.get_symbols_trading_on()
pprint(symbols_trading_on)
# 获取不可交易的产品列表
get_symbols_trading_off = binanceUM.market.get_symbols_trading_off()
pprint(get_symbols_trading_off)
5.2.2 U本位实时价格
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_bookTickersMap | 获取全部产品的最优挂单字典(包含不可交易的产品) |
| get_bookTickers | 获取全部产品的最优挂单列表(包含不可交易的产品) |
| get_bookTicker | 获取单个产品的最优挂单 |
| get_tickerPricesMap | 获取全部产品的最新价格字典(包含不可交易的产品) |
| get_tickerPrices | 获取全部产品的最新价格列表(包含不可交易的产品) |
| get_tickerPrice | 获取单个产品的最新价格 |
| get_depth | 获取单个产品的深度交易 |
from binance_trade import BinanceUM
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
# 获取全部产品的最优挂单
bookTickersMap = binanceUM.market.get_bookTickersMap()
pprint(bookTickersMap)
bookTickers = binanceUM.market.get_bookTickers()
pprint(bookTickers)
# 获取单个产品的最优挂单
bookTicker = binanceUM.market.get_bookTicker(symbol='BTCUSDT')
pprint(bookTicker)
# 获取全部产品的最新价格
tickerPricesMap = binanceUM.market.get_tickerPricesMap()
pprint(tickerPricesMap)
tickerPrices = binanceUM.market.get_tickerPrices()
pprint(tickerPrices)
# 获取单个产品的最新价格
tickerPrice = binanceUM.market.get_tickerPrice(symbol='BTCUSDT')
pprint(tickerPrice)
# 获取单个产品的深度交易
depth = binanceUM.market.get_depth(symbol='BTCUSDT', limit=100)
pprint(depth)
5.2.3 U本位历史K线
便捷函数:
| 函数名 | 说明 |
|---|---|
| get_history_candle | 获取产品的历史K线数据 |
| get_history_candle_latest | 获取产品指定数量的最新历史K线数据 |
| get_history_candle_by_date | 获取产品指定日期的历史K线数据 |
from binance_trade import BinanceUM
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
# 获取产品的历史K线数据
history_candle = binanceUM.market.get_history_candle(
symbol='BTCUSDT',
start='2023-01-01 00:00:00',
end='2023-01-01 23:59:00',
bar='1m',
)
pprint(history_candle)
# 获取产品指定数量的最新历史K线数据
history_candle_latest = binanceUM.market.get_history_candle_latest(
symbol='BTCUSDT',
length=1440,
bar='1m',
)
pprint(history_candle_latest)
# 获取产品指定日期的历史K线数据
history_candle_by_date = binanceUM.market.get_history_candle_by_date(
symbol='BTCUSDT',
date='2023-01-01',
bar='1m',
)
pprint(history_candle_by_date)
5.3 U本位交易
5.3.1 U本位基础订单
便捷函数:
| 函数名 | 说明 |
|---|---|
| set_order | 普通下单购买 |
| get_order | 查询订单 |
| get_openOrders | 查看全部当前全部挂单 |
| get_openOrder | 查询单个产品当前挂单 |
| cancel_order | 撤销订单 |
| wait_order_FILLED | 等待订单成交 |
from binance_trade import BinanceUM
from pprint import pprint
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
# 普通下单购买
set_order = binanceUM.trade.set_order(
symbol='xxx',
side='BUY',
type='LIMIT',
positionSide='LONG',
timeInForce='GTC',
quantity='xxx',
price='xxx',
)
pprint(set_order)
# 查询订单
order = binanceUM.trade.get_order(
symbol='xxx',
orderId='xxx'
)
pprint(order)
# 查看全部当前全部挂单
openOrders = binanceUM.trade.get_openOrders()
pprint(openOrders)
# 查询单个产品当前挂单
openOrder = binanceUM.trade.get_openOrder(symbol='xxx')
pprint(openOrder)
# 撤销订单
binanceUM.trade.cancel_order(
symbol='xxx',
orderId='xxx',
)
# 等待订单成交
binanceUM.trade.wait_order_FILLED(
symbol='xxx',
orderId='xxx',
)
5.3.2 U本位下单价格与数量
便捷函数:
| 函数名 | 说明 |
|---|---|
| round_quantity | 圆整下单数量 |
| round_price | 圆整开仓价格 |
| get_quantity | 根据开仓金额、开仓价格与杠杆计算最大可开仓数量 |
| quantity_to_f | 将下单数量转化为字符串 |
| price_to_f | 将下单价格转化为字符串 |
from pprint import pprint
from binance_trade import BinanceUM
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM= BinanceUM(key=key, secret=secret)
# 圆整下单数量
round_quantity_result = binanceUM.trade.round_quantity(
quantity=100.00023234234234,
symbol='MANAUSDT',
)
pprint(round_quantity_result)
# 圆整下单价格
round_price_result = binanceUM.trade.round_price(
price=20.123123123,
symbol='MANAUSDT',
type='FLOOR', # FLOOR:向下圆整 CEIL:向上圆整
)
pprint(round_price_result)
# 根据开仓金额、开仓价格与杠杆计算最大可开仓数量
get_quantity_result = binanceUM.trade.get_quantity(
openPrice=2.123123,
openMoney=20,
symbol='MANAUSDT',
leverage=1
)
pprint(get_quantity_result)
# 将下单数量转化为字符串
quantity_to_f_result = binanceUM.trade.quantity_to_f(
quantity=get_quantity_result['data'],
symbol='MANAUSDT',
)
pprint(quantity_to_f_result)
# 将下单价格转化为字符串
price_to_f_result = binanceUM.trade.price_to_f(
price=round_price_result['data'],
symbol='MANAUSDT',
)
pprint(price_to_f_result)
5.3.3 U本位限价单开仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| open_limit | 限价单开仓 |
from binance_trade import BinanceUM
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
symbol = 'BATUSDT' # 测试产品
openMoney = 15 # 购买金额
askPrice = binanceUM.market.get_bookTicker(symbol=symbol)['data']['askPrice'] # 卖1价格
askPrice = float(askPrice)
openPrice = askPrice * 0.8 # 购买价格为卖1价的8折,测试挂单
# 限价单开仓
binanceUM.trade.open_limit(
symbol=symbol, # 产品
openPrice=openPrice, # 开仓价格
marginType='ISOLATED', # 保证金模式: ISOLATED: 逐仓 CROSSED: 全仓
positionSide='LONG', # 持仓方向 LONG: 多单 SHORT: 空单
leverage=1, # 开仓杠杆
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个 优先级:quantity > openMoney
quantity=None, # 开仓数量 None:用openMoney计算可以购买的最大数量
block=True, # 是否以堵塞的模式
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5.3.4 U本位市价单开仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| open_market | 市价单开仓 |
from binance_trade import BinanceUM
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <open_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
symbol = 'xxxx' # 测试产品 可以选择:BATUSDT
openMoney = 15 # 购买金额
# 市价单开仓
binanceUM.trade.open_market(
symbol=symbol, # 产品
marginType='ISOLATED', # 保证金模式: ISOLATED: 逐仓 CROSSED: 全仓
positionSide='LONG', # 持仓方向 LONG: 多单 SHORT: 空单
openMoney=openMoney, # 开仓金额 开仓金额openMoney和开仓数量quantity必须输入其中一个
leverage=1, # 开仓杠杆
quantity=None, # 开仓数量 None:用openMoney计算可以购买的最大数量
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 开仓成功触发的回调函数
errorback=errorback, # 开仓失败触发的回调函数
newThread=False, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5.3.5 U本位限单价平仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| close_limit | 限价单平仓 |
from binance_trade import BinanceUM
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_limit中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
symbol = 'BATUSDT' # 测试产品
# 限价单平仓
binanceUM.trade.close_limit(
symbol=symbol, # 产品
marginType='ISOLATED', # 保证金模式: ISOLATED: 逐仓 CROSSED: 全仓
positionSide='LONG', # 持仓方向 LONG: 多单 SHORT: 空单
closePrice=None, # 平仓价格 平仓价格closePrice与止盈率tpRate必须添加一个 优先级closePrice > tpRate
tpRate=0.05, # 止盈率
# 平多 positionSide="LONG": closePrice = askPrice * (1 + abs(tpRate))
# 平空 positionSide="SHORT": closePrice = askPrice * (1 - abs(tpRate))
quantity='all', # 平仓数量,'all' 表示全部
block=True, # 是否以堵塞的模式
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 平仓成功触发的回调函数
errorback=errorback, # 平仓失败触发的回调函数
newThread=True, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
5.3.6 U本位市价单平仓
便捷函数:
| 函数名 | 说明 |
|---|---|
| close_market | 市价单平仓 |
from binance_trade import BinanceUM
from pprint import pprint
# 成功触发的回调函数
def callback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('callback')
pprint(information)
# 失败触发的回调函数
def errorback(information):
'''
:param information: 交易过程信息字典
information = {
'symbol': <产品ID>,
'status': <订单状态>,
'meta': <传递过来的参数>,
'request_param': <发送下单请求的具体参数>,
'func_param': <close_market中的参数>,
'get_order_result': <获取订单状态的结果>,
'set_order_result': <下单提交的结果>,
'error_result': <异常信息>,
'cancel_result': <取消订单的结果>,
}
'''
print('errorback')
pprint(information)
if __name__ == '__main__':
key = '****'
secret = '****'
binanceUM = BinanceUM(key=key, secret=secret)
symbol = 'xxxx' # 测试产品 可以选择:BATUSDT
# 市价单平仓
binanceUM.trade.close_market(
symbol=symbol, # 产品
marginType='ISOLATED', # 保证金模式: ISOLATED: 逐仓 CROSSED: 全仓
positionSide='LONG', # 持仓方向 LONG: 多单 SHORT: 空单
quantity='all', # 平仓数量,'all' 表示全部
timeout=10, # 等待订单成功的超时时间
delay=0.2, # 间隔多少秒检测订单是否成功
cancel=True, # 订单超时后是否取消
callback=callback, # 平仓成功触发的回调函数
errorback=errorback, # 平仓失败触发的回调函数
newThread=False, # 是否开启一个新的线程维护这个订单
newClientOrderId='', # 客户自定义订单ID
meta={}, # 向回调函数中传递的参数字典
)
6 币本位合约 BinanceCM
币本位合约的使用方式与U本位相同,类名为BinanceCM
from binance_trade import BinanceCM
if __name__ == '__main__':
binanceCM = BinanceCM(
key='****',
secret='****',
)
# binanceCM.account.xxxx
# binanceCM.market.xxxx
# binanceCM.trade.xxxx
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file binance_trade-1.0.4.tar.gz.
File metadata
- Download URL: binance_trade-1.0.4.tar.gz
- Upload date:
- Size: 44.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e616d4e32e25c94008ce1e5fe571a90224f5d5e29f5bdb6cf481c53156ffc22
|
|
| MD5 |
6c8993587dc154da2f4c7e019bfaceb0
|
|
| BLAKE2b-256 |
e21497298787b4a80339bf562bf5316aae9073b93b4c267aa8f3e3794daf0c76
|
File details
Details for the file binance_trade-1.0.4-py3-none-any.whl.
File metadata
- Download URL: binance_trade-1.0.4-py3-none-any.whl
- Upload date:
- Size: 48.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee315cdb6ae5943e290c3703a6da6b1bee3efddf90c822533cab09eb78eaf195
|
|
| MD5 |
a137e987b7f77138f210b31fe36dce9f
|
|
| BLAKE2b-256 |
adc5c0a3ddda331ed1cb9029ac8da16fa78a477702a7e38e00bb790724363df3
|