create a list of trade orders https://huobiapi.github.io/docs/spot/v1/en/#place-a-batch-of-orders https://huobiapi.github.io/docs/dm/v1/en/#place-a-batch-of-orders https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#place-a-batch-of-orders https://www.
(self, orders: List[OrderRequest], params={})
| 5363 | return self.parse_order(result, market) |
| 5364 | |
| 5365 | async def create_orders(self, orders: List[OrderRequest], params={}): |
| 5366 | """ |
| 5367 | create a list of trade orders |
| 5368 | |
| 5369 | https://huobiapi.github.io/docs/spot/v1/en/#place-a-batch-of-orders |
| 5370 | https://huobiapi.github.io/docs/dm/v1/en/#place-a-batch-of-orders |
| 5371 | https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#place-a-batch-of-orders |
| 5372 | https://www.htx.com/en-us/opend/newApiPages/?id=8cb89359-77b5-11ed-9966-1958935dae1 |
| 5373 | |
| 5374 | :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 |
| 5375 | :param dict [params]: extra parameters specific to the exchange API endpoint |
| 5376 | :returns dict: an `order structure <https://docs.ccxt.com/?id=order-structure>` |
| 5377 | """ |
| 5378 | await self.load_markets() |
| 5379 | ordersRequests = [] |
| 5380 | symbol = None |
| 5381 | market = 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 | market = self.market(symbol) |
| 5405 | orderRequest = None |
| 5406 | if market['spot']: |
| 5407 | orderRequest = await self.create_spot_order_request(marketId, type, side, amount, price, orderParams) |
| 5408 | else: |
| 5409 | orderRequest = self.create_contract_order_request(marketId, type, side, amount, price, orderParams) |
| 5410 | orderRequest = self.omit(orderRequest, 'marginMode') |
| 5411 | ordersRequests.append(orderRequest) |
| 5412 | request = {} |
| 5413 | response = None |
| 5414 | if self.safe_bool(market, 'spot'): |
| 5415 | response = await self.privatePostOrderBatchOrders(ordersRequests) |
| 5416 | else: |
| 5417 | if self.safe_bool(market, 'linear'): |
| 5418 | response = await self.contractPrivatePostV5TradeBatchOrders(ordersRequests) |
| 5419 | elif self.safe_bool(market, 'inverse'): |
| 5420 | request['orders_data'] = ordersRequests |
| 5421 | if self.safe_bool(market, 'swap'): |
| 5422 | response = await self.contractPrivatePostSwapApiV1SwapBatchorder(request) |