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

Method edit_orders_request

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

Source from the content-addressed store, hash-verified

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)

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