Trading

About 7 min

If you encountered any problem with placing orders, please refer to the common error below for a quick inspection. If the FAQs below cannot solve your problem, please contact us

In order to locate the issue quickly, please provide us with the following information

  • user id
  • order_id(if any), you can use get_orders() to get your order_id
  • Full error message and error code
  • The time when you placed the order
  • Account type(Global, prime, paper)
  • Market and product being trade
  • Order type(Market, Limit, etc.)

Inspect Trade Error

See the common errors below when the SDK raises an exception. Contact us if you can't find an answer to you problem.

When you encountered an error, try to use get_order to check the order status. Usually the reason for the failure will be marked in the order detail. Refer to the following examples, inspect the Order Object after calling create_order, place_order, get_order, and compare the values to inspect for any possible error.

1. create order

No value in id field. Only order_id is available. status is NEW

Order({'account': 'U523', 'id': None, 'order_id': 297, 'parent_id': None, 'order_time': None, 'reason': None, 'trade_time': None, 'action': 'BUY', 'quantity': 100, 'filled': 0, 'avg_fill_price': 0, 'commission': None, 'realized_pnl': None, 'trail_stop_price': None, 'limit_price': 0.1, 'aux_price': None, 'trailing_percent': None, 'percent_offset': None, 'order_type': 'LMT', 'time_in_force': None, 'outside_rth': None, 'contract': ES/None/USD, 'status': 'NEW', 'remaining': 100}) 

2. place order

id is filled, status remains NEW. After calling palce order, only id field in the Order object changes. For the latest order status, use get_order.

Order({'account': 'U523', 'id': 154758864761483264, 'order_id': 297, 'parent_id': None, 'order_time': None, 'reason': None, 'trade_time': None, 'action': 'BUY', 'quantity': 100, 'filled': 0, 'avg_fill_price': 0, 'commission': None, 'realized_pnl': None, 'trail_stop_price': None, 'limit_price': 0.1, 'aux_price': None, 'trailing_percent': None, 'percent_offset': None, 'order_type': 'LMT', 'time_in_force': None, 'outside_rth': None, 'contract': ES/None/USD, 'status': 'NEW', 'remaining': 100})

3. get order

status changes to REJECTED. reason field is filled with the reason for the rejection

Order({'account': 'U523', 'id': 154758864761483264, 'order_id': 297, 'parent_id': 0, 'order_time': 1550115294556, 'reason': '201:Order rejected - Reason: YOUR ORDER IS NOT ACCEPTED. MINIMUM OF 2000 USD (OR EQUIVALENT IN OTHER CURRENCIES) REQUIRED IN ORDER TO PURCHASE ON MARGIN, SELL SHORT, TRADE CURRENCY OR FUTURE', 'trade_time': 1550115294694, 'action': 'BUY', 'quantity': 100, 'filled': 0, 'avg_fill_price': 0, 'commission': 0, 'realized_pnl': 0, 'trail_stop_price': None, 'limit_price': 0.1, 'aux_price': None, 'trailing_percent': None, 'percent_offset': None, 'order_type': 'LMT', 'time_in_force': 'DAY', 'outside_rth': True, 'contract': ES, 'status': 'REJECTED', 'remaining': 100})

Common Errors:

1.Error:standard account response error(bad_request:Orders cannot be place at this moment)

Cause

Certain order type is not availble currently

Solution

Double check your order types with the trading rules of the exchange.

  • if you are using paper account

    Trade outside RTH is not available for certain assets. Try to place order during RTH. In the meantime, you can report this issue to us

  • If you are using prime account

    Refer to supported order types


2.Error:standard account response error(BAD_REQUEST:You cannot place market or stop order during pre-market and after-hours trading)

Cause

You cannot place market or stop order during pre-market and after-hours trading

Solution

Check the time when you placed your orders and see if certain order types were allowed. Pay attention to timezone. Switch to other order types if needed. See supported order types for details


3.Error:The order quantity you entered exceeds your currently available position

Cause

The order quantity you entered exceeds your currently available position.

Solution

Close out your current position first. Before trying to take a position on the opposite side


4.Error:standard account response error(bad_request:We don’t support trading of this stock now(Error Code 4))

Reason

The asset is not available for trade now

Solution

Use Tiger Trade APP or API to check if an asset is currently available for trade.

5.Error:status=illegal_price, msg=Sorry, your order price does not match the tick size: 0.05

Reason

order price does not match the tick size

Solution

Query the contract by a prime account or a paper trade account, the 'tickSizes' field in the returned contract includes the minTick value of different price ranges.The method provided by StockPriceUtils can judge whether the price match the tick size, and can fix the price up or down to make it meet the minTick requirements.

Example:

    ContractModel model = new ContractModel("00700");
    ContractRequest contractRequest = ContractRequest.newRequest(
        model, "402901");
    Double limitPrice = 352.3344d;
    ContractResponse contractResponse = client.execute(contractRequest);
    if (contractResponse.isSuccess() && contractResponse.getItem().getTickSizes() != null) {
      List<TickSizeItem> tickSizes = contractResponse.getItem().getTickSizes();
      System.out.println(JSONObject.toJSONString(tickSizes));
      boolean match = StockPriceUtils.matchTickSize(limitPrice, tickSizes);
      if (!match) {
        // limitPrice:352.3344, fixed limitPrice(increments the price):352.4
        System.out.println("limitPrice:" + limitPrice + ", fixed limitPrice(increments the price):"
            + StockPriceUtils.fixPriceByTickSize(limitPrice, tickSizes, true));

        // limitPrice:352.3344, fixed limitPrice(decrease the price):352.2
        System.out.println("limitPrice:" + limitPrice + ", fixed limitPrice(decrease the price):"
            + StockPriceUtils.fixPriceByTickSize(limitPrice, tickSizes, false));
      }
    }

Other Errors

Fail to place orders due to using the multiplier and minTick obtained in contract information, to configure the total_quantity and limit_price parameters in order placing API.

Solutions

Use QuoteStockTradeRequest instead, to obtain the lotSize and minTick information to calculate the total_quantity. The multiplier returned in get contract API is only used for futures contract, and the min_tick is simply the minimum of all possible tick sizes

Supported order types

Supported Order Types for Trading

United States

Stocks, ETFs

Order TypeDurationIntradayPre-market/After-hoursLimit Order
Limit OrderDAY/GTC
Market OrderDAY/GTC××
Stop Limit OrderDAY/GTC
Stop OrderDAY/GTC×
Conditional OrderDAY/GTC××
Bracket OrderDAY/GTC××
Trailing Stop OrderDAY/GTC××
TWAP/VWAP OrderDepending on Order Type××

Options

Order TypeDurationIntradayLimit Order
Limit OrderDAY/GTC
Market OrderDAY×
Stop Limit OrderDAY/GTC
Bracket OrderDAY/GTC
Attached OrderDepending on Order Type×
Bracket OrderDepending on Order Type×

Futures

Order TypeDurationIntradayLimit Order
Limit OrderDAY/GTC
Market OrderDAY/GTC×
Stop Limit OrderDAY/GTC
Stop OrderDAY/GTC
Conditional OrderDAY/GTC×
Attached OrderDAY/GTC×
Bracket OrderDAY/GTC

Hong Kong

No pre-market/after-hours orders during the safety time after market close

Stocks, ETFs

Order TypeDurationIntradayLimit Order
Limit OrderDAY/GTC
Market OrderDAY/GTC×
Stop Limit OrderDAY/GTC
Stop OrderDAY/GTC
Conditional OrderDAY/GTC×
Bracket OrderDAY/GTC
Trailing Stop OrderDepending on Order Type×
TWAP/VWAP OrderDepending on Order Type×

Options

Order TypeDurationIntradayLimit Order
Limit OrderDAY/GTC
Market OrderDAY×
Stop Limit OrderDAY/GTC
Stop OrderDAY/GTC

Warrants, Bull/Bear Certificates

Order TypeDurationIntradayLimit Order
Limit OrderDAY/GTC
Stop Limit OrderDAY/GTC×
Conditional OrderDAY/GTC×
Attached OrderDepending on Order Type×
Bracket OrderDepending on Order Type×

Singapore

No pre-market/after-hours orders during the safety time after market close

Stocks, ETFs

Order TypeDurationIntraday
Limit OrderDAY/GTC
Market OrderDAY/GTC
Stop Limit OrderDAY/GTC
Stop OrderDAY/GTC
Conditional OrderDAY/GTC
Bracket OrderDAY/GTC
Trailing Stop OrderDAY/GTC

Australia

No pre-market/after-hours orders during the safety time after market close

Stocks, ETFs

Order TypeDurationIntraday
Limit OrderDAY/GTC
Market OrderDAY/GTC
Stop Limit OrderDAY/GTC
Stop OrderDAY/GTC
Conditional OrderDAY/GTC
Bracket OrderDAY/GTC
Trailing Stop OrderDAY/GTC

Transaction hour

A shares

Only when the three trading markets in Shanghai, Shenzhen and Hong Kong are open, the trading of Shanghai Stock Connect and Shenzhen Stock Connect can be carried out. The trading time of Shanghai Stock Connect and Shenzhen Stock Connect is: the trading day when all three markets in Shanghai, Shenzhen and Hong Kong are open

9:30-11:30 am; 13:00-15:00 pm

US Stocks

Eastern Time:

Before the market: 04:00-9:30; during the market: 09:30-16:00; after the market: 16:00-20:00.

Beijing time:

Daylight saving time: before the market: 16:00-21:30; during the market: 21:30-04:00; after the market: 04:00-08:00

Winter time: before the market: 17:00-22:30; during the market: 22:30-05:00; after the market: 05:00-09:00

Hong Kong stocks

Pre-opening session

PeriodTrading Rules
Order input period 9:00-9:15You can submit, modify, cancel auction market orders and auction limit orders
Non-cancellable period 9:15-9:20Only bid market orders and bid limit orders can be submitted, and orders cannot be canceled or changed
Random order matching period 9:20-9:22 (Order matching will start at random from 9:20-9:22 according to the final reference equilibrium price)Matching order matching in the auction period
Pause period, end of random order matching-9:30Auction order: Uncompleted orders will be canceled by the system; Atauction limit orders: If the input price range of uncompleted orders does not deviate from the original order price by nine times or more, it will be canceled Converted to limit order and automatically transferred to continuous trading session

Continuous Trading Period

time periodtime
Morning market9:30-12:00
Noon break12:00-13:00
Lunch13:00-16:00

Note: Order changes are not allowed during the noon market break, and order cancellation is allowed between 12:30-13:00

Closing Auction Session

PeriodTrading Rules
Closing auction period 16:00-16:01Calculation and publication of reference prices; orders cannot be submitted
Enter order 16:01-16:06You can submit, modify, and cancel auction market orders and auction limit orders, and the price limit of auction limit orders must not exceed ±5% of the reference price
Cannot be canceled 16:06-16:08You can submit auction market orders and auction limit orders, which cannot be canceled or changed; the input price of auction limit orders must be between the lowest selling price and the highest buying price
Random closing 16:08-16:10During the random closing period, auction market orders and auction limit orders can still be submitted, which cannot be canceled or changed; the input price of auction limit orders must be between the lowest selling price and the highest buying price

Singapore

SessionAll-day tradingHalf-day trading
Opening hours
Before market open8:30 - 8:58/ 8:59*8:30 - 8:58 /8:59*
Irrevocable8:58 / 8:59 - 9:008:58 / 8:59 - 9:00
Trading9:00 - 12:009:00 - 12:00
lunch break
Before market open12:00 - 12:58 / 12:59*
Irrevocable12:58 / 12:59 - 13:00
Trading13:00 - 17:00
Closed time
Before market break17:00 - 17:04 / 17:05*12:00 - 12:04 / 12:05*
Irrevocable17:04/ 17:05* - 17:0612:04 / 12:05* - 12:06
Trading before market break17:06 - 17:1612:06 - 12:16
Closed17:1612:16

Australia

The trading hours of the Australian market are Monday to Friday, as follows: 10am - 4pm AEST

Futures Trading Hours

*According to the regulations of the exchange, the trading hours of different futures varieties are different, please check the details in the tiger trading software. The details are subject to the announcement of the exchange. *

US Futures

Chicago Mercantile Exchange

Commodity TypeTrading Hours
Stock Index FuturesMonday to Friday, 9:30 - 4:00 the next day (closing break: 16:15 - 16:30)
Agricultural FuturesMonday to Friday, 9:30 - 2:00 the next day (closing break: 13:15 - 14:00)
Energy FuturesMonday to Friday, 9:00 - 2:30 the next day (closing break: 13:15 - 14:00)
Metal FuturesMonday to Friday, 8:00 - 1:00 the next day (closing break: 13:15 - 14:00)

Hong Kong Futures

Commodity TypeTrading Hours
Hong Kong FuturesMonday to Friday, 9:00 - 16:30

Japanese Futures

Commodity TypeTrading Hours
Japan FuturesMonday to Friday, 8:45 - 15:30

Singapore Futures

Commodity TypeTrading Hours
Singapore FuturesMonday to Friday, 9:00 - 17:15

Please note that the above trading hours are for reference only, and the specific trading hours may be adjusted according to seasonal changes, holidays and other factors. It is recommended that you check the latest announcements from the official or relevant exchanges to obtain accurate trading time information before trading

Last update: