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

Method edit_orders_request

python/ccxt/async_support/hyperliquid.py:2542–2648  ·  view source on GitHub ↗
(self, orders, params={})

Source from the content-addressed store, hash-verified

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)

Callers 1

edit_ordersMethod · 0.95

Calls 15

marketMethod · 0.95
price_to_precisionMethod · 0.95
amount_to_precisionMethod · 0.95
format_vault_addressMethod · 0.95
sign_l1_actionMethod · 0.95
ArgumentsRequiredClass · 0.90
safe_dictMethod · 0.80
safe_string_2Method · 0.80
safe_stringMethod · 0.80
safe_string_upperMethod · 0.80
safe_boolMethod · 0.80

Tested by

no test coverage detected