直接上代码:
```
c_date = '2024-8-14' # T日
def get_natural_high_limits(stocks, date):
"""
获取date日,stocks中自然涨停的股票列表
"""
return get_price(
stocks, end_date=date, count=1, panel=False,
fields=['open', 'close', 'high_limit', 'paused']
).query(
'open < high_limit and close == high_limit and paused == 0'
)['code'].tolist()
#
trade_days = get_trade_days(end_date=c_date, count=6)
all_stocks = get_all_securities(date = trade_days[0]).index.tolist()
# 第一步,T-3日自然涨停
t_3list = get_natural_high_limits(all_stocks, trade_days[-4]) # T-3日 自然涨停
# 第二步,进一步筛选
# 策略1,T-2日也必须涨停
t_2list = get_natural_high_limits(t_3list, trade_days[-3]) # T-2日 自然涨停
# 策略2,T-4日也必须涨停
t_4list = get_natural_high_limits(t_3list, trade_days[-5]) # T-4日 自然涨停
```
这样,就把8月14的备选票缩减到了,1只(策略1,t_2list,['603458.XSHG']),7只(策略2,t_4list,['000011.XSHE', '002285.XSHE', '300615.XSHE', '600696.XSHG', '603377.XSHG', '603389.XSHG', '603959.XSHG'])
603377,603959,这2只是ST, 去掉;300615是创业板,去掉
然后再去判断个位数的只数,T-1日是否非炸板缩量下跌。
T-1日,603458勘设股份是涨停,去掉;这样,就剩下岩石股份,世联行,深物业A,亚振家具等4只策略2的票需要去进一步判断了。
这样的效率,可想而知,每天选股,都是毫秒级的速度。
2024-08-15