@method @name okx#createOrder @description create a trade order @see https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-place-order @see https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-place-multiple-orders @see https://www.okx.com/docs-v5/en/#order-book-trading-algo-trading
(Object symbol, Object type2, Object side, Object amount, Object... optionalArgs)
| 3722 | * @returns {object} an [order structure]{@link https://docs.ccxt.com/?id=order-structure} |
| 3723 | */ |
| 3724 | public java.util.concurrent.CompletableFuture<Object> createOrder(Object symbol, Object type2, Object side, Object amount, Object... optionalArgs) |
| 3725 | { |
| 3726 | final Object type3 = type2; |
| 3727 | return java.util.concurrent.CompletableFuture.supplyAsync(() -> { |
| 3728 | Object type = type3; |
| 3729 | Object price = Helpers.getArg(optionalArgs, 0, null); |
| 3730 | Object parameters = Helpers.getArg(optionalArgs, 1, new java.util.HashMap<String, Object>() {{}}); |
| 3731 | (this.loadMarkets()).join(); |
| 3732 | Object market = this.market(symbol); |
| 3733 | Object request = this.createOrderRequest(symbol, type, side, amount, price, parameters); |
| 3734 | Object method = this.safeString(this.options, "createOrder", "privatePostTradeBatchOrders"); |
| 3735 | Object requestOrdType = this.safeString(request, "ordType"); |
| 3736 | if (Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(Helpers.isTrue(Helpers.isTrue((Helpers.isEqual(requestOrdType, "trigger"))) || Helpers.isTrue((Helpers.isEqual(requestOrdType, "conditional")))) || Helpers.isTrue((Helpers.isEqual(requestOrdType, "move_order_stop")))) || Helpers.isTrue((Helpers.isEqual(type, "move_order_stop")))) || Helpers.isTrue((Helpers.isEqual(type, "oco")))) || Helpers.isTrue((Helpers.isEqual(type, "iceberg")))) || Helpers.isTrue((Helpers.isEqual(type, "twap"))))) |
| 3737 | { |
| 3738 | method = "privatePostTradeOrderAlgo"; |
| 3739 | } |
| 3740 | if (Helpers.isTrue(Helpers.isTrue(Helpers.isTrue((!Helpers.isEqual(method, "privatePostTradeOrder"))) && Helpers.isTrue((!Helpers.isEqual(method, "privatePostTradeOrderAlgo")))) && Helpers.isTrue((!Helpers.isEqual(method, "privatePostTradeBatchOrders"))))) |
| 3741 | { |
| 3742 | throw new ExchangeError((String)Helpers.add(this.id, " createOrder() this.options[\"createOrder\"] must be either privatePostTradeBatchOrders or privatePostTradeOrder or privatePostTradeOrderAlgo")) ; |
| 3743 | } |
| 3744 | if (Helpers.isTrue(Helpers.isEqual(method, "privatePostTradeBatchOrders"))) |
| 3745 | { |
| 3746 | // keep the request body the same |
| 3747 | // submit a single order in an array to the batch order endpoint |
| 3748 | // because it has a lower ratelimit |
| 3749 | request = new java.util.ArrayList<Object>(java.util.Arrays.asList(request)); |
| 3750 | } |
| 3751 | Object response = null; |
| 3752 | if (Helpers.isTrue(Helpers.isEqual(method, "privatePostTradeOrder"))) |
| 3753 | { |
| 3754 | response = (this.privatePostTradeOrder(request)).join(); |
| 3755 | } else if (Helpers.isTrue(Helpers.isEqual(method, "privatePostTradeOrderAlgo"))) |
| 3756 | { |
| 3757 | response = (this.privatePostTradeOrderAlgo(request)).join(); |
| 3758 | } else |
| 3759 | { |
| 3760 | response = (this.privatePostTradeBatchOrders(request)).join(); |
| 3761 | } |
| 3762 | Object data = this.safeList(response, "data", new java.util.ArrayList<Object>(java.util.Arrays.asList())); |
| 3763 | Object first = this.safeDict(data, 0, new java.util.HashMap<String, Object>() {{}}); |
| 3764 | Object order = this.parseOrder(first, market); |
| 3765 | Helpers.addElementToObject(order, "type", type); |
| 3766 | Helpers.addElementToObject(order, "side", side); |
| 3767 | return order; |
| 3768 | }); |
| 3769 | |
| 3770 | } |
| 3771 | |
| 3772 | /** |
| 3773 | * @method |
no test coverage detected