Get Order Information

get_orders Get Order List

TradeClient.get_orders(
    account=None,
    sec_type=None,
    market=Market.ALL,
    symbol=None,
    start_time=None,
    end_time=None,
    limit=100,
    is_brief=False,
    status=None,
    sort_by=None,
    seg_type=None,
    page_token=None
)

Description

Retrieve account order records, including all order statuses and multiple security types. This interface supports flexible filtering by security type, market, symbol, time range, order status, and sorting rules. Results can be returned either as a simple list or as a paginated response.

Parameters

Parameter NameTypeRequiredDescription
accountstrNoAccount ID. If not provided, the default account from client_config is used
sec_typeSecurityTypeNoSecurity type. Values from tigeropen.common.consts.SecurityType
marketMarketNoMarket identifier. Values from tigeropen.common.consts.Market.
Default: Market.ALL
symbolstrNoSecurity symbol
start_timestr or intNo

Start time (inclusive).
Millisecond timestamp or date string, e.g. 1653346000000, 2019-01-01, or 2019-01-01 12:00:00.

When sort_by=LATEST_STATUS_UPDATED, this filters by order status update time

end_timestr or intNo

End time (inclusive).
Millisecond timestamp or date string, e.g. 1653346000000, 2019-01-01, or 2019-01-01 15:00:00

When sort_by=LATEST_STATUS_UPDATED, this filters by order status update time)

limitintNoNumber of orders to return per request.
Default: 100 Maximum: 300
is_briefboolNoWhether to return brief order data
Global accounts only
statuslist[OrderStatus]NoFilter by order status.
Values from tigeropen.common.consts.OrderStatus
Global accounts only
sort_byOrderSortByNo

Sorting rule and time reference. Supported values:
LATEST_CREATED LATEST_STATUS_UPDATED

Default: LATEST_CREATED

seg_typeSegmentTypeNoAccount segment.
Examples:
  • SegmentType.SEC — securities
  • SegmentType.FUT — commodities
Values from tigeropen.common.consts.SegmentType
page_tokenstrNoPagination token. Pass an empty string on the first request, then pass the returned next_page_token to retrieve subsequent pages

Returns

list or OrdersResponse

Note: If page_token is not provided, a list of Order objects is returned. If page_token is provided, an OrdersResponse object is returned:

  • OrdersResponse.result — field containing list of Order objects
  • OrdersResponse.next_page_token — field containing token for the next page (if available)

Each element in the result is an Order object (tigeropen.trade.domain.order.Order). For detailed field descriptions, see Order Object

Example

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

orders = trade_client.get_orders(sec_type=SecurityType.STK, market=Market.ALL)

# Limit return count; filter by order time (if start_time/end_time are strings, server treats as Beijing time by default; client_config.timezone can set timezone, after setting, time strings are treated as that timezone's time)
orders = trade_client.get_orders(limit=10,
                                 start_time='2022-09-02 01:00:00', end_time='2022-11-08 00:00:00',
                                 seg_type='SEC'
                                 )
orders = trade_client.get_orders(limit=10,
                                 start_time=1656224964000, end_time=1666224964000,
                                 seg_type='SEC'
                                 )
# View order properties
order1 = orders[0]
print(order1.status)  # Order status
print(order1.id)  # Order ID
print(order1.contract.symbol) # Contract symbol
print(order1.contract.sec_type) # Contract type

Get orders using page_token pagination


def test_get_orders_by_page():
    results = []
    params = {
        'sec_type': 'STK',
        'start_time': int(datetime.strptime('2023-01-01', '%Y-%m-%d').timestamp() * 1000),
        'end_time': int(datetime.strptime('2025-08-01', '%Y-%m-%d').timestamp() * 1000),
        'limit': 10,
        'page_token': ''
    }
    
    page = 1
    while True:
        response: OrdersResponse = trade_client.get_orders(**params)
        print(f'page {page}, size {len(response.result)}, next_page_token: {response.next_page_token}')
        page += 1
                    
        if response.result:
            results.extend(response.result)
            
        if not response.next_page_token:
            break
            
        params['page_token'] = response.next_page_token
        
    print(f'total: {len(results)}, results: {results}')

Get orders paginated by time

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

def test_get_orders_by_page():
    result = list()
    # Number returned each time (must be <= 300)
    limit = 300
    conditions = {
        'limit': limit,
        'start_time': '2025-01-01',
        'end_time': '2025-02-12',
        # Return data is in reverse chronological order, newest first. Sorted by order_time here
        'sort_by': OrderSortBy.LATEST_CREATED,
        # Can add other filter conditions
    }
    orders_page = trade_client.get_orders(**conditions)
    result.extend(orders_page)
    while len(orders_page) == limit:
        next_order_time = orders_page[-1].order_time
        conditions.pop('end_time', None)
        orders_page = trade_client.get_orders(**conditions, end_time=next_order_time)
        result.extend(orders_page)
    print(f'total order size: {len(result)}')
    return result

