在Binance交易所中,一旦设置了OCO订单(即“一拖二”或“两个限价交易单,一旦其中一个成交,另一个就会被取消”的订单),需要考虑到最小名义价值(MIN_NOTIONAL)的限制。MIN_NOTIONAL是指限制交易对的最小交易金额,不能低于指定的值。
在python-binance库中,如果不符合MIN_NOTIONAL的限制,则会抛出BinanceAPIException异常,代码示例如下:
from binance.client import Client
from binance.exceptions import BinanceAPIException
api_key = 'your_api_key'
api_secret = 'your_api_secret'
client = Client(api_key, api_secret)
# 设置卖出ETH/BTC交易对的OCO订单
order = client.order_oco_sell(symbol='ETHBTC', quantity=0.5, price=0.03,
stopPrice=0.04, stopLimitPrice=0.039,
stopLimitTimeInForce='GTC')
# 判断是否符合MIN_NOTIONAL的限制
try:
order['orderListId'] = int(order['orderListId'])
order['contingencyType'] = int(order['contingencyType'])
order['listStatusType'] = int(order['listStatusType'])
order['listOrderStatus'] = int(order['listOrderStatus'])
order['transactionTime'] = int(order['transactionTime'])
order['timestamp'] = int(order['timestamp'])
for o in order['orderReports']:
if 'FAILED' in o['status']:
raise BinanceAPIException(code=-2000, msg='MIN_NOTIONAL')
except BinanceAPIException as e:
print(f'{e.code}, {e.msg}') # 输出:-2000, MIN_NOTIONAL
以上代码可以实现设置OCO订单并判断是否符合MIN_NOTIONAL的限制。