3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,实现集合竞价追涨停策略的核心在于利用 run_daily 定时周期性函数在盘前(如 9:23)触发策略逻辑,并通过 get_snapshot 获取实时行情快照中的最新价(last_px)与涨停价(up_px)进行对比。如果最新价达到涨停价,则使用 order 接口以涨停价进行限价委托申报。
以下是基于 ptrade 标准 API 编写的完整集合竞价追涨停策略代码:
def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池,这里以恒生电子(600570.SS)为例
g.security = '600570.SS'
set_universe(g.security)
# 每天 9:23 运行集合竞价处理函数
run_daily(context, aggregate_auction_func, time='9:23')
def aggregate_auction_func(context):
stock = g.security
# 获取目标股票的实时行情快照
snapshot = get_snapshot(stock)
if not snapshot or stock not in snapshot:
log.warning("未能获取到 %s 的行情快照" % stock)
return
# 获取最新价与涨停价
price = snapshot[stock]['last_px']
up_limit = snapshot[stock]['up_px']
# 如果最新价不小于涨停价,则以涨停价挂单买入 100 股
if float(price) >= float(up_limit):
log.info("检测到 %s 集合竞价封涨停,正在以涨停价 %s 报单买入" % (stock, up_limit))
order(stock, 100, limit_price=up_limit)
else:
log.info("%s 当前集合竞价未达到涨停价,不进行操作" % stock)
def handle_data(context, data):
# 盘中分钟/日线主回调函数,本策略主要在集合竞价定时运行,此处留空
pass
run_daily(context, func, time='9:31'):用于以日为单位周期性运行指定函数。在交易场景中,可设置范围为 00:00~23:59。本策略将其设定在 9:23 触发,以便在集合竞价结束前(9:25 之前)完成预判与报单。get_snapshot(security):用于获取实时行情快照。返回的字典中包含 last_px(最新成交价)和 up_px(涨停价格)等关键字段。order(security, amount, limit_price=None):按数量买卖接口。买入时 amount 传入正数。在追涨停场景下,务必传入 limit_price(限价),以确保报单符合价格笼子及柜台规范。limit_price 精度符合交易所规范,否则可能导致委托失败。order 函数依然会返回 order_id,但该笔委托在柜台可能会被判定为废单(成交回调中的 status 为 '9')。