我发现一个bug,所有策略里面,过滤涨停、过滤跌停的函数,在
run_weekly(weekly_adjustment, weekday=1, time='9:30', reference_security='000300.XSHG') 这个语句里面,是失效的,因为
last_prices = history(1, unit='1m', field='close', security_list=stock_list)
这一句,在9:30的时候,取到的是上一交易日的收盘价。
解决方法是run_weekly改在9:31运行。或者采用740策略里面的过滤方法,用get_current_data取当天开盘价与涨停价。
不过又去查了一下聚宽的撮合成交逻辑,那么涨跌停过滤失败,可能产生的后果就是买入开盘即跌停的票,这似乎也没有什么特别大的问题。开盘跌停,这个票的市值排名,还会往前移动,对小市值逻辑并无影响。而且,开盘跌停,当天剩下的时间段涨回去,和第二天股价继续下跌,二者皆有概率,很难说谁好谁坏。对于当天开盘涨停的票,在策略有滑点的情况下,按照聚宽的规则,是无法成交的,除非开启盘口撮合。
所以说这个过滤,我个人觉得并不是特别重要~
我也做过测试(05年至22年全时间段),在740当中关闭涨跌停买入过滤,收益相差可以忽略。
当然作为风控措施加上,也未尝不可
2023-02-06