(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={})
| 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' |
no test coverage detected