rbq2025 发布于26天前
回复 80
浏览 5088
90
这几天烟花大佬发布了五福5.0系列,群友也给了不少意见,正好这个5.0系列和我之前的一个策略构思比较吻合,今天花了一天的时间终于把策略给完整的做出来了,目前看来回测效果很不错,还有很多值得调试的地方,欢迎大家拍砖和讨论。
再一次感谢烟花大佬的无私奉献,为大家贡献了这么好的策略!!
首先是策略的核心思路,烟花大佬把5.0的策略分成了正常期和走弱期,但是熟悉A股的同学都知道,实际上股市分成了上升趋势,震荡无序的走势和下降趋势,不管哪个国家的股市都遵照这个规律。
基于此,我在策略加入了震荡期,合共三个周期,正常期(上升趋势),震荡期(无序的趋势),走弱期(下降趋势)。至于如果从这些确实里轮转,我采用的是从6个指数入手,通过MA10和MA20来判断,具体的判断逻辑请见下面的详细解读,有兴趣的同学也可以按照自己的经验修改这三个状态进出的条件。在交易逻辑这块,除了保留原来五福5.1里面的逻辑,还在震荡期里加入了五福35里的高斯滤波器逻辑,沿用了之前在五福35小优化版本里的一些逻辑,以提升震荡期的收益。此外还增加了防止频繁买卖ETF的逻辑,减少摩擦成本。
下面是五福51的长期和短期回测结果,烟花大佬设置的分母是3000:

下面是新代码短期回测和长期回测的结果,设置g.global_liquidity_threshold_divisor = 3000,和烟花大佬五福51的设置一样,过滤了每日成交低于1.4亿的ETF,可以适用百万级别的资金了,可以看出对比原版的51,这个版本的收益和回撤都有了不少的提升,也符合我追求的高收益低回撤可以让人安稳睡觉的:

下面有几个特别说明:
(1)有关大盘状态的判断条件,下面用了沪深300,中小板指数,创业板,中证500,中证1000和中证2000作为标的,应该基本涵盖了主流指数了,通过以下几个参数可以控制三种状态的切换,大家可以自由测试和搭配:
# 六指数齐备时:below_ma20 计数 ≥ 此值 → 走弱期;above_ma10 计数 ≥ 此值 → 正常期(且未触发走弱)
g.normal_ma_lookback = 10 # 正常期广度:站上 MA10 的指数个数
g.regime_ma20_lookback = 20 # 走弱判定用的 MA20 周期(日)
g.weak_period_ma_lookback = 10 # 保留变量名,与 normal_ma_lookback 一致
g.regime_weak_below_ma20_min = 4 # 默认 6 即「六指均跌破 MA20」
g.regime_normal_above_ma10_min = 4
indexes = {
'沪深300': '000300.XSHG',
'深证综指(399101)': '399101.XSHE',
'创业板': '399006.XSHE',
'中证A500': '000510.XSHG',
'中证1000': '000852.XSHG',
'国证2000(代中证2000)': '399303.XSHE',
}
(2)震荡期里有一些通过短期动量提升震荡期的参数和逻辑,大家也可以自由调试看看还有没有更好的参数,大家可以参考之前的文章:https://www.joinquant.com/view/community/detail/a3b0a42de4661a655c15746d92a0a008
# ==================== 震荡收割 / Whipsaw(参照五福35warmup,默认与震荡期联动)====================
g.enable_smoothed_momentum_input = False
g.smoothed_ma_window = 5
g.smoothed_momentum_only_in_range = True
g.enable_range_r2_veto = False
g.r2_threshold_range_bound = 0.9
g.enable_range_momentum_floor = False
g.range_momentum_min = 0.0
g.range_momentum_max = 2.0
g.enable_range_short_momentum_limits = True
g.range_short_momentum_min = 0.0
g.range_short_momentum_max = 5.0
g.enable_switch_hysteresis = False
g.switch_buffer_normal = 0.10
g.switch_buffer_range = 0.40
g.enable_dual_positive_momentum = True
g.dual_positive_only_in_range = True
g.whipsaw_options_only_in_range = True
g.log_whipsaw_filter_detail = True
(3)设置g.global_liquidity_threshold_divisor = 20000,对应的回测结果如下,以今年为例,过滤了每天交易额低于2000万的ETF,我觉得足够几万,甚至几十万资金做模拟shipan了。

