code: public String placeGateioLimitOrder(
        CurrencyPair currencyPair, GateioOrderType orderType, BigDecimal rate, BigDecimal amount)
        throws IOException {
  
      String pair = formatCurrencyPair(currencyPair);
  
      GateioPlaceOrderReturn orderId;
      if (orderType.equals(GateioOrderType.BUY)) {
        orderId = bter.buy(pair, rate, amount, apiKey, signatureCreator);
      } else {
        orderId = bter.sell(pair, rate, amount, apiKey, signatureCreator);
      }
  
      return handleResponse(orderId).getOrderId();
    }
docs: Submits a Limit Order to be executed on the Gateio Exchange for the desired market defined by
  {@code currencyPair}. WARNING - Gateio will return true regardless of whether or not an order
  actually gets created. The reason for this is that orders are simply submitted to a queue in
  their back-end. One example for why an order might not get created is because there are
  insufficient funds. The best attempt you can make to confirm that the order was created is to
  poll {@link #getGateioOpenOrders}. However if the order is created and executed before it is
  caught in its open state from calling {@link #getGateioOpenOrders} then the only way to confirm
  would be confirm the expected difference in funds available for your account.
  
  @param currencyPair
  @param orderType
  @param rate
  @param amount
  @return String order id of submitted request.
  @throws IOException