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