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

Method create_uta_order_request

python/ccxt/async_support/bitget.py:5030–5128  ·  view source on GitHub ↗
(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={})

Source from the content-addressed store, hash-verified

5028 return self.parse_order(data, market)
5029
5030 def create_uta_order_request(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
5031 market = self.market(symbol)
5032 productType = None
5033 productType, params = self.handle_product_type_and_params(market, params)
5034 if productType == 'SPOT':
5035 marginMode = None
5036 marginMode, params = self.handle_margin_mode_and_params('createOrder', params)
5037 if marginMode is not None:
5038 productType = 'MARGIN'
5039 request = {
5040 'category': productType,
5041 'symbol': market['id'],
5042 'qty': self.amount_to_precision(symbol, amount),
5043 'side': side,
5044 }
5045 clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
5046 if clientOrderId is not None:
5047 request['clientOid'] = clientOrderId
5048 params = self.omit(params, 'clientOrderId')
5049 stopLossTriggerPrice = self.safe_number(params, 'stopLossPrice')
5050 takeProfitTriggerPrice = self.safe_number(params, 'takeProfitPrice')
5051 stopLoss = self.safe_value(params, 'stopLoss')
5052 takeProfit = self.safe_value(params, 'takeProfit')
5053 hasStopLoss = stopLoss is not None
5054 hasTakeProfit = takeProfit is not None
5055 isStopLossTrigger = stopLossTriggerPrice is not None
5056 isTakeProfitTrigger = takeProfitTriggerPrice is not None
5057 isStopLossOrTakeProfitTrigger = isStopLossTrigger or isTakeProfitTrigger
5058 if isStopLossOrTakeProfitTrigger:
5059 if isStopLossTrigger:
5060 slType = self.safe_string(params, 'slTriggerBy', 'mark')
5061 request['slTriggerBy'] = slType
5062 request['stopLoss'] = self.price_to_precision(symbol, stopLossTriggerPrice)
5063 if price is not None:
5064 request['slLimitPrice'] = self.price_to_precision(symbol, price)
5065 request['slOrderType'] = self.safe_string(params, 'slOrderType', 'limit')
5066 else:
5067 request['slOrderType'] = self.safe_string(params, 'slOrderType', 'market')
5068 elif isTakeProfitTrigger:
5069 tpType = self.safe_string(params, 'tpTriggerBy', 'mark')
5070 request['tpTriggerBy'] = tpType
5071 request['takeProfit'] = self.price_to_precision(symbol, takeProfitTriggerPrice)
5072 if price is not None:
5073 request['tpLimitPrice'] = self.price_to_precision(symbol, price)
5074 request['tpOrderType'] = self.safe_string(params, 'tpOrderType', 'limit')
5075 else:
5076 request['tpOrderType'] = self.safe_string(params, 'tpOrderType', 'market')
5077 params = self.omit(params, ['stopLossPrice', 'takeProfitPrice'])
5078 else:
5079 if hasStopLoss:
5080 slTriggerPrice = self.safe_number_2(stopLoss, 'triggerPrice', 'stopPrice')
5081 slLimitPrice = self.safe_number(stopLoss, 'price')
5082 request['stopLoss'] = self.price_to_precision(symbol, slTriggerPrice)
5083 if slLimitPrice is not None:
5084 request['slLimitPrice'] = self.price_to_precision(symbol, slLimitPrice)
5085 request['slOrderType'] = self.safe_string(params, 'slOrderType', 'limit')
5086 else:
5087 request['slOrderType'] = self.safe_string(params, 'slOrderType', 'market')

Callers 2

create_orderMethod · 0.95
create_uta_ordersMethod · 0.95

Calls 15

safe_string_2Method · 0.80
safe_numberMethod · 0.80
safe_valueMethod · 0.80
safe_stringMethod · 0.80
safe_number_2Method · 0.80
handle_post_onlyMethod · 0.80
safe_string_upperMethod · 0.80
safe_boolMethod · 0.80
handle_param_boolMethod · 0.80
marketMethod · 0.45

Tested by

no test coverage detected