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

Method create_order_request

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

5127 return self.extend(request, params)
5128
5129 def create_order_request(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
5130 market = self.market(symbol)
5131 marketType = None
5132 marginMode = None
5133 marketType, params = self.handle_market_type_and_params('createOrder', market, params)
5134 marginMode, params = self.handle_margin_mode_and_params('createOrder', params)
5135 request = {
5136 'symbol': market['id'],
5137 'orderType': type,
5138 }
5139 hedged = None
5140 hedged, params = self.handle_param_bool(params, 'hedged', False)
5141 # backward compatibility for `oneWayMode`
5142 oneWayMode = None
5143 oneWayMode, params = self.handle_param_bool(params, 'oneWayMode')
5144 if oneWayMode is not None:
5145 hedged = not oneWayMode
5146 isMarketOrder = type == 'market'
5147 triggerPrice = self.safe_value_2(params, 'stopPrice', 'triggerPrice')
5148 stopLossTriggerPrice = self.safe_value(params, 'stopLossPrice')
5149 takeProfitTriggerPrice = self.safe_value(params, 'takeProfitPrice')
5150 stopLoss = self.safe_value(params, 'stopLoss')
5151 takeProfit = self.safe_value(params, 'takeProfit')
5152 isTriggerOrder = triggerPrice is not None
5153 isStopLossTriggerOrder = stopLossTriggerPrice is not None
5154 isTakeProfitTriggerOrder = takeProfitTriggerPrice is not None
5155 hasStopLoss = stopLoss is not None
5156 hasTakeProfit = takeProfit is not None
5157 isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder or isTakeProfitTriggerOrder
5158 isStopLossOrTakeProfit = hasStopLoss or hasTakeProfit
5159 trailingTriggerPrice = self.safe_string(params, 'trailingTriggerPrice', self.number_to_string(price))
5160 trailingPercent = self.safe_string_2(params, 'trailingPercent', 'callbackRatio')
5161 isTrailingPercentOrder = trailingPercent is not None
5162 # multipleTriggers = (isTriggerOrder and (isStopLossTriggerOrder or isTakeProfitTriggerOrder or isTrailingPercentOrder))
5163 # or (isStopLossTriggerOrder and (isTakeProfitTriggerOrder or isTrailingPercentOrder))
5164 # or (isTakeProfitTriggerOrder and isTrailingPercentOrder)
5165 # if multipleTriggers:
5166 # raise ExchangeError(self.id + ' createOrder() params can only contain one of triggerPrice, stopLossPrice, takeProfitPrice, trailingPercent')
5167 # }
5168 #
5169 if self.sum(isTriggerOrder, isStopLossTriggerOrder, isTakeProfitTriggerOrder, isTrailingPercentOrder) > 1:
5170 raise ExchangeError(self.id + ' createOrder() params can only contain one of triggerPrice, stopLossPrice, takeProfitPrice, trailingPercent')
5171 if type == 'limit':
5172 request['price'] = self.price_to_precision(symbol, price)
5173 triggerPriceType = self.safe_string_2(params, 'triggerPriceType', 'triggerType', 'mark_price')
5174 reduceOnly = self.safe_bool(params, 'reduceOnly', False)
5175 clientOrderId = self.safe_string_2(params, 'clientOid', 'clientOrderId')
5176 exchangeSpecificTifParam = self.safe_string_2(params, 'force', 'timeInForce')
5177 postOnly = None
5178 postOnly, params = self.handle_post_only(isMarketOrder, exchangeSpecificTifParam == 'post_only', params)
5179 defaultTimeInForce = self.safe_string_upper(self.options, 'defaultTimeInForce')
5180 timeInForce = self.safe_string_upper(params, 'timeInForce', defaultTimeInForce)
5181 if postOnly:
5182 request['force'] = 'post_only'
5183 elif timeInForce == 'GTC':
5184 request['force'] = 'GTC'
5185 elif timeInForce == 'FOK':
5186 request['force'] = 'FOK'

Callers 2

create_orderMethod · 0.95
create_ordersMethod · 0.95

Calls 15

ExchangeErrorClass · 0.90
BadRequestClass · 0.90
ArgumentsRequiredClass · 0.90
InvalidOrderClass · 0.90
NotSupportedClass · 0.90
handle_param_boolMethod · 0.80
safe_value_2Method · 0.80
safe_valueMethod · 0.80
safe_stringMethod · 0.80
safe_string_2Method · 0.80
safe_boolMethod · 0.80

Tested by

no test coverage detected