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

Method create_spot_order

python/ccxt/xt.py:2383–2435  ·  view source on GitHub ↗
(self, symbol: str, type, side, amount, price=None, params={})

Source from the content-addressed store, hash-verified

2381 return self.create_contract_order(symbol, type, side, amount, price, params)
2382
2383 def create_spot_order(self, symbol: str, type, side, amount, price=None, params={}):
2384 self.load_markets()
2385 market = self.market(symbol)
2386 request = {
2387 'symbol': market['id'],
2388 'side': side.upper(),
2389 'type': type.upper(),
2390 }
2391 timeInForce = None
2392 marginMode = None
2393 marginMode, params = self.handle_margin_mode_and_params('createOrder', params)
2394 marginOrSpotRequest = 'LEVER' if (marginMode is not None) else 'SPOT'
2395 request['bizType'] = marginOrSpotRequest
2396 if type == 'market':
2397 timeInForce = self.safe_string_upper(params, 'timeInForce', 'FOK')
2398 if side == 'buy':
2399 cost = self.safe_string(params, 'cost')
2400 params = self.omit(params, 'cost')
2401 createMarketBuyOrderRequiresPrice = self.safe_bool(self.options, 'createMarketBuyOrderRequiresPrice', True)
2402 if createMarketBuyOrderRequiresPrice:
2403 if price is None and (cost is None):
2404 raise InvalidOrder(self.id + ' createOrder() requires a price argument or cost in params for market buy orders on spot markets to calculate the total amount to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option to False and pass in the cost to spend into the amount parameter')
2405 else:
2406 amountString = self.number_to_string(amount)
2407 priceString = self.number_to_string(price)
2408 costCalculated = None
2409 if price is not None:
2410 costCalculated = Precise.string_mul(amountString, priceString)
2411 else:
2412 costCalculated = cost
2413 request['quoteQty'] = self.cost_to_precision(symbol, costCalculated)
2414 else:
2415 amountCost = cost if (cost is not None) else amount
2416 request['quoteQty'] = self.cost_to_precision(symbol, amountCost)
2417 else:
2418 timeInForce = self.safe_string_upper(params, 'timeInForce', 'GTC')
2419 request['price'] = self.price_to_precision(symbol, price)
2420 if (side == 'sell') or (type == 'limit'):
2421 request['quantity'] = self.amount_to_precision(symbol, amount)
2422 request['timeInForce'] = timeInForce
2423 response = self.privateSpotPostOrder(self.extend(request, params))
2424 #
2425 # {
2426 # "rc": 0,
2427 # "mc": "SUCCESS",
2428 # "ma": [],
2429 # "result": {
2430 # "orderId": "204371980095156544"
2431 # }
2432 # }
2433 #
2434 order = self.safe_value(response, 'result', {})
2435 return self.parse_order(order, market)
2436
2437 def create_contract_order(self, symbol: str, type, side, amount, price=None, params={}):
2438 self.load_markets()

Callers 1

create_orderMethod · 0.95

Calls 15

parse_orderMethod · 0.95
InvalidOrderClass · 0.90
safe_string_upperMethod · 0.80
safe_stringMethod · 0.80
safe_boolMethod · 0.80
string_mulMethod · 0.80
safe_valueMethod · 0.80
privateSpotPostOrderMethod · 0.65
load_marketsMethod · 0.45
marketMethod · 0.45
omitMethod · 0.45

Tested by

no test coverage detected