2.9 Binance_interface APP 现货交易-限单价平仓
Binance_interface APP 现货交易-限单价平仓
- Github地址
- PyTed量化交易研究院
量化交易研究群(VX) = py_ted
目录
- Binance_interface APP 现货交易-限单价平仓
- 1. APP 现货交易-限单价平仓函数总览
- 2. 模型实例化
- 3. 同步 非堵塞 固定价格平仓(卖出)
- 4. 同步 非堵塞 止盈价格平仓(卖出)
- 5. 同步 堵塞 止盈价格平仓(卖出) 超时取消
- 6. 同步 堵塞 止盈价格平仓(卖出) 回调函数
- 7. 异步 堵塞 止盈价格平仓(卖出) 回调函数
1. APP 现货交易-限单价平仓函数总览
方法 | 解释 |
---|---|
close_limit | 限价单卖出 |
2. 模型实例化
from binance_interface.app import BinanceSPOT
from pprint import pprint
# 转发:需搭建转发服务器,可参考:https://github.com/pyted/binance_resender
proxy_host = None
key = 'xxxx'
secret = 'xxxx'
binanceSPOT = BinanceSPOT(
key=key, secret=secret,
proxy_host=proxy_host
)
trade = binanceSPOT.trade
3. 同步 非堵塞 固定价格平仓(卖出)
# block = False
close_limit3 = trade.close_limit(
symbol='MANAUSDT', # 产品
closePrice=1, # 平仓价格 closePrice 和 tpRate必须填写其中一个
# tpRate=0.1, # 挂单止盈率
quantity=5, # 平仓数量(交易货币)
block=False, # 是否以堵塞的模式
meta={}, # 向回调函数中传递的参数字典
)
pprint(close_limit3)
输出:
>>> {'cancel_result': None,
>>> 'error_result': None,
>>> 'func_param': {'base_asset': None,
>>> 'block': False,
>>> 'callback': None,
>>> 'cancel': True,
>>> 'closePrice': 1,
>>> 'delay': 0.2,
>>> 'errorback': None,
>>> 'meta': {},
>>> 'newClientOrderId': '',
>>> 'newThread': False,
>>> 'quantity': 5,
>>> 'symbol': 'MANAUSDT',
>>> 'timeout': 60,
>>> 'tpRate': None},
>>> 'get_order_result': None,
>>> 'meta': {},
>>> 'request_param': {'newClientOrderId': '',
>>> 'price': '1.0000',
>>> 'quantity': '5',
>>> 'side': 'SELL',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT'},
>>> 'set_order_result': {'code': 200,
>>> 'data': {'clientOrderId': 'm7UdoWyzjkl80q1rgzJ19U',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'fills': [],
>>> 'orderId': 2207181640,
>>> 'orderListId': -1,
>>> 'origQty': '5.00000000',
>>> 'price': '1.00000000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'NEW',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105539772,
>>> 'type': 'LIMIT',
>>> 'workingTime': 1706105539772},
>>> 'msg': ''},
>>> 'status': None,
>>> 'symbol': 'MANAUSDT'}
4. 同步 非堵塞 止盈价格平仓(卖出)
# 设置tpRate = 0.1,止盈率为10%,止盈率以当前最新价格为基准
close_limit4 = trade.close_limit(
symbol='MANAUSDT', # 产品
# closePrice=10, # 平仓价格 closePrice 和 tpRate必须填写其中一个
tpRate=0.1, # 挂单止盈率
quantity=15, # 平仓数量(交易货币)
block=False, # 是否以堵塞的模式
meta={}, # 向回调函数中传递的参数字典
)
pprint(close_limit4)
输出:
>>> {'cancel_result': None,
>>> 'error_result': None,
>>> 'func_param': {'base_asset': None,
>>> 'block': False,
>>> 'callback': None,
>>> 'cancel': True,
>>> 'closePrice': None,
>>> 'delay': 0.2,
>>> 'errorback': None,
>>> 'meta': {},
>>> 'newClientOrderId': '',
>>> 'newThread': False,
>>> 'quantity': 15,
>>> 'symbol': 'MANAUSDT',
>>> 'timeout': 60,
>>> 'tpRate': 0.1},
>>> 'get_order_result': None,
>>> 'meta': {},
>>> 'request_param': {'newClientOrderId': '',
>>> 'price': '0.4794',
>>> 'quantity': '15',
>>> 'side': 'SELL',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT'},
>>> 'set_order_result': {'code': 200,
>>> 'data': {'clientOrderId': 'G03pZe5KataOJ7C1DS3gmn',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'fills': [],
>>> 'orderId': 2207182516,
>>> 'orderListId': -1,
>>> 'origQty': '15.00000000',
>>> 'price': '0.47940000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'NEW',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105588896,
>>> 'type': 'LIMIT',
>>> 'workingTime': 1706105588896},
>>> 'msg': ''},
>>> 'status': None,
>>> 'symbol': 'MANAUSDT'}
5. 同步 堵塞 止盈价格平仓(卖出) 超时取消
# quantity = 'all' 表示全部可交易货币
# 设置block、timeout、cancel
close_limit5 = trade.close_limit(
symbol='MANAUSDT', # 产品
base_asset='USDT', # 交易基础货币
# closePrice=10, # 平仓价格 closePrice 和 tpRate必须填写其中一个
tpRate=0.1, # 挂单止盈率
meta={}, # 向回调函数中传递的参数字典
quantity='all', # 平仓数量
block=True, # 是否堵塞
timeout=5, # 等待订单成功的超时时间
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 未完全成交是否取消订单
)
pprint(close_limit5)
输出:
>>> {'cancel_result': {'code': 200,
>>> 'data': {'clientOrderId': 'f9NGIgY5NlaFdSWebznwiD',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'orderId': 2207183228,
>>> 'orderListId': -1,
>>> 'origClientOrderId': '9fWIbWOlGAKCy3dXeWCkFW',
>>> 'origQty': '68.00000000',
>>> 'price': '0.47900000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'CANCELED',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105634381,
>>> 'type': 'LIMIT'},
>>> 'msg': ''},
>>> 'error_result': None,
>>> 'func_param': {'base_asset': 'USDT',
>>> 'block': True,
>>> 'callback': None,
>>> 'cancel': True,
>>> 'closePrice': None,
>>> 'delay': 0.2,
>>> 'errorback': None,
>>> 'meta': {},
>>> 'newClientOrderId': '',
>>> 'newThread': False,
>>> 'quantity': 'all',
>>> 'symbol': 'MANAUSDT',
>>> 'timeout': 5,
>>> 'tpRate': 0.1},
>>> 'get_order_result': {'code': 200,
>>> 'data': {'clientOrderId': '9fWIbWOlGAKCy3dXeWCkFW',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'icebergQty': '0.00000000',
>>> 'isWorking': True,
>>> 'orderId': 2207183228,
>>> 'orderListId': -1,
>>> 'origQty': '68.00000000',
>>> 'origQuoteOrderQty': '0.00000000',
>>> 'price': '0.47900000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'CANCELED',
>>> 'stopPrice': '0.00000000',
>>> 'symbol': 'MANAUSDT',
>>> 'time': 1706105628694,
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'updateTime': 1706105634381,
>>> 'workingTime': 1706105628694},
>>> 'msg': ''},
>>> 'meta': {},
>>> 'request_param': {'newClientOrderId': '',
>>> 'price': '0.4790',
>>> 'quantity': '68',
>>> 'side': 'SELL',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT'},
>>> 'set_order_result': {'code': 200,
>>> 'data': {'clientOrderId': '9fWIbWOlGAKCy3dXeWCkFW',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'fills': [],
>>> 'orderId': 2207183228,
>>> 'orderListId': -1,
>>> 'origQty': '68.00000000',
>>> 'price': '0.47900000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'NEW',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105628694,
>>> 'type': 'LIMIT',
>>> 'workingTime': 1706105628694},
>>> 'msg': ''},
>>> 'status': 'CANCELED',
>>> 'symbol': 'MANAUSDT'}
6. 同步 堵塞 止盈价格平仓(卖出) 回调函数
# 执行成功回调
def callback6(information):
print('callback')
pprint(information)
# 执行错误回调
def errorback6(information):
print('errorback')
pprint(information)
# 设置callback与errorback
close_limit6 = trade.close_limit(
symbol='MANAUSDT', # 产品
base_asset='USDT', # 交易基础货币
# closePrice=1000, # 平仓价格 closePrice 和 tpRate必须填写其中一个
tpRate=0.1, # 挂单止盈率
quantity='all', # 平仓数量
block=True, # 是否堵塞
timeout=5, # 等待订单成功的超时时间
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 未完全成交是否取消订单
meta={}, # 向回调函数中传递的参数字典
callback=callback6, # 开仓成功触发的回调函数
errorback=errorback6, # 开仓失败触发的回调函数
)
输出:
>>> callback
>>> {'cancel_result': {'code': 200,
>>> 'data': {'clientOrderId': 'q4zAFZ9vVezIcXRDX72MV5',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'orderId': 2207183792,
>>> 'orderListId': -1,
>>> 'origClientOrderId': 'kjcGDdhQV2J38b3vVOPxrX',
>>> 'origQty': '68.00000000',
>>> 'price': '0.47900000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'CANCELED',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105681137,
>>> 'type': 'LIMIT'},
>>> 'msg': ''},
>>> 'error_result': None,
>>> 'func_param': {'base_asset': 'USDT',
>>> 'block': True,
>>> 'callback': <function callback6 at 0x7fede0b008b0>,
>>> 'cancel': True,
>>> 'closePrice': None,
>>> 'delay': 0.2,
>>> 'errorback': <function errorback6 at 0x7fede0b009d0>,
>>> 'meta': {},
>>> 'newClientOrderId': '',
>>> 'newThread': False,
>>> 'quantity': 'all',
>>> 'symbol': 'MANAUSDT',
>>> 'timeout': 5,
>>> 'tpRate': 0.1},
>>> 'get_order_result': {'code': 200,
>>> 'data': {'clientOrderId': 'kjcGDdhQV2J38b3vVOPxrX',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'icebergQty': '0.00000000',
>>> 'isWorking': True,
>>> 'orderId': 2207183792,
>>> 'orderListId': -1,
>>> 'origQty': '68.00000000',
>>> 'origQuoteOrderQty': '0.00000000',
>>> 'price': '0.47900000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'CANCELED',
>>> 'stopPrice': '0.00000000',
>>> 'symbol': 'MANAUSDT',
>>> 'time': 1706105674825,
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'updateTime': 1706105681137,
>>> 'workingTime': 1706105674825},
>>> 'msg': ''},
>>> 'meta': {},
>>> 'request_param': {'newClientOrderId': '',
>>> 'price': '0.4790',
>>> 'quantity': '68',
>>> 'side': 'SELL',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT'},
>>> 'set_order_result': {'code': 200,
>>> 'data': {'clientOrderId': 'kjcGDdhQV2J38b3vVOPxrX',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'fills': [],
>>> 'orderId': 2207183792,
>>> 'orderListId': -1,
>>> 'origQty': '68.00000000',
>>> 'price': '0.47900000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'NEW',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105674825,
>>> 'type': 'LIMIT',
>>> 'workingTime': 1706105674825},
>>> 'msg': ''},
>>> 'status': 'CANCELED',
>>> 'symbol': 'MANAUSDT'}
7. 异步 堵塞 止盈价格平仓(卖出) 回调函数
# 执行成功回调
def callback7(information):
print('thread callback')
pprint(information)
# 执行错误回调
def errorback7(information):
print('thread errorback')
pprint(information)
# 设置newThread=True
close_limit7 = trade.close_limit(
symbol='MANAUSDT', # 产品
base_asset='USDT', # 交易基础货币
# closePrice=1000, # 平仓价格 closePrice 和 tpRate必须填写其中一个
tpRate=0.1, # 挂单止盈率
quantity='all', # 平仓数量
block=True, # 是否堵塞
timeout=5, # 等待订单成功的超时时间
delay=0.2, # 检测订单状态的间隔 (秒)
cancel=True, # 未完全成交是否取消订单
callback=callback7, # 开仓成功触发的回调函数
errorback=errorback7, # 开仓失败触发的回调函数
meta={}, # 向回调函数中传递的参数字典
newThread=True, # 是否开启一个新的线程维护这个订单
)
print(close_limit7)
print('-' * 30)
输出:
>>> <Thread(Thread-5, started 123145588416512)>
>>> ------------------------------
>>> thread callback
>>> {'cancel_result': {'code': 200,
>>> 'data': {'clientOrderId': 'oqQITJhGlWgjHRaCK0TreO',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'orderId': 2207184973,
>>> 'orderListId': -1,
>>> 'origClientOrderId': 'bMTfXGOjnbhzbIuuiQyGcC',
>>> 'origQty': '68.00000000',
>>> 'price': '0.47920000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'CANCELED',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105778149,
>>> 'type': 'LIMIT'},
>>> 'msg': ''},
>>> 'error_result': None,
>>> 'func_param': {'base_asset': 'USDT',
>>> 'block': True,
>>> 'callback': <function callback7 at 0x7ff4808cf8b0>,
>>> 'cancel': True,
>>> 'closePrice': None,
>>> 'delay': 0.2,
>>> 'errorback': <function errorback7 at 0x7ff49097d790>,
>>> 'meta': {},
>>> 'newClientOrderId': '',
>>> 'newThread': True,
>>> 'quantity': 'all',
>>> 'symbol': 'MANAUSDT',
>>> 'timeout': 5,
>>> 'tpRate': 0.1},
>>> 'get_order_result': {'code': 200,
>>> 'data': {'clientOrderId': 'bMTfXGOjnbhzbIuuiQyGcC',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'icebergQty': '0.00000000',
>>> 'isWorking': True,
>>> 'orderId': 2207184973,
>>> 'orderListId': -1,
>>> 'origQty': '68.00000000',
>>> 'origQuoteOrderQty': '0.00000000',
>>> 'price': '0.47920000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'CANCELED',
>>> 'stopPrice': '0.00000000',
>>> 'symbol': 'MANAUSDT',
>>> 'time': 1706105772757,
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT',
>>> 'updateTime': 1706105778149,
>>> 'workingTime': 1706105772757},
>>> 'msg': ''},
>>> 'meta': {},
>>> 'request_param': {'newClientOrderId': '',
>>> 'price': '0.4792',
>>> 'quantity': '68',
>>> 'side': 'SELL',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'type': 'LIMIT'},
>>> 'set_order_result': {'code': 200,
>>> 'data': {'clientOrderId': 'bMTfXGOjnbhzbIuuiQyGcC',
>>> 'cummulativeQuoteQty': '0.00000000',
>>> 'executedQty': '0.00000000',
>>> 'fills': [],
>>> 'orderId': 2207184973,
>>> 'orderListId': -1,
>>> 'origQty': '68.00000000',
>>> 'price': '0.47920000',
>>> 'selfTradePreventionMode': 'EXPIRE_MAKER',
>>> 'side': 'SELL',
>>> 'status': 'NEW',
>>> 'symbol': 'MANAUSDT',
>>> 'timeInForce': 'GTC',
>>> 'transactTime': 1706105772757,
>>> 'type': 'LIMIT',
>>> 'workingTime': 1706105772757},
>>> 'msg': ''},
>>> 'status': 'CANCELED',
>>> 'symbol': 'MANAUSDT'}