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

Method create_uta_order_request

python/ccxt/bitget.py:5029–5127  ·  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

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