create a list of trade orders(all orders should be of the same symbol) https://www.bitget.com/api-doc/spot/trade/Batch-Place-Orders https://www.bitget.com/api-doc/contract/trade/Batch-Order https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Order
(self, orders: List[OrderRequest], params={})
| 5358 | return self.parse_orders(data, market) |
| 5359 | |
| 5360 | def create_orders(self, orders: List[OrderRequest], params={}): |
| 5361 | """ |
| 5362 | create a list of trade orders(all orders should be of the same symbol) |
| 5363 | |
| 5364 | https://www.bitget.com/api-doc/spot/trade/Batch-Place-Orders |
| 5365 | https://www.bitget.com/api-doc/contract/trade/Batch-Order |
| 5366 | https://www.bitget.com/api-doc/margin/isolated/trade/Isolated-Batch-Order |
| 5367 | https://www.bitget.com/api-doc/margin/cross/trade/Cross-Batch-Order |
| 5368 | https://www.bitget.com/api-doc/uta/trade/Place-Batch |
| 5369 | |
| 5370 | :param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params |
| 5371 | :param dict [params]: extra parameters specific to the api endpoint |
| 5372 | :param boolean [params.uta]: set to True for the unified trading account(uta), defaults to False |
| 5373 | :returns dict: an `order structure <https://docs.ccxt.com/?id=order-structure>` |
| 5374 | """ |
| 5375 | self.load_markets() |
| 5376 | uta = None |
| 5377 | uta, params = self.handle_option_and_params(params, 'createOrders', 'uta', False) |
| 5378 | if uta: |
| 5379 | return self.create_uta_orders(orders, params) |
| 5380 | ordersRequests = [] |
| 5381 | symbol = None |
| 5382 | marginMode = None |
| 5383 | for i in range(0, len(orders)): |
| 5384 | rawOrder = orders[i] |
| 5385 | marketId = self.safe_string(rawOrder, 'symbol') |
| 5386 | if symbol is None: |
| 5387 | symbol = marketId |
| 5388 | else: |
| 5389 | if symbol != marketId: |
| 5390 | raise BadRequest(self.id + ' createOrders() requires all orders to have the same symbol') |
| 5391 | type = self.safe_string(rawOrder, 'type') |
| 5392 | side = self.safe_string(rawOrder, 'side') |
| 5393 | amount = self.safe_value(rawOrder, 'amount') |
| 5394 | price = self.safe_value(rawOrder, 'price') |
| 5395 | orderParams = self.safe_value(rawOrder, 'params', {}) |
| 5396 | marginResult = self.handle_margin_mode_and_params('createOrders', orderParams) |
| 5397 | currentMarginMode = marginResult[0] |
| 5398 | if currentMarginMode is not None: |
| 5399 | if marginMode is None: |
| 5400 | marginMode = currentMarginMode |
| 5401 | else: |
| 5402 | if marginMode != currentMarginMode: |
| 5403 | raise BadRequest(self.id + ' createOrders() requires all orders to have the same margin mode(isolated or cross)') |
| 5404 | orderRequest = self.create_order_request(marketId, type, side, amount, price, orderParams) |
| 5405 | ordersRequests.append(orderRequest) |
| 5406 | market = self.market(symbol) |
| 5407 | request = { |
| 5408 | 'symbol': market['id'], |
| 5409 | 'orderList': ordersRequests, |
| 5410 | } |
| 5411 | response = None |
| 5412 | if (market['swap']) or (market['future']): |
| 5413 | if marginMode is None: |
| 5414 | marginMode = 'cross' |
| 5415 | marginModeRequest = 'crossed' if (marginMode == 'cross') else 'isolated' |
| 5416 | request['marginMode'] = marginModeRequest |
| 5417 | request['marginCoin'] = market['settleId'] |
nothing calls this directly
no test coverage detected