Return Example

[Order({'account': '1', 'id': 162998104807903232, 'order_id': 341, 'parent_id': 0, 'order_time': 1557972846184, 'reason': '136:Order is already being cancelled.', 'trade_time': 1557975394512, 'action': 'BUY', 'quantity': 2, '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': SPY, 'status': 'CANCELLED', 'remaining': 2}),
Order({'account': '1', 'id': 162998998620389376, 'order_id': 344, 'parent_id': 0, 'order_time': 1557973698590, 'reason': '136:Order is already being cancelled.', 'trade_time': 1557973773622, 'action': 'BUY', 'quantity': 1, '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': SPY, 'status': 'CANCELLED', 'remaining': 1}),
Order({'account': '1', 'id': 152239266327625728, 'order_id': 230, 'parent_id': 0, 'order_time': 1547712418243, 'reason': '201:Order rejected - Reason: YOUR ORDER IS NOT ACCEPTED. IN ORDER TO OBTAIN THE DESIRED POSITION YOUR EQUITY WITH LOAN VALUE [1247.90 USD] MUST EXCEED THE INITIAL MARGIN [4989.99 USD]', 'trade_time': 1547712418275, 'action': 'BUY', 'quantity': 100, 'filled': 0, 'avg_fill_price': 0, 'commission': 0, 'realized_pnl': 0, 'trail_stop_price': None, 'limit_price': 5, 'aux_price': None, 'trailing_percent': None, 'percent_offset': None, 'order_type': 'LMT', 'time_in_force': 'DAY', 'outside_rth': True, 'contract': XYZX, 'status': 'REJECTED', 'remaining': 100})]

get_order Get Specific Order

TradeClient.get_order(
    account=None,
    id=None,
    order_id=None,
    is_brief=False,
    show_charges=None
)

Description

Retrieve detailed information for an order using its global/local order id.

Parameters

Parameter NameTypeRequiredDescription
accountstrNoAccount ID. If not provided, the default account from client_config is used
idintYesGlobal order ID returned after order submission
order_idintNoLocal order ID
Global accounts only
is_briefboolNoWhether to return brief order data
Global accounts only
show_chargesboolNoWhether to include the list of order charges (tigeropen.trade.domain.order.Charge)

Returns

Order object

For detailed field definitions, refer to Order Object

Example

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

print(trade_client.get_order(id=31059079170361344))

Return Example

Order({'account': '111111', 'id': 31059079170361344, 'order_id': 948, 'parent_id': None, 'order_time': 1685861168000, 
'reason': 'Order expired', 'trade_time': 1686010200000, 'action': 'BUY', 'quantity': 1, 'filled': 0, 'avg_fill_price': 0.0, 
'commission': 0.0, 'realized_pnl': 0.0, 'trail_stop_price': None, 'limit_price': 100.0, 'aux_price': None, 
'trailing_percent': None, 'percent_offset': None, 'order_type': 'LMT', 'time_in_force': 'DAY', 'outside_rth': True, 
'order_legs': None, 'algo_params': None, 'algo_strategy': 'LMT', 'secret_key': '', 'liquidation': False, 'discount': 0, 
'attr_desc': None, 'source': 'OpenApi', 'adjust_limit': None, 'sub_ids': None, 'user_mark': '', 
'update_time': 1686010200000, 'expire_time': None, 'can_modify': False, 'external_id': '948', 'combo_type': None, 
'combo_type_desc': None, 'is_open': True, 'contract_legs': None, 'filled_scale': 0, 'total_cash_amount': None, 
'filled_cash_amount': 0.0, 'refund_cash_amount': None, 'attr_list': ['ALGORITHM', 'NON_TRADING_HOURS', 'TEST_ORDER'], 
'latest_price': 215.82, 'orders': None, 'gst': 0.0, 'quantity_scale': 0, 'trading_session_type': None, 'charges': None, 
'contract': XYZX/STK/USD, 'status': 'CANCELLED', 'remaining': 1})

get_open_orders Get Pending Orders List

TradeClient.get_open_orders(
    account=None,
    sec_type=None,
    market=Market.ALL,
    symbol=None,
    start_time=None,
    end_time=None,
    parent_id=None,
    sort_by=None,
    seg_type=None,
    **kwargs
)

Description

Retrieve a list of pending orders.

Pending orders include:

  • Orders that are submitted but not yet filled
  • Orders that are partially filled, where the remaining quantity is still open

Parameters

