3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,get_gear_price(sids) 函数用于获取指定代码的档位行情价格。其返回的数据结构是一个嵌套的字典(dict),主要包含委买档位和委卖档位信息。
返回的字典主要包含两个核心字段:
bid_grp: 委买档位数据。offer_grp: 委卖档位数据。这两个字段的值也是字典,其键(Key)为档位级别(如 1 代表买一/卖一,2 代表买二/卖二等),值(Value)为一个列表(List),包含该档位的具体信息。
列表中的元素依次为:
{1: 33200, 2: 104800, ...})。根据传入参数的不同(单只代码 vs 多只代码),返回的结构略有差异。
直接返回包含 bid_grp 和 offer_grp 的字典:
{
'bid_grp': {
1: [13.68, 15225900, 4905],
2: [13.67, 30200, 32],
# ... 更多档位
},
'offer_grp': {
1: [13.69, 50000, 10],
2: [13.70, 20000, 5],
# ... 更多档位
}
}
返回以股票代码为键的嵌套字典:
{
'600570.SS': {
'bid_grp': {1: [41.88, 1200, 0], 2: [41.87, 2300, 0], ...},
'offer_grp': {1: [41.89, 4400, 0], 2: [41.90, 13020, 0], ...}
},
'000001.SZ': {
'bid_grp': {1: [15.01, 5000, 0], ...},
'offer_grp': {1: [15.02, 6000, 0], ...}
}
}
对于涨停股或开通 L2 行情的情况,第一档数据可能会包含委托队列,且卖盘可能为空:
{
'bid_grp': {
1: [13.68, 15225900, 4905, {1: 33200, 2: 104800, 3: 1000, 4: 100, 5: 51800}], # 包含委托队列
2: [13.67, 30200, 32],
# ...
},
'offer_grp': {
1: [0.0, 0, 0, {}], # 涨停时卖一为空
2: [0.0, 0, 0],
# ...
}
}
以下是一个在 handle_data 中获取并解析 get_gear_price 数据的代码示例:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取单只股票的档位行情
gear_data = get_gear_price(g.security)
# 检查是否获取成功(失败时返回 {'bid_grp': {}, 'offer_grp': {}})
if not gear_data.get('bid_grp'):
log.warning(f"获取 {g.security} 档位数据失败或为空")
return
# 解析买一档数据
buy_1_info = gear_data['bid_grp'].get(1)
if buy_1_info:
buy_1_price = buy_1_info[0] # 买一价
buy_1_vol = buy_1_info[1] # 买一量
buy_1_count = buy_1_info[2] # 买一笔数
log.info(f"买一价: {buy_1_price}, 买一量: {buy_1_vol}, 买一笔数: {buy_1_count}")
# 检查是否包含 L2 委托队列 (列表长度大于3)
if len(buy_1_info) > 3:
buy_1_queue = buy_1_info[3]
log.info(f"买一委托队列: {buy_1_queue}")
# 解析卖一档数据
sell_1_info = gear_data['offer_grp'].get(1)
if sell_1_info:
sell_1_price = sell_1_info[0]
log.info(f"卖一价: {sell_1_price}")
{"bid_grp": {}, "offer_grp": {}},解析前务必进行判空处理。0,且无委托队列字典。