ST还是要靠基本面来筛选才行,因为示例中没有考虑9:30的成交情况,以及接近跌停可能也卖不出的情况,做了下面的调整,不管怎么测都是负的。
买入从 9:30 改到 9:35,避免直接吃回测开盘撮合红利。
1 月、4 月、12 月风险窗口默认不开新仓,只处理已有持仓。
买入过滤增加:
价格低于 1.5 不买;
接近涨停不买,避免理论可买、******排队买不到;
接近跌停不买,避免承接失败;
昨日成交额低于 500万 不买;
近 5 分钟成交额低于 50万 不买;
单票买入金额不超过昨日成交额 2%、近 5 分钟成交额 5%。
总仓位限制为 50%,不再默认满仓打 ST。
卖出增加 T+1 可卖仓位判断:当天买入没有 closeable_amount 就不会卖。
卖出时如果接近跌停,按******“卖不出/成交质量差”处理,不再乐观止损。
修复原代码里“昨日涨停价被今日涨停价覆盖”的问题。
修复 4月31日 这种日期错误,统一为真实风险窗口。
修复 filter_stocks() 里 Timestamp/date 类型不一致可能导致筛空的问题。
get_shifted_date() 改用 get_trade_days(),不再每次扫全量交易日。
国九条基础过滤扩展到市值、流通市值、收入、净利润、ROE/ROA。
2026-05-07