(self, orders, params={})
| 2540 | return response |
| 2541 | |
| 2542 | def edit_orders_request(self, orders, params={}): |
| 2543 | self.check_required_credentials() |
| 2544 | hasClientOrderId = False |
| 2545 | for i in range(0, len(orders)): |
| 2546 | rawOrder = orders[i] |
| 2547 | orderParams = self.safe_dict(rawOrder, 'params', {}) |
| 2548 | clientOrderId = self.safe_string_2(orderParams, 'clientOrderId', 'client_id') |
| 2549 | if clientOrderId is not None: |
| 2550 | hasClientOrderId = True |
| 2551 | if hasClientOrderId: |
| 2552 | for i in range(0, len(orders)): |
| 2553 | rawOrder = orders[i] |
| 2554 | orderParams = self.safe_dict(rawOrder, 'params', {}) |
| 2555 | clientOrderId = self.safe_string_2(orderParams, 'clientOrderId', 'client_id') |
| 2556 | if clientOrderId is None: |
| 2557 | raise ArgumentsRequired(self.id + ' editOrders() all orders must have clientOrderId if at least one has a clientOrderId') |
| 2558 | params = self.omit(params, ['slippage', 'clientOrderId', 'client_id', 'slippage', 'triggerPrice', 'stopPrice', 'stopLossPrice', 'takeProfitPrice', 'timeInForce']) |
| 2559 | modifies = [] |
| 2560 | for i in range(0, len(orders)): |
| 2561 | rawOrder = orders[i] |
| 2562 | id = self.safe_string(rawOrder, 'id') |
| 2563 | marketId = self.safe_string(rawOrder, 'symbol') |
| 2564 | market = self.market(marketId) |
| 2565 | symbol = market['symbol'] |
| 2566 | type = self.safe_string_upper(rawOrder, 'type') |
| 2567 | isMarket = (type == 'MARKET') |
| 2568 | side = self.safe_string_upper(rawOrder, 'side') |
| 2569 | isBuy = (side == 'BUY') |
| 2570 | amount = self.safe_string(rawOrder, 'amount') |
| 2571 | price = self.safe_string(rawOrder, 'price') |
| 2572 | orderParams = self.safe_dict(rawOrder, 'params', {}) |
| 2573 | defaultSlippage = self.safe_string(self.options, 'defaultSlippage') |
| 2574 | slippage = self.safe_string(orderParams, 'slippage', defaultSlippage) |
| 2575 | defaultTimeInForce = 'ioc' if (isMarket) else 'gtc' |
| 2576 | postOnly = self.safe_bool(orderParams, 'postOnly', False) |
| 2577 | if postOnly: |
| 2578 | defaultTimeInForce = 'alo' |
| 2579 | timeInForce = self.safe_string_lower(orderParams, 'timeInForce', defaultTimeInForce) |
| 2580 | timeInForce = self.capitalize(timeInForce) |
| 2581 | clientOrderId = self.safe_string_2(orderParams, 'clientOrderId', 'client_id') |
| 2582 | triggerPrice = self.safe_string_2(orderParams, 'triggerPrice', 'stopPrice') |
| 2583 | stopLossPrice = self.safe_string(orderParams, 'stopLossPrice', triggerPrice) |
| 2584 | takeProfitPrice = self.safe_string(orderParams, 'takeProfitPrice') |
| 2585 | isTrigger = (stopLossPrice or takeProfitPrice) |
| 2586 | reduceOnly = self.safe_bool(orderParams, 'reduceOnly', False) |
| 2587 | orderParams = self.omit(orderParams, ['slippage', 'timeInForce', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'clientOrderId', 'client_id', 'postOnly', 'reduceOnly']) |
| 2588 | px = self.number_to_string(price) |
| 2589 | if isMarket: |
| 2590 | px = Precise.string_mul(px, Precise.string_add('1', slippage)) if (isBuy) else Precise.string_mul(px, Precise.string_sub('1', slippage)) |
| 2591 | px = self.price_to_precision(symbol, px) |
| 2592 | else: |
| 2593 | px = self.price_to_precision(symbol, px) |
| 2594 | sz = self.amount_to_precision(symbol, amount) |
| 2595 | orderType = {} |
| 2596 | if isTrigger: |
| 2597 | isTp = False |
| 2598 | if takeProfitPrice is not None: |
| 2599 | triggerPrice = self.price_to_precision(symbol, takeProfitPrice) |
no test coverage detected