Parameter NameTypeRequiredDescription
accountstrNoAccount ID. If not provided, the default account from client_config is used
sec_typeSecurityTypeNoSecurity type.
Values from tigeropen.common.consts.SecurityType
marketMarketNoMarket identifier.
Values from tigeropen.common.consts.Market, e.g. Market.US
symbolstrNoSecurity symbol
start_timestr or intNoStart time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
end_timestr or intNoEnd time (inclusive). Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
parent_idintNoParent order ID
sort_byOrderSortByNoSorting rule and time reference for start_time and end_time. Supported values include:
LATEST_CREATED LATEST_STATUS_UPDATED
seg_typeSegmentTypeNoAccount segment:
  • SegmentType.SEC — securities
  • SegmentType.FUT — commodities
Values from tigeropen.common.consts.SegmentType

Returns

list[Order]

Each element in the list is an Order object (tigeropen.trade.domain.order.Order).

For detailed field definitions, see Order Object

Example

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

open_orders = trade_client.get_open_orders(sec_type=SecurityType.STK, market=Market.ALL)

Return Example

[Order({'account': '1', 'id': 162998104807903232, 'order_id': 341, 'parent_id': 0, 'order_time': 1557972846184, 'reason': '136:Order is already being cancelled.', 'trade_time': 1557975394512, 'action': 'BUY', 'quantity': 2, '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': SPY, 'status': 'CANCELLED', 'remaining': 2}),
Order({'account': '1', 'id': 162998998620389376, 'order_id': 344, 'parent_id': 0, 'order_time': 1557973698590, 'reason': '136:Order is already being cancelled.', 'trade_time': 1557973773622, 'action': 'BUY', 'quantity': 1, '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': SPY, 'status': 'CANCELLED', 'remaining': 1}),
Order({'account': '1', 'id': 152239266327625728, 'order_id': 230, 'parent_id': 0, 'order_time': 1547712418243, 'reason': '201:Order rejected - Reason: YOUR ORDER IS NOT ACCEPTED. IN ORDER TO OBTAIN THE DESIRED POSITION YOUR EQUITY WITH LOAN VALUE [1247.90 USD] MUST EXCEED THE INITIAL MARGIN [4989.99 USD]', 'trade_time': 1547712418275, 'action': 'BUY', 'quantity': 100, 'filled': 0, 'avg_fill_price': 0, 'commission': 0, 'realized_pnl': 0, 'trail_stop_price': None, 'limit_price': 5, 'aux_price': None, 'trailing_percent': None, 'percent_offset': None, 'order_type': 'LMT', 'time_in_force': 'DAY', 'outside_rth': True, 'contract': XYZX, 'status': 'REJECTED', 'remaining': 100})]

get_cancelled_orders Get Cancelled Orders List

TradeClient.get_cancelled_orders(
  account=None,
  sec_type=None,
  market=Market.ALL,
  synmbol=None,
  start_time=None,
  end_time=None,
  sort_by=None,
  **kwargs
)

Description

Retrieve a list of canceled orders, including manually canceled orders, system-canceled orders, expired orders, and similar cases.

The response may also include partially filled orders in which the remaining unfilled portion was canceled.

Parameters

Parameter NameTypeRequiredDescription
accountstrNoAccount ID. If not provided, the default account from client_config is used.
sec_typeSecurityTypeNoSecurity type.
Accepts constants from tigeropen.common.consts.SecurityType.
marketMarketNoMarket identifier.
Accepts constants from tigeropen.common.consts.Market, e.g., Market.US
symbolstrNoSecurity symbol
start_timestr or intNoStart time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
end_timestr or intNoEnd time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
sort_byOrderSortByNoSorting rule and time reference for start_time and end_time. Accepts values from tigeropen.common.consts
Supported values include: LATEST_CREATED LATEST_STATUS_UPDATED
seg_typeSegmentTypeNoAccount segment:
  • SegmentType.SEC — securities
  • SegmentType.FUT — commodities
Values from tigeropen.common.consts.SegmentType

Returns

list

Returns a list of order objects. For detailed field descriptions, see Order Object

Example

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

cancelled_orders = trade_client.get_cancelled_orders(sec_type=SecurityType.STK, market=Market.ALL)

Return Example

Same as get_orders


get_filled_orders Get Filled Orders List

TradeClient.get_filled_orders(
    account=None,
    sec_type=None,
    market=Market.ALL,
    symbol=None,
    start_time=None,
    end_time=None,
    sort_by=None,
    seg_type=None,
    **kwargs
)

Description

Retrieve a list of filled orders.

Orders may be partially filled. In this case the order status may be HELD, CANCELLED, EXPIRED, or REJECTED.

Parameters

