获取订单信息

大约 9 分钟

get_orders 获取订单列表

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

说明

获取账户的订单历史,包括所有状态、各个证券类型的订单,可以传参数进行筛选

参数

参数名类型是否必填描述
accountstrNo账户id,若不填则使用 client_config 中的默认 account
sec_typeSecurityTypeNo证券类型, 可以使用 tigeropen.common.consts.SecurityType 下的常量
marketMarketNo所属市场,可以使用 tigeropen.common.consts.Market 下的常量
symbolstrNo证券代码
start_timestr或intNo起始时间(闭区间)。毫秒单位时间戳或日期字符串,如 1643346000000 或 '2019-01-01' 或 '2019-01-01 12:00:00, (当 sort_by=LATEST_STATUS_UPDATED 时,按订单状态更新时间进行过滤)
end_timestr或intNo截至时间(开区间)。毫秒单位时间戳或日期字符串,如 1653346000000 或 '2019-11-01' 或 '2019-11-01 15:00:00, (当 sort_by=LATEST_STATUS_UPDATED 时,按订单状态更新时间进行过滤)
limitintNo每次获取订单的数量, 默认:100, 最大值:300
is_briefboolNo】是否返回精简的订单数据
statuslist[OrderStatus]No】订单状态,可以使用 tigeropen.common.consts.OrderStatus 的枚举
sort_byOrderSortByNo】排序和起止时间作用字段,LATEST_CREATED/LATEST_STATUS_UPDATED; 默认值:LATEST_CREATED
seg_typeSegmentTypeNo账户分段。可用:SegmentType.SEC 代表证券;SegmentType.FUT 代表商品,可以从中导入 tigeropen.common.consts.SegmentType

返回

list

列表中的每个元素都是一个 Order 对象(tigeropen.trade.domain.order.Order),具体字段含义详见 Order 对象

示例

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

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

# 限制返回条数;按下单时间过滤(如果 start_time/end_time 传字符串, 服务端默认当北京时间处理;sdk的 client_config.timezone 可设置时区,设置后,时间字符串会当作该时区的时间)
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'
                                 )
# 查看订单属性
order1 = orders[0]
print(order1.status)  # 订单状态
print(order1.id)  # 订单号
print(order1.contract.symbol) # 合约代码
print(order1.contract.sec_type) # 合约类型

分页获取订单

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

def test_get_orders_by_page():
    result = list()
    # 每次返回数量(需 <= 300)
    limit = 300
    conditions = {
        'limit': limit,
        'start_time': '2025-01-01',
        'end_time': '2025-02-12',
        #  返回数据是按照时间逆序,即最新的数据在前。此处按照下单时间 order_time 排序
        'sort_by': OrderSortBy.LATEST_CREATED,
        # 可继续添加其他筛选条件
    }
    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

返回示例

[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': AAPL, 'status': 'REJECTED', 'remaining': 100})]

get_order 获取指定订单

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

说明

通过id获取指定的订单

参数

参数名类型是否必填描述
accountstrno账户id,若不填则使用 client_config 中的默认 account
idintyes在提交订单后返回的全局订单id
order_idintno】本地订单id
is_briefboolno】是否返回精简的订单数据
show_chargesboolNo是否显示 tigeropen.trade.domain.order.Charge 的列表

返回

Order对象

具体字段含义详见 Order 对象

示例

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

print(trade_client.get_order(id=31059079170361344))

返回示例

Order({'account': '572386', 'id': 31059079170361344, 'order_id': 948, 'parent_id': None, 'order_time': 1685861168000, 
'reason': '订单已过期', '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': AAPL/STK/USD, 'status': 'CANCELLED', 'remaining': 1})

get_open_orders 获取待成交的订单列表

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)

说明

获取待成交的订单列表,可能会包含部分成交但未成交部分依然处于待成交状态的订单。

参数

参数名类型是否必填描述
accountstrno账户id,若不填则使用 client_config 中的默认 account
sec_typeSecurityTypeno证券类型,可以使用 tigeropen.common.consts.SecurityType 下的常量
marketMarketno所属市场,可以使用 tigeropen.common.consts.Market 下的常量,如 Market.US
symbolstrno证券代码
start_timestr或intno开始时间。毫秒级别的时间戳,或日期时间字符串,如 1639386000000 或 '2019-06-07 23:00:00' 或 '2019-06-07'
end_timestr或intno截至时间。毫秒级别的时间戳,或日期时间字符串,如 1639386000000 或 '2019-06-07 23:00:00' 或 '2019-06-07'
parent_idintNo主订单ID
sort_byOrderSortByNo用于排序和筛选 start_time 和 end_time 的字段, 可从 tigeropen.common.consts 导入可用值,如 LATEST_CREATED 或 LATEST_STATUS_UPDATED
seg_typeSegmentTypeNo账户分段。可用:SegmentType.SEC 代表证券;SegmentType.FUT 代表商品,可以从 tigeropen.common.consts.SegmentType 导入

返回

list

列表中的每个元素是一个 Order 对象(tigeropen.trade.domain.order.Order), 具体字段含义详见Order对象

