问题描述
get_tick_direction返回的OrderedDict对象包含哪些字段,如何解析这些数据?
解决方案
ptrade 中 get_tick_direction 返回数据格式详解
在 ptrade 量化交易平台中,get_tick_direction 函数用于获取当日的分时成交行情数据。该函数返回的数据格式为一个 OrderedDict(有序字典) 对象,其中包含了所查询股票的分时成交明细。
1. 返回数据整体结构
返回的 OrderedDict 对象的键(Key)为股票代码(如 '000001.SZ'),值(Value)为包含该股票分时成交行情数据的字典或结构。整体格式如下:
OrderedDict([
('股票代码1', {'time_stamp': [...], 'hq_px': [...], ...}),
('股票代码2', {'time_stamp': [...], 'hq_px': [...], ...})
])
2. OrderedDict 包含的字段解析
对于每只股票,其对应的数据包含了以下核心字段(部分字段目前行情暂不支持,返回为0):
| 字段名 | 数据类型 | 字段说明 |
|---|---|---|
| time_stamp | numpy.int64 |
时间戳(毫秒级) |
| hq_px | numpy.float64 |
价格 |
| hq_px64 | numpy.int64 |
价格(行情暂不支持,返回均为0) |
| business_amount | numpy.int64 |
成交数量 |
| business_balance | numpy.int64 |
成交金额 |
| business_count | numpy.int64 |
成交笔数 |
| business_direction | numpy.int64 |
成交方向(0:卖,1:买,2:平盘) |
| amount | numpy.int64 |
持仓量(行情暂不支持,返回均为0) |
| start_index | numpy.int64 |
分笔关联的逐笔开始序号(行情暂不支持,返回均为0) |
| end_index | numpy.int64 |
分笔关联的逐笔结束序号(行情暂不支持,返回均为0) |
3. 如何解析这些数据?(Python 源码示例)
在策略的 handle_data 或其他事件函数中,可以通过键值对的方式轻松提取和解析这些数据。以下是一个完整的解析示例:
def initialize(context):
# 设置股票池
g.security = ['000001.SZ', '000002.SZ']
set_universe(g.security)
def handle_data(context, data):
# 获取指定股票列表的分时成交数据
direction_data = get_tick_direction(g.security)
if direction_data:
# 解析 000001.SZ 的数据
if '000001.SZ' in direction_data:
sz_data = direction_data['000001.SZ']
# 获取成交量、成交价和成交方向
business_amount = sz_data.get('business_amount', [])
hq_px = sz_data.get('hq_px', [])
business_direction = sz_data.get('business_direction', [])
log.info('000001.SZ 最新分时成交量:%s' % business_amount)
log.info('000001.SZ 最新分时成交价:%s' % hq_px)
log.info('000001.SZ 最新分时成交方向:%s' % business_direction)
注意事项:
- 沪深市场都有分时成交数据,但必须开通 Level-2 行情才有数据推送,否则无数据返回。
- 默认情况下,
get_tick_direction返回的是当日数据,且可以通过search_direction参数控制搜索方向(1向前,2向后)。