3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在PTrade中,获取股票在9:15到9:25集合竞价期间的撮合价格和成交量数据,主要使用 get_trend_data 函数。
该函数专门用于获取集中竞价期间的代码数据。
get_trend_data此接口可在研究、回测、交易模块中使用。
get_trend_data(date=None, stocks=None, market=None)
stocks 和 market 不能同时使用。该函数返回一个字典,包含以下关键字段:
hq_px: 撮合价格(当前匹配价)。business_amount: 成交量(当前匹配量)。business_balance: 成交额。time_stamp: 时间戳。以下代码展示了如何在策略中获取指定股票的集合竞价数据。
def initialize(context):
# 设置股票池
g.security = '600570.SS'
set_universe(g.security)
# 在回测或交易中,通常在盘前或开盘时刻调用查看
# 这里设置在9:26查看刚刚结束的集合竞价结果,或者在9:15-9:25期间通过run_interval调用
run_daily(context, check_auction_data, time='9:26')
def check_auction_data(context):
# 获取指定股票的集合竞价数据
# 注意:不传date默认取当前日期
trend_data = get_trend_data(stocks=g.security)
if trend_data:
# 获取特定股票的数据
stock_info = trend_data.get(g.security)
if stock_info:
# 打印撮合价格 (hq_px)
match_price = stock_info.get('hq_px')
# 打印成交量 (business_amount)
match_volume = stock_info.get('business_amount')
# 打印时间戳
timestamp = stock_info.get('time_stamp')
log.info("股票: %s, 时间: %s" % (g.security, timestamp))
log.info("集合竞价撮合价格: %s" % match_price)
log.info("集合竞价成交量: %s" % match_volume)
else:
log.info("未获取到 %s 的竞价数据" % g.security)
def handle_data(context, data):
pass
run_interval 或 run_daily)调用,返回的是当时的实时撮合快照。stocks 参数和 market 参数不能同时传入,只能二选一。Q: get_snapshot 函数能用来获取集合竞价数据吗?
A: 在实盘交易的 9:15-9:25 期间,get_snapshot 返回的 last_px 通常也是当前的虚拟撮合价格,business_amount 是虚拟成交量。但是,get_trend_data 是官方文档中明确定义为“获取集中竞价期间代码数据”的专用接口,语义更明确。需要注意的是,在 before_trading_start(通常在9:00-9:15运行)中调用 get_snapshot 大部分数据可能为0。
Q: 如果我想获取整个市场的竞价数据怎么办?
A: 可以使用 market 参数代替 stocks 参数。例如:get_trend_data(market=['XSHG', 'XSHE']) 可以获取沪深两市的竞价数据。
Q: 回测模式下能看到9:15到9:20的逐笔撮合变化吗?
A: 通常回测数据精度为分钟线(1m)或日线(1d)。除非您拥有Tick级别的回测数据源,否则在普通回测模式下,很难重现9:15-9:25期间每一秒的撮合变化,通常只能获取到9:25定格后的开盘数据。