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 Name

Type

Required

Description

account

str

No

Account ID. If not provided, the default account from client_config is used

sec_type

SecurityType

No

Security type. Values from tigeropen.common.consts.SecurityType

market

Market

No

Market identifier. Values from tigeropen.common.consts.Market.
Default: Market.ALL

symbol

str

No

Security symbol

start_time

str or int

No

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_time

str or int

No

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)

limit

int

No

Number of orders to return per request.
Default: 100 Maximum: 300

is_brief

bool

No

Whether to return brief order data
Global accounts only

status

list[OrderStatus]

No

Filter by order status.
Values from tigeropen.common.consts.OrderStatus
Global accounts only

sort_by

OrderSortBy

No

Sorting rule and time reference. Supported values:
LATEST_CREATED LATEST_STATUS_UPDATED

Default: LATEST_CREATED
Prime accounts only

seg_type

SegmentType

No

Account segment.
Examples:

  • SegmentType.SEC — securities
  • SegmentType.FUT — commodities

Values from tigeropen.common.consts.SegmentType

page_token

str

No

Pagination 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 Name

Type

Required

Description

account

str

No

Account ID. If not provided, the default account from client_config is used

id

int

Yes

Global order ID returned after order submission

order_id

int

No

Local order ID
Global accounts only

is_brief

bool

No

Whether to return brief order data
Global accounts only

show_charges

bool

No

Whether 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 Name

Type

Required

Description

account

str

No

Account ID. If not provided, the default account from client_config is used

sec_type

SecurityType

No

Security type.
Values from tigeropen.common.consts.SecurityType

market

Market

No

Market identifier.
Values from tigeropen.common.consts.Market, e.g. Market.US

symbol

str

No

Security symbol

start_time

str or int

No

Start time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

end_time

str or int

No

End time (inclusive). Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

parent_id

int

No

Parent order ID

sort_by

OrderSortBy

No

Sorting rule and time reference for start_time and end_time. Supported values include:
LATEST_CREATED LATEST_STATUS_UPDATED

seg_type

SegmentType

No

Account 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 Name

Type

Required

Description

account

str

No

Account ID. If not provided, the default account from client_config is used.

sec_type

SecurityType

No

Security type.
Accepts constants from tigeropen.common.consts.SecurityType.

market

Market

No

Market identifier.
Accepts constants from tigeropen.common.consts.Market, e.g., Market.US

symbol

str

No

Security symbol

start_time

str or int

No

Start time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

end_time

str or int

No

End time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

sort_by

OrderSortBy

No

Sorting 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_type

SegmentType

No

Account 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 Name

Type

Required

Description

account

str

No

Account ID. If not provided, the default account from client_config is used

sec_type

SecurityType

No

Security type.
Accepts constants from tigeropen.common.consts.SecurityType

market

Market

No

Market identifier.
Accepts constants from tigeropen.common.consts.Market, e.g., Market.US

symbol

str

No

Security symbol

start_time

str or int

Yes

Start time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

end_time

str or int

Yes

End time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

sort_by

OrderSortBy

No

Sorting 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_type

SegmentType

No

Account 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 Name

Type

Required

Description

account

str

No

Account ID. If not provided, uses the default account from client_config

order_id

int

Yes/No(required when symbol+sec_type not provided)

Global order ID returned after order placement, not local order ID

symbol

str

Yes/No(required when order_id not provided)

Underlying symbol. When querying by symbol, sec_type is required

sec_type

SecurityType

Yes/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_time

str or int

No

Start time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or 2019-06-07 23:00:00

end_time

str or int

No

End time (inclusive).
Millisecond timestamp or date string, e.g. 1639836000000, 2019-06-07, or `2019-06-07 23:00:00

limit

int

No

Number of records to retrieve per request.
Maximum of 100, default of 20

expiry

str

No

Expiry date (for options).
Format 'YYYYMMDD', e.g. '220121'

strike

float

No

Strike price (for options). e.g. 100.5

put_call

str

No

Call or Put (for options). 'PUT' or 'CALL'

page_token

str

No

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'})]