MCPcopy Create free account
hub / github.com/ccxt/ccxt / create_orders

Method create_orders

python/ccxt/async_support/bybit.py:4259–4345  ·  view source on GitHub ↗

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={})

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 15

is_unified_enabledMethod · 0.95
create_order_requestMethod · 0.95
get_bybit_typeMethod · 0.95
NotSupportedClass · 0.90
safe_stringMethod · 0.80
safe_valueMethod · 0.80
safe_dictMethod · 0.80
market_symbolsMethod · 0.80
safe_integerMethod · 0.80
safe_listMethod · 0.80
parse_ordersMethod · 0.80

Tested by

no test coverage detected