(4)设置g.global_liquidity_threshold_divisor = 10000,对应的回测结果如下,以今年为例,过滤了每天交易额低于4000万的ETF,应该够几十万甚至百万的资金做模拟shipan了,这里顺便测了今年以来每个月的收益,看起来还是不错的,符合预期。

(5)这个方案今天刚赶出来,还有不少可以提升的地方,下面是逐年的回测结果,有一些年份是不如沪深300的,后面优化的时候可以考虑加入一些蓝筹股的宽基作为判断基准:

(6)这个方案大家不要着急用来shipan,先用模拟shipan 验证一段时间,觉得靠谱了再慢慢玩,赚钱不易,一定要选胜率高的方案,不靠谱的,让你睡不着觉的赌局就不要完了。我在代码的log信息里也加入了不少统计信息,这个版本的胜率还是很不错的,后续还有不少优化空间

(7)下面是Gemini解读的代码逻辑:

(8)下面是Gemini的未来函数审计报告,有兴趣的可以慢慢看:

评论
牛皮。大佬会不会再出像前两天一样的深入优化版?
26天前
@必富必定富 不急,等大家拍拍砖,多提点问题再慢慢优化
26天前
大佬,求加微信好友交流?: zjmzjm1008
26天前
有没有试过加入 使用 GaussianNB 分类器和 LightGBM 回归模型 机器学习
26天前
@学习就完事了 好主意,这也是后续的一个方向,量化选股策略加上机器学习的预测,在ETF轮动策略和小市值策略里面都可以尝试
26天前
@烟花三月ETF 我给你一样,就是个下了班找AI写写代码和策略的普通马龙而已,有什么问题在论坛里交流哈
26天前
@rbq2025 ?什么群我也想加入和大佬一起学习
26天前
@mark258 我没有拉过群,有问题大家就在论坛里交流哈,我上面打错字了,抱歉抱歉哈,大家不要被骗子骗了哈
26天前
@rbq2025 “群友也给了不少意见”,我在你这评论区留言微信号,被加的微信号都快上百人了,赶紧把这些人领回去哈哈
26天前
@烟花三月ETF 不好意思,我打错字了,是论坛里的水友才对。既然大家都加你了,你这位大佬就顺势收留一下大家,拉个群和大家分享分享嘛,呵呵
26天前
@烟花三月ETF 确实论坛里太多水友太热情了,当然其中也有不少骗子。大家好好甄别不要上当受骗了,我最新的研究和代码都放到论坛里了,目前没有私货,或者加强特别版之类的,也没有给人写代码写策略的服务哈
26天前
大佬能不能解决稍微换个交易时间,回测曲线天差地别的问题
26天前
@sailing2006 这个应该是无法解决,只能通过分多批分时买入的方式解决。就跟平时大家常说的一个定投纳指100ETF的策略类似的,每个月,或者每周固定一个时间定投买入少量纳指100ETF,这样才能规避择时的风险
26天前
@sailing2006 具体ETF轮动的策略,也是类似的,如果准备买入的金额是10万,可以分5批逐步买入,13点10分买入第一批,每过15分钟或者20分钟,如果标的ETF是持续上涨,没有大幅回落的话,就继续分批建仓,降低风险,当然收益也有可能随之减少,鱼与熊掌不可兼得嘛
26天前
@烟花三月ETF 太厉害了不到1小时几百人加你
26天前