3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化平台中,是可以实时获取全市场 A 股的涨跌停情况的。你可以通过组合使用 get_Ashares() 和 check_limit() 这两个 API 来实现。
get_Ashares() 函数获取当前交易日的所有 A 股代码列表。check_limit(security) 函数。该函数会返回一个字典,键为股票代码,值为涨跌停状态码。check_limit 返回的状态码含义如下:
2:触板涨停(已经是涨停价格,但还有卖盘)1:涨停0:既不涨停也不跌停-1:跌停-2:触板跌停(已经是跌停价格,但还有买盘)以下是一个在 handle_data 中实时获取并打印全市场涨停和跌停股票代码的示例:
def initialize(context):
# 初始化时可以不设置特定的 universe,因为我们要获取全市场
pass
def handle_data(context, data):
# 1. 获取全市场 A 股代码列表
all_ashares = get_Ashares()
# 2. 检查这些股票的涨跌停状态
# 注意:全市场股票较多,调用可能需要一定时间
limit_status_dict = check_limit(all_ashares)
limit_up_list = [] # 涨停列表
limit_down_list = [] # 跌停列表
# 3. 筛选涨停和跌停的股票
if limit_status_dict:
for stock_code, status in limit_status_dict.items():
if status == 1 or status == 2:
limit_up_list.append(stock_code)
elif status == -1 or status == -2:
limit_down_list.append(stock_code)
log.info(f"当前全市场涨停股票数量: {len(limit_up_list)}")
log.info(f"当前全市场跌停股票数量: {len(limit_down_list)}")
# 如果需要查看具体代码,可以取消下面的注释
# log.info(f"涨停代码: {limit_up_list}")
# log.info(f"跌停代码: {limit_down_list}")
handle_data(如果是分钟级别或 tick 级别)中频繁调用 check_limit 传入全市场代码可能会消耗较多时间,影响策略执行效率。建议根据实际需求控制调用频率,例如使用 run_interval 定时查询,或者仅对特定的股票池(如某个板块或自选股)进行查询。check_limit 会将该异常代码的状态返回为 0(既不涨停也不跌停)。