create a list of trade orders https://bybit-exchange.github.io/docs/v5/order/batch-place :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 :param dic
(self, orders: List[OrderRequest], params={})
| 4256 | return self.extend(request, params) |
| 4257 | |
| 4258 | def create_orders(self, orders: List[OrderRequest], params={}) -> List[Order]: |
| 4259 | """ |
| 4260 | create a list of trade orders |
| 4261 | |
| 4262 | https://bybit-exchange.github.io/docs/v5/order/batch-place |
| 4263 | |
| 4264 | :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 |
| 4265 | :param dict [params]: extra parameters specific to the exchange API endpoint |
| 4266 | :returns dict: an `order structure <https://docs.ccxt.com/?id=order-structure>` |
| 4267 | """ |
| 4268 | self.load_markets() |
| 4269 | accounts = self.is_unified_enabled() |
| 4270 | isUta = accounts[1] |
| 4271 | ordersRequests = [] |
| 4272 | orderSymbols = [] |
| 4273 | for i in range(0, len(orders)): |
| 4274 | rawOrder = orders[i] |
| 4275 | marketId = self.safe_string(rawOrder, 'symbol') |
| 4276 | orderSymbols.append(marketId) |
| 4277 | type = self.safe_string(rawOrder, 'type') |
| 4278 | side = self.safe_string(rawOrder, 'side') |
| 4279 | amount = self.safe_value(rawOrder, 'amount') |
| 4280 | price = self.safe_value(rawOrder, 'price') |
| 4281 | orderParams = self.safe_dict(rawOrder, 'params', {}) |
| 4282 | orderRequest = self.create_order_request(marketId, type, side, amount, price, orderParams, isUta) |
| 4283 | del orderRequest['category'] |
| 4284 | ordersRequests.append(orderRequest) |
| 4285 | symbols = self.market_symbols(orderSymbols, None, False, True, True) |
| 4286 | market = self.market(symbols[0]) |
| 4287 | unifiedMarginStatus = self.safe_integer(self.options, 'unifiedMarginStatus', 6) |
| 4288 | category = None |
| 4289 | category, params = self.get_bybit_type('createOrders', market, params) |
| 4290 | if (category == 'inverse') and (unifiedMarginStatus < 5): |
| 4291 | raise NotSupported(self.id + ' createOrders does not allow inverse orders for non UTA2.0 account') |
| 4292 | request = { |
| 4293 | 'category': category, |
| 4294 | 'request': ordersRequests, |
| 4295 | } |
| 4296 | response = self.privatePostV5OrderCreateBatch(self.extend(request, params)) |
| 4297 | result = self.safe_dict(response, 'result', {}) |
| 4298 | data = self.safe_list(result, 'list', []) |
| 4299 | retInfo = self.safe_dict(response, 'retExtInfo', {}) |
| 4300 | codes = self.safe_list(retInfo, 'list', []) |
| 4301 | # self.extend the error with the unsuccessful orders |
| 4302 | for i in range(0, len(codes)): |
| 4303 | code = codes[i] |
| 4304 | retCode = self.safe_integer(code, 'code') |
| 4305 | if retCode != 0: |
| 4306 | data[i] = self.extend(data[i], code) |
| 4307 | # |
| 4308 | # { |
| 4309 | # "retCode":0, |
| 4310 | # "retMsg":"OK", |
| 4311 | # "result":{ |
| 4312 | # "list":[ |
| 4313 | # { |
| 4314 | # "category":"linear", |
| 4315 | # "symbol":"LTCUSDT", |
nothing calls this directly
no test coverage detected