示例

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

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

返回示例

同 get_orders


get_cancelled_orders 获取已撤销的订单列表

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

说明

获取已撤销的订单列表。包括主动撤销、系统撤销、已失效的订单等。可能会包含部分成交但未成交部分被撤销的订单。

参数

参数名类型是否必填描述
accountstrno账户id,若不填则使用 client_config 中的默认 account
sec_typeSecurityTypeno证券类型,可以使用 tigeropen.common.consts.SecurityType 下的常量
marketMarketno所属市场,可以使用 tigeropen.common.consts.Market 下的常量,如 Market.US
symbolstrno证券代码
start_timestr或intno开始时间。毫秒级别的时间戳,或日期时间字符串,如 1639386000000 或 '2019-06-07 23:00:00' 或 '2019-06-07'
end_timestr或intno截至时间。毫秒级别的时间戳,或日期时间字符串,如 1639386000000 或 '2019-06-07 23:00:00' 或 '2019-06-07'
sort_byOrderSortByNo用于排序和筛选 start_time 和 end_time 的字段, 可从 tigeropen.common.consts 导入可用值,如 LATEST_CREATED 或 LATEST_STATUS_UPDATED
seg_typeSegmentTypeNo账户分段。可用:SegmentType.SEC 代表证券;SegmentType.FUT 代表商品,可以从 tigeropen.common.consts.SegmentType 导入

返回

list

list 中的每个元素都是一个 Order 对象,具体字段含义详见Order对象

示例

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

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

返回示例

同 get_orders


get_filled_orders 获取已成交的订单列表

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)

说明 获取已成交订单列表

订单可能会有部分成交的状态,此时订单状态比较特殊,有可能是HELD,CANCELLED,EXPIRED,REJECTED的任意一种状态,如需查询部分成交的订单,请参考FAQ-交易-如何判断订单是部分成交状态

参数

参数名类型是否必填描述
accountstrno账户id,若不填则使用 client_config 中的默认 account
sec_typeSecurityTypeno证券类型,可以使用 tigeropen.common.consts.SecurityType 下的常量
marketMarketno所属市场,可以使用 tigeropen.common.consts.Market 下的常量,如 Market.US
symbolstrno证券代码
start_timestr或intYes开始时间。毫秒级别的时间戳,或日期时间字符串,如 1639386000000 或 '2019-06-07 23:00:00' 或 '2019-06-07'
end_timestr或intYes截至时间。毫秒级别的时间戳,或日期时间字符串,如 1639386000000 或 '2019-06-07 23:00:00' 或 '2019-06-07'
sort_byOrderSortByNo用于排序和筛选 start_time 和 end_time 的字段, 可从 tigeropen.common.consts 导入可用值,如 LATEST_CREATED 或 LATEST_STATUS_UPDATED
seg_typeSegmentTypeNo账户分段。可用:SegmentType.SEC 代表证券;SegmentType.FUT 代表商品,可以从 tigeropen.common.consts.SegmentType 导入

start_time 和 end_time 之间的间隔不能超过 90 天

返回list

list 中的每个元素都是一个 Order 对象,具体字段含义详见Order对象

示例

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

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

返回示例

同 get_orders


get_transactions 获取订单成交记录

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)

说明
获取已成交订单的详细成交记录(仅适用于综合/模拟账户)。

参数

备注:请求时,要么传 order_id,要么传 symbolsec_type,两者必填其一

参数名类型是否必填描述
accountstrno账户id,若不填则使用 client_config 中的默认 account
order_idintyes/no(当symbol+sec_type未传时本参数必填)下单后返回的全局订单ID,非本地订单ID
symbolstryes/no(当order_id未传时本参数必填)标的代码。使用symbol查询时sec_type为必传
sec_typeSecurityTypeyes/no(当order_id未传时本参数必填)标的类型。使用symbol查询时sec_type为必传
start_timestr或intno订单最后更新时间的起始时间。毫秒单位时间戳或日期字符串,如 1643346000000 或 '2019-01-01' 或 '2019-01-01 12:00:00
end_timestr或intno订单最后更新时间的截至时间。毫秒单位时间戳或日期字符串,如 1653346000000 或 '2019-11-01' 或 '2019-11-01 15:00:00
limitintno每次获取记录的数量,最多 100,默认为 20
expirystrno过期日(适用于期权)。 形式 'yyyyMMdd', 比如 '220121'
strikefloatno行权价(适用于期权)。如 100.5
put_callstrno看涨或看跌(适用于期权)。'PUT' 或 'CALL'

返回list 列表中每个元素为 Transaction 对象,具体字段含义见 Transaction

示例

from tigeropen.trade.trade_client import TradeClient
from tigeropen.tiger_open_config import get_client_config
client_config = get_client_config(private_key_path='私钥路径', tiger_id='your tiger id', account='your account', secret_key='机构交易员专有密钥')
trade_client = TradeClient(client_config)

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

返回示例

Transaction({'account': 111111, 'order_id': 20947299719447552, 'contract': AAPL/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': AAPL/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'})]
        
上次编辑于: