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

Method create_extended_order_request

python/ccxt/extended.py:2473–2641  ·  view source on GitHub ↗
(self, symbol: str, type: OrderType, side: OrderSide, amount: Num, price: Num = None, params={})

Source from the content-addressed store, hash-verified

2471 return settlement
2472
2473 def create_extended_order_request(self, symbol: str, type: OrderType, side: OrderSide, amount: Num, price: Num = None, params={}) -> dict:
2474 self.load_markets()
2475 market = self.market(symbol)
2476 uppercaseType = type.upper()
2477 uppercaseSide = side.upper()
2478 if market['spot'] and uppercaseType != 'LIMIT':
2479 raise BadRequest(self.id + ' createOrder() supports limit orders for spot markets only')
2480 if not self.in_array(uppercaseType, ['LIMIT', 'MARKET', 'CONDITIONAL', 'TPSL']):
2481 raise BadRequest(self.id + ' createOrder() supports limit, market, conditional and tpsl orders only')
2482 if price is None:
2483 raise ArgumentsRequired(self.id + ' createOrder() requires a price argument')
2484 amountString = self.amount_to_precision(symbol, amount)
2485 priceString = self.price_to_precision(symbol, price)
2486 postOnly = self.is_post_only(uppercaseType == 'MARKET', None, params)
2487 reduceOnly = self.safe_bool_2(params, 'reduceOnly', 'reduce_only', False)
2488 timeInForce = self.safe_string_upper(params, 'timeInForce')
2489 if timeInForce is None:
2490 timeInForce = 'IOC' if (uppercaseType == 'MARKET') else 'GTT'
2491 fee = self.safe_string(params, 'fee', '0.0005')
2492 builderFeeRate = None
2493 builderId = None
2494 if self.isSandboxModeEnabled:
2495 builderFeeRate = self.safe_string_2(params, 'builderFeeRate', 'defaultBuilderFeeRate')
2496 builderId = self.safe_string_2(params, 'builderId', 'defaultBuilderId')
2497 params = self.omit(params, ['builderFeeRate', 'defaultBuilderFeeRate', 'builderId', 'defaultBuilderId'])
2498 else:
2499 builderFeeRate, params = self.handle_option_and_params(params, 'createOrder', 'builderFeeRate', '0.0001')
2500 builderId, params = self.handle_option_and_params(params, 'createOrder', 'builderId')
2501 totalFee = fee
2502 if builderFeeRate is not None:
2503 totalFee = Precise.string_add(fee, builderFeeRate)
2504 now = self.milliseconds()
2505 expiryEpochMillis = self.safe_integer(params, 'expiryEpochMillis', now + 3600000)
2506 settlementExpiration = self.safe_integer(params, 'settlementExpiration', self.parse_to_int((expiryEpochMillis + 999) / 1000) + 1209600)
2507 nonce = self.number_to_string(self.nonce())
2508 account = self.fetch_extended_account()
2509 starkKey = self.safe_string(account, 'l2Key')
2510 collateralPosition = self.safe_string(account, 'l2Vault')
2511 info = self.safe_dict(market, 'info', {})
2512 l2Config = self.safe_dict(info, 'l2Config', {})
2513 syntheticId = self.safe_string(l2Config, 'syntheticId')
2514 collateralId = self.safe_string(l2Config, 'collateralId')
2515 syntheticResolution = self.safe_integer(l2Config, 'syntheticResolution')
2516 collateralResolution = self.safe_integer(l2Config, 'collateralResolution')
2517 if (syntheticId is None) or (collateralId is None) or (syntheticResolution is None) or (collateralResolution is None):
2518 raise BadRequest(self.id + ' createOrder() requires l2Config in market info')
2519 settlementParams = {
2520 'totalFee': totalFee,
2521 'starkKey': starkKey,
2522 'syntheticId': syntheticId,
2523 'syntheticResolution': syntheticResolution,
2524 'collateralId': collateralId,
2525 'collateralResolution': collateralResolution,
2526 'settlementExpiration': settlementExpiration,
2527 'nonce': nonce,
2528 'collateralPosition': collateralPosition,
2529 }
2530 isBuy = (uppercaseSide == 'BUY')

Callers 2

create_orderMethod · 0.95
edit_orderMethod · 0.95

Calls 15

load_marketsMethod · 0.95
BadRequestClass · 0.90
ArgumentsRequiredClass · 0.90
in_arrayMethod · 0.80
is_post_onlyMethod · 0.80
safe_bool_2Method · 0.80
safe_string_upperMethod · 0.80
safe_stringMethod · 0.80
safe_string_2Method · 0.80

Tested by

no test coverage detected