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
binance_trade-1.0.4.tar.gz
(44.2 kB
view details)
Built Distribution
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 |