Parameter NameTypeRequiredDescription
accountstrNoAccount ID. If not provided, the default account from client_config is used
sec_typeSecurityTypeNoSecurity type.
Accepts constants from tigeropen.common.consts.SecurityType
marketMarketNoMarket identifier.
Accepts constants from tigeropen.common.consts.Market, e.g., Market.US
symbolstrNoSecurity symbol
start_timestr or intYesStart time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
end_timestr or intYesEnd time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
sort_byOrderSortByNoSorting rule and time reference for start_time and end_time. Accepts values from tigeropen.common.consts
Supported values include: LATEST_CREATED LATEST_STATUS_UPDATED
seg_typeSegmentTypeNoAccount segment:
  • SegmentType.SEC — securities
  • SegmentType.FUT — commodities
Values from tigeropen.common.consts.SegmentType

Note: The interval between start_time and end_time cannot exceed 90 days

Returns list

Each element in the list is an Order object. For detailed field descriptions, see Order Object

Example

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

print(trade_client.get_filled_orders(start_time='2025-01-05',end_time='2025-03-29'))

Return Example

Same as get_orders


get_transactions Get Order Transaction Records

TradeClient.get_transactions(account=None, order_id=None, symbol=None, sec_type=None, start_time=None, end_time=None, limit=100, expiry=None, strike=None, put_call=None)

TradeClient.get_transactions(
  account=None, 
  order_id=None, 
  symbol=None, 
  sec_type=None, 
  start_time=None, 
  end_time=None,
  limit=100,
  expiry=None, 
  strike=None, 
  put_call=None
)

Description Get detailed transaction records of filled orders (only applicable to prime/paper trading accounts).

Parameters

Note: When making requests, parameters must be provided as either:

  • order_id
  • or symbol and sec_type
Parameter NameTypeRequiredDescription
accountstrNoAccount ID. If not provided, uses the default account from client_config
order_idintYes/No(required when symbol+sec_type not provided)Global order ID returned after order placement, not local order ID
symbolstrYes/No(required when order_id not provided)Underlying symbol. When querying by symbol, sec_type is required
sec_typeSecurityTypeYes/No(required when order_id not provided)Underlying type. When querying by symbol, sec_type is required. Can use constants from tigeropen.common.consts.SecurityType
start_timestr or intNoStart time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00
end_timestr or intNoEnd time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or `2019-06-07 23:00:00
limitintNoNumber of records to retrieve per request.
Maximum of 100, default of 20
expirystrNoExpiry date (for options).
Format 'YYYYMMDD', e.g. '220121'
strikefloatNoStrike price (for options). e.g. 100.5
put_callstrNoCall or Put (for options). 'PUT' or 'CALL'
page_tokenstrNo

Page token
Note: When using pagination, first pass an empty string to initiate the request. Then, in subsequent calls, pass the returned next_page_token.

When page_token is used, the return becomes a TransactionsResponse object containing both the result list and page_token fields, instead of a transaction list

Returns list or TransactionsResponse object

If page_token is provided (including an empty string), this method returns a TransactionsResponse object

  • TransactionsResponse.result contains the list of transactions
  • TransactionsResponse.next_page_token contains the value for the next request

If page_token is not provided, the method returns a list of Transaction objects

Each element in the list is a Transaction object. For detailed field descriptions, see Transaction

Example

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import TigerOpenClientConfig
client_config = TigerOpenClientConfig(props_path='/path/to/your/properties/file/')

trade_client = TradeClient(client_config)

filled_orders = trade_client.get_transactions(symbol='XYZX', sec_type=SecurityType.STK)

Get transactions using page_token pagination

def test_get_transaction_by_page():
    """Get all transaction records
    Get all transaction records within specified time range using pagination
    """
    results = []
    params = {
        'symbol': 'XYZX',
        'start_time': int(datetime.strptime('2023-01-01', '%Y-%m-%d').timestamp() * 1000),
        'end_time': int(datetime.strptime('2025-08-01', '%Y-%m-%d').timestamp() * 1000),
        'limit': 15,  
        'page_token': ''
    }
    
    page = 1
    while True:
        response: TransactionsResponse = trade_client.get_transactions(**params)
        print(f'page {page}, size {len(response.result)}, next_page_token: {response.next_page_token}')
        page += 1
                    
        if response.result:
            results.extend(response.result)
            
        if not response.next_page_token:
            break
            
        params['page_token'] = response.next_page_token
        
    print(f'total: {len(results)}, results: {results}')

Return Example

Transaction({'account': 111111, 'order_id': 20947299719447552, 'contract': XYZX/STK/USD, 'id': 20947300069016576, 'action': 'BUY', 'filled_quantity': 1, 'filled_price': 132.25, 'filled_amount': 132.25, 'transacted_at': '2020-12-23 17:06:54'}), 

Transaction({'account': 111111, 'order_id': 19837920138101760, 'contract': XYZX/STK/USD, 'id': 19837920740508672, 'action': 'BUY', 'filled_quantity': 1, 'filled_price': 116.21, 'filled_amount': 116.21, 'transacted_at': '2020-09-16 18:02:00'})]
        


Did this page help you?