* @method * @name gate#createOrder * @description Create an order on the exchange * @see https://www.gate.com/docs/developers/apiv4/en/#create-an-order * @see https://www.gate.com/docs/developers/apiv4/en/#create-price-triggered-order * @see https://www.gate.com/docs/develop
(symbol, type, side, amount, price = undefined, params = {})
| 4284 | * @returns {object|undefined} [An order structure]{@link https://docs.ccxt.com/?id=order-structure} |
| 4285 | */ |
| 4286 | async createOrder(symbol, type, side, amount, price = undefined, params = {}) { |
| 4287 | await this.loadMarkets(); |
| 4288 | await this.loadUnifiedStatus(); |
| 4289 | const market = this.market(symbol); |
| 4290 | const trigger = this.safeValue(params, 'trigger'); |
| 4291 | const triggerPrice = this.safeValue2(params, 'triggerPrice', 'stopPrice'); |
| 4292 | const stopLossPrice = this.safeValue(params, 'stopLossPrice', triggerPrice); |
| 4293 | const takeProfitPrice = this.safeValue(params, 'takeProfitPrice'); |
| 4294 | const isStopLossOrder = stopLossPrice !== undefined; |
| 4295 | const isTakeProfitOrder = takeProfitPrice !== undefined; |
| 4296 | const isTpsl = isStopLossOrder || isTakeProfitOrder; |
| 4297 | const nonTriggerOrder = !isTpsl && (trigger === undefined); |
| 4298 | const orderRequest = this.createOrderRequest(symbol, type, side, amount, price, params); |
| 4299 | let response; |
| 4300 | if (market['spot'] || market['margin']) { |
| 4301 | if (nonTriggerOrder) { |
| 4302 | response = await this.privateSpotPostOrders(orderRequest); |
| 4303 | } |
| 4304 | else { |
| 4305 | response = await this.privateSpotPostPriceOrders(orderRequest); |
| 4306 | } |
| 4307 | } |
| 4308 | else if (market['swap']) { |
| 4309 | if (nonTriggerOrder) { |
| 4310 | response = await this.privateFuturesPostSettleOrders(orderRequest); |
| 4311 | } |
| 4312 | else { |
| 4313 | response = await this.privateFuturesPostSettlePriceOrders(orderRequest); |
| 4314 | } |
| 4315 | } |
| 4316 | else if (market['future']) { |
| 4317 | if (nonTriggerOrder) { |
| 4318 | response = await this.privateDeliveryPostSettleOrders(orderRequest); |
| 4319 | } |
| 4320 | else { |
| 4321 | response = await this.privateDeliveryPostSettlePriceOrders(orderRequest); |
| 4322 | } |
| 4323 | } |
| 4324 | else { |
| 4325 | response = await this.privateOptionsPostOrders(orderRequest); |
| 4326 | } |
| 4327 | // const response = await this[method] (this.deepExtend (request, params)); |
| 4328 | // |
| 4329 | // spot |
| 4330 | // |
| 4331 | // { |
| 4332 | // "id": "95282841887", |
| 4333 | // "text": "apiv4", |
| 4334 | // "create_time": "1637383156", |
| 4335 | // "update_time": "1637383156", |
| 4336 | // "create_time_ms": 1637383156017, |
| 4337 | // "update_time_ms": 1637383156017, |
| 4338 | // "status": "open", |
| 4339 | // "currency_pair": "ETH_USDT", |
| 4340 | // "type": "limit", |
| 4341 | // "account": "spot", |
| 4342 | // "side": "buy", |
| 4343 | // "amount": "0.01", |
no test coverage detected