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

Method create_order_request

python/ccxt/async_support/gate.py:4272–4485  ·  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

4270 return self.parse_orders(response)
4271
4272 def create_order_request(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
4273 market = self.market(symbol)
4274 contract = market['contract']
4275 trigger = self.safe_value(params, 'trigger')
4276 triggerPrice = self.safe_value_2(params, 'triggerPrice', 'stopPrice')
4277 stopLossPrice = self.safe_value(params, 'stopLossPrice', triggerPrice)
4278 takeProfitPrice = self.safe_value(params, 'takeProfitPrice')
4279 isStopLossOrder = stopLossPrice is not None
4280 isTakeProfitOrder = takeProfitPrice is not None
4281 isTpsl = isStopLossOrder or isTakeProfitOrder
4282 if isStopLossOrder and isTakeProfitOrder:
4283 raise ExchangeError(self.id + ' createOrder() stopLossPrice and takeProfitPrice cannot both be defined')
4284 reduceOnly = self.safe_value(params, 'reduceOnly')
4285 exchangeSpecificTimeInForce = self.safe_string_lower_n(params, ['timeInForce', 'tif', 'time_in_force'])
4286 postOnly = None
4287 postOnly, params = self.handle_post_only(type == 'market', exchangeSpecificTimeInForce == 'poc', params)
4288 timeInForce = self.handle_time_in_force(params)
4289 if postOnly:
4290 timeInForce = 'poc'
4291 # we only omit the unified params here
4292 # self is because the other params will get extended into the request
4293 clientOrderId = self.safe_string_2(params, 'text', 'clientOrderId')
4294 params = self.omit(params, ['stopPrice', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice', 'reduceOnly', 'timeInForce', 'postOnly', 'clientOrderId'])
4295 isLimitOrder = (type == 'limit')
4296 isMarketOrder = (type == 'market')
4297 if isLimitOrder and price is None:
4298 raise ArgumentsRequired(self.id + ' createOrder() requires a price argument for ' + type + ' orders')
4299 if isMarketOrder:
4300 if (timeInForce == 'poc') or (timeInForce == 'gtc'):
4301 raise ExchangeError(self.id + ' createOrder() timeInForce for market order can only be "FOK" or "IOC"')
4302 else:
4303 if timeInForce is None:
4304 defaultTif = self.safe_string(self.options, 'defaultTimeInForce', 'IOC')
4305 exchangeSpecificTif = self.safe_string(self.options['timeInForce'], defaultTif, 'ioc')
4306 timeInForce = exchangeSpecificTif
4307 if contract:
4308 price = 0
4309 if contract:
4310 isClose = self.safe_value(params, 'close')
4311 if isClose:
4312 amount = 0
4313 else:
4314 amountToPrecision = self.amount_to_precision(symbol, amount)
4315 signedAmount = Precise.string_neg(amountToPrecision) if (side == 'sell') else amountToPrecision
4316 amount = int(signedAmount)
4317 request = None
4318 nonTriggerOrder = not isTpsl and (trigger is None)
4319 if nonTriggerOrder:
4320 if contract:
4321 # contract order
4322 request = {
4323 'contract': market['id'], # filled in prepareRequest above
4324 'size': amount, # int64, positive = bid, negative = ask
4325 # 'iceberg': 0, # int64, display size for iceberg order, 0 for non-iceberg, note that you will have to pay the taker fee for the hidden size
4326 # 'close': False, # True to close the position, with size set to 0
4327 # 'reduce_only': False, # St to be reduce-only order
4328 # 'tif': 'gtc', # gtc, ioc, poc PendingOrCancelled == postOnly order
4329 # 'text': clientOrderId, # 't-abcdef1234567890',

Callers 3

create_orderMethod · 0.95
create_orders_requestMethod · 0.95
create_order_wsMethod · 0.95

Calls 15

get_margin_modeMethod · 0.95
ExchangeErrorClass · 0.90
ArgumentsRequiredClass · 0.90
InvalidOrderClass · 0.90
BadRequestClass · 0.90
NotSupportedClass · 0.90
safe_valueMethod · 0.80
safe_value_2Method · 0.80
safe_string_lower_nMethod · 0.80
handle_post_onlyMethod · 0.80
handle_time_in_forceMethod · 0.80
safe_string_2Method · 0.80

Tested by

no test coverage detected