每日盘前股票池筛选(剔除ST或停牌或退市)
#自定义函数,剔除满足指定属性的股票列表
def filter_stock_type(stock_list,type):
filter_stocks=[]
st_status = get_stock_status(g.security, type)
for i in stock_list:
if st_status[i] is not True:
filter_stocks.append(i)
return filter_stocks
#初始化函数,全局只运行一次
def initialize(context):
g.security=get_Ashares()
set_universe(g.security)
#盘前函数,每日执行一次
def before_trading_start(context, data):
#更新当日A 股股票池
g.security=get_Ashares()
set_universe(g.security)
log.info("今日A 股个数为: %d"%len(g.security))
#例一:筛选非停牌股票列表,'HALT' – 查询是否停牌
st_status = get_stock_status(g.security, 'HALT')
filter_stocks=[]
for i in g.security:
if st_status[i] is not True:
filter_stocks.append(i)
log.info('非停牌股票个数为: %d'%len(filter_stocks))
#同理可筛选非ST 股、非退市股票列表
#'ST' – 查询是否属于ST 股票
#'DELISTING' – 查询是否退市
#若需要同时剔除多个属性,建议构造自定义函数进行调用,简化代码
#例二:筛选非停牌且非ST 股票列表
filter1=filter_stock_type(g.security,'HALT')
filter2=filter_stock_type(g.security,'ST')
#取交集
filter_stocks_2=list(set(filter1) & set(filter2))
log.info("非停牌且非ST 的股票个数为%d"%len(filter_stocks_2))
def handle_data(context, data):
pass
暂无评论