(self, symbol: str, type: OrderType, side: OrderSide, amount: Num, price: Num = None, params={})
| 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') |
no test coverage detected