Trading
Common Errors Related to Placing Orders
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 Type | Duration | Intraday | Pre-market/After-hours | Limit Order |
---|---|---|---|---|
Limit Order | DAY/GTC | ✓ | ✓ | ✓ |
Market Order | DAY/GTC | ✓ | × | × |
Stop Limit Order | DAY/GTC | ✓ | ✓ | ✓ |
Stop Order | DAY/GTC | ✓ | × | ✓ |
Conditional Order | DAY/GTC | ✓ | × | × |
Bracket Order | DAY/GTC | ✓ | × | × |
Trailing Stop Order | DAY/GTC | ✓ | × | × |
TWAP/VWAP Order | Depending on Order Type | ✓ | × | × |
Options
Order Type | Duration | Intraday | Limit Order |
---|---|---|---|
Limit Order | DAY/GTC | ✓ | ✓ |
Market Order | DAY | ✓ | × |
Stop Limit Order | DAY/GTC | ✓ | ✓ |
Bracket Order | DAY/GTC | ✓ | ✓ |
Attached Order | Depending on Order Type | ✓ | × |
Bracket Order | Depending on Order Type | ✓ | × |
Futures
Order Type | Duration | Intraday | Limit Order |
---|---|---|---|
Limit Order | DAY/GTC | ✓ | ✓ |
Market Order | DAY/GTC | ✓ | × |
Stop Limit Order | DAY/GTC | ✓ | ✓ |
Stop Order | DAY/GTC | ✓ | ✓ |
Conditional Order | DAY/GTC | ✓ | × |
Attached Order | DAY/GTC | ✓ | × |
Bracket Order | DAY/GTC | ✓ | ✓ |
Hong Kong
No pre-market/after-hours orders during the safety time after market close
Stocks, ETFs
Order Type | Duration | Intraday | Limit Order |
---|---|---|---|
Limit Order | DAY/GTC | ✓ | ✓ |
Market Order | DAY/GTC | ✓ | × |
Stop Limit Order | DAY/GTC | ✓ | ✓ |
Stop Order | DAY/GTC | ✓ | ✓ |
Conditional Order | DAY/GTC | ✓ | × |
Bracket Order | DAY/GTC | ✓ | ✓ |
Trailing Stop Order | Depending on Order Type | ✓ | × |
TWAP/VWAP Order | Depending on Order Type | ✓ | × |
Options
Order Type | Duration | Intraday | Limit Order |
---|---|---|---|
Limit Order | DAY/GTC | ✓ | ✓ |
Market Order | DAY | ✓ | × |
Stop Limit Order | DAY/GTC | ✓ | ✓ |
Stop Order | DAY/GTC | ✓ | ✓ |
Warrants, Bull/Bear Certificates
Order Type | Duration | Intraday | Limit Order |
---|---|---|---|
Limit Order | DAY/GTC | ✓ | ✓ |
Stop Limit Order | DAY/GTC | ✓ | × |
Conditional Order | DAY/GTC | ✓ | × |
Attached Order | Depending on Order Type | ✓ | × |
Bracket Order | Depending on Order Type | ✓ | × |
Singapore
No pre-market/after-hours orders during the safety time after market close
Stocks, ETFs
Order Type | Duration | Intraday |
---|---|---|
Limit Order | DAY/GTC | ✓ |
Market Order | DAY/GTC | ✓ |
Stop Limit Order | DAY/GTC | ✓ |
Stop Order | DAY/GTC | ✓ |
Conditional Order | DAY/GTC | ✓ |
Bracket Order | DAY/GTC | ✓ |
Trailing Stop Order | DAY/GTC | ✓ |
Australia
No pre-market/after-hours orders during the safety time after market close
Stocks, ETFs
Order Type | Duration | Intraday |
---|---|---|
Limit Order | DAY/GTC | ✓ |
Market Order | DAY/GTC | ✓ |
Stop Limit Order | DAY/GTC | ✓ |
Stop Order | DAY/GTC | ✓ |
Conditional Order | DAY/GTC | ✓ |
Bracket Order | DAY/GTC | ✓ |
Trailing Stop Order | DAY/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
Period | Trading Rules |
---|---|
Order input period 9:00-9:15 | You can submit, modify, cancel auction market orders and auction limit orders |
Non-cancellable period 9:15-9:20 | Only 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:30 | Auction 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 period | time |
---|---|
Morning market | 9:30-12:00 |
Noon break | 12:00-13:00 |
Lunch | 13: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
Period | Trading Rules |
---|---|
Closing auction period 16:00-16:01 | Calculation and publication of reference prices; orders cannot be submitted |
Enter order 16:01-16:06 | You 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:08 | You 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:10 | During 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
Session | All-day trading | Half-day trading |
---|---|---|
Opening hours | ||
Before market open | 8:30 - 8:58/ 8:59* | 8:30 - 8:58 /8:59* |
Irrevocable | 8:58 / 8:59 - 9:00 | 8:58 / 8:59 - 9:00 |
Trading | 9:00 - 12:00 | 9:00 - 12:00 |
lunch break | ||
Before market open | 12:00 - 12:58 / 12:59* | |
Irrevocable | 12:58 / 12:59 - 13:00 | |
Trading | 13:00 - 17:00 | |
Closed time | ||
Before market break | 17:00 - 17:04 / 17:05* | 12:00 - 12:04 / 12:05* |
Irrevocable | 17:04/ 17:05* - 17:06 | 12:04 / 12:05* - 12:06 |
Trading before market break | 17:06 - 17:16 | 12:06 - 12:16 |
Closed | 17:16 | 12: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 Type | Trading Hours |
---|---|
Stock Index Futures | Monday to Friday, 9:30 - 4:00 the next day (closing break: 16:15 - 16:30) |
Agricultural Futures | Monday to Friday, 9:30 - 2:00 the next day (closing break: 13:15 - 14:00) |
Energy Futures | Monday to Friday, 9:00 - 2:30 the next day (closing break: 13:15 - 14:00) |
Metal Futures | Monday to Friday, 8:00 - 1:00 the next day (closing break: 13:15 - 14:00) |
Hong Kong Futures
Commodity Type | Trading Hours |
---|---|
Hong Kong Futures | Monday to Friday, 9:00 - 16:30 |
Japanese Futures
Commodity Type | Trading Hours |
---|---|
Japan Futures | Monday to Friday, 8:45 - 15:30 |
Singapore Futures
Commodity Type | Trading Hours |
---|---|
Singapore Futures | Monday 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