3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
get_trend_data在 ptrade 平台中,get_trend_data 是专门用于获取集中竞价期间(通常为 9:15 - 9:25)标的数据的接口。通过该接口,我们可以获取竞价阶段的累计成交量、成交额以及加权价格,从而在开盘前预判个股的量能突破和资金关注度。
get_trend_data(date=None, stocks=None, market=None)
date (str):查询日期,格式为 YYYYmmdd。若不传,默认返回当日数据。stocks (str/list[str]):股票代码。例如 '600570.SS' 或 ['600570.SS', '000001.SZ']。market (str/list[str]):市场代码,如 'XSHG' (上海) 或 'XSHE' (深圳)。stocks 和 market 不能同时入参。返回一个字典(dict),Key 为股票代码,Value 为包含竞价数据的字典,包含以下字段:
time_stamp: 时间戳 (int)hq_px: 价格 (float)wavg_px: 加权价格 (float)business_amount: 总成交量 (int)business_balance: 总成交额 (int)amount: 持仓量 (int)以下是一个完整的 ptrade 策略示例。策略在每天 9:26(集合竞价结束,连续竞价开始前)调用 get_trend_data 获取目标股票在集合竞价阶段的累计成交额。如果成交额突破设定阈值,则在开盘时立即买入。
# -*- coding: utf-8 -*-
def initialize(context):
# 设置操作的股票池
g.security = '600570.SS' # 恒生电子
set_universe(g.security)
# 设定集合竞价量能突破的成交额阈值(例如:集合竞价成交额突破 500 万元)
g.volume_breakthrough_threshold = 5000000
# 每天 9:26 分运行集合竞价量能分析函数
run_daily(context, analyze_aggregate_auction, time='9:26')
def before_trading_start(context, data):
g.has_ordered = False
def analyze_aggregate_auction(context):
if g.has_ordered:
return
# 获取当天的集合竞价数据
current_date = context.blotter.current_dt.strftime('%Y%m%d')
trend_data = get_trend_data(date=current_date, stocks=g.security)
if g.security in trend_data:
stock_data = trend_data[g.security]
# 提取集合竞价截止时的累计成交额与最新价格
auction_balance = stock_data.get('business_balance', 0)
auction_price = stock_data.get('hq_px', 0)
log.info(f"[{g.security}] 集合竞价结束。成交额: {auction_balance} 元, 竞价价格: {auction_price} 元")
# 判断是否突破量能阈值
if auction_balance >= g.volume_breakthrough_threshold:
log.info(f"检测到量能突破!集合竞价成交额 {auction_balance} 元超过阈值 {g.volume_breakthrough_threshold} 元。准备开盘买入。")
# 获取当前可用资金
cash = context.portfolio.cash
if cash > 0:
# 以限价单(竞价价格)或市价单买入
order_value(g.security, cash, limit_price=auction_price)
g.has_ordered = True
else:
log.info(f"量能未突破,当前竞价成交额为 {auction_balance} 元。")
def handle_data(context, data):
# 盘中常规逻辑(本策略主要在 9:26 定时触发,此处留空)
pass
run_daily 的触发时间设在 9:26 至 9:29 之间,以便获取最完整的竞价结果并做好开盘交易准备。get_trend_data 返回空字典 {},策略应做好 if g.security in trend_data 的容错判断,避免策略因 KeyError 终止。