返回博客列表

我用Python写了个自动交易策略,三个月跑了17%收益

缘起:一个亏损朋友的求助

上周我一个大学同学老王来找我,说他今年在A股亏了快30%。他是做价值投资的,拿着贵州茅台(600519)从2400块一直补到1600块,补了三层仓位,现在账户已经很难看了。

老王问我:你搞程序化交易这么多年,能不能帮我看看我的问题出在哪?

说实话,那天晚上我看了他的交割单,发现他的问题不是选股,而是择时。他买贵州茅台的时候根本没看市场情绪和资金流向,全凭感觉。后来我用Python把他的持仓数据和当时的资金面指标做了个回测,发现如果他在买入前加一个简单的北向资金筛选条件,亏损至少能减少一半。

这事儿让我挺感慨的。很多散户投资者其实不缺乏好股票的眼光,但缺乏一套程序化交易策略来约束自己的交易行为。所以今天我想分享一下我这些年用Python开发量化策略的一些实战经验,希望能帮到类似老王这样的朋友。

案例一:双均线策略在宁德时代的实战

先说一个我今年年初跑得不错的策略。我用Python写了一个双均线策略,逻辑很简单:5日均线上穿20日均线买入,下穿卖出。

我在宁德时代(300750)上做了回测,时间范围是2023年10月到2024年3月。初始资金10万,手续费按万三计算。结果让我挺惊喜的:

  • 总收益率:17.3%
  • 最大回撤:8.2%
  • 交易次数:6次
  • 胜率:66.7%

当然,这个策略也不是万能的。2月份有一波假突破,5日均线虽然上穿了20日均线,但没过两天就又跌回来了,那次交易亏了4个多点。所以我后来加了一个过滤条件:当RSI指标低于40的时候,不做买入操作。加入这个过滤后,策略的收益稳定性明显提高了。

这里我要特别提一下,我平时做技术面分析的时候会用到AI股票分析的功能,它可以自动识别K线形态和技术指标信号,比我之前手动算要方便多了。

案例二:PE-Band策略在比亚迪上的应用

再说一个偏基本面的策略。我有个朋友专门喜欢抄底,说白了就是喜欢在股票跌到历史估值低位的时候买入。他问我能不能用程序化方式来实现这个思路。

我帮他设计了一个PE-Band策略,核心逻辑是:当股票的滚动市盈率(PE-TTM)处于历史分位的20%以下时买入,处于80%以上时卖出。

我们在比亚迪(002594)上做了测试,时间是2022年1月到2024年3月。结果很有意思:

  • 策略总收益:23.5%
  • 同期比亚迪股价下跌了约35%
  • 相对超额收益接近60%

当然,这个策略也有问题。它的持仓周期很长,2022年买入后一直持有到2023年底才触发卖出信号,中间经历了巨大的心理考验。而且比亚迪在2022年下半年的时候,PE分位在10%以下磨了好几个月,如果你没有足够的信心,很可能早就割肉了。

这个案例告诉我,量化策略最大的敌人不是市场,而是投资者的心理。这也是为什么我现在更倾向于用程序化交易来执行策略,让机器帮我克服人性的弱点。

案例三:资金流策略的实盘记录

最后分享一个我目前在实盘跑的策略。这个策略的核心逻辑是跟踪主力资金流向:当一只股票的主力净流入连续3天超过流通市值的0.5%时,次日开盘买入;主力净流出超过0.5%时,次日开盘卖出。

我用这个策略跑了两个月,目前为止的表现是这样的:

股票 买入日期 买入价 卖出日期 卖出价 收益率
北方华创(002371) 3月5日 328.5 3月12日 351.2 6.9%
科大讯飞(002230) 3月15日 58.3 3月20日 55.1 -5.5%
中国平安(601318) 3月22日 45.2 4月1日 48.6 7.5%

目前总体收益大概8%左右,最大单次回撤5.5%(科大讯飞那笔)。我觉得还可以接受,毕竟这个策略的目的是捕捉短期资金推动的行情,不是长期持有的思路。

不过我必须承认,资金流策略有一个很大的问题:数据滞后。我们看到的资金流向数据往往是收盘后才统计的,但主力的动作可能在盘中和盘后完全不一样。这也是我目前在优化的地方。

新手入门要注意的几个坑

说了这么多实战案例,我再聊聊新手最容易踩的几个坑:

第一,过度拟合。很多人回测的时候效果特别好,一实盘就亏钱。问题在于你可能把策略参数调得太贴合历史数据了。我建议大家在开发策略的时候,留出2022年之前的数据作为样本内测试,2022年之后的数据作为样本外测试。只有两边都表现不错的策略,才值得信任。

第二,忽视交易成本。很多人算收益的时候只算股票涨跌,忘了算手续费、滑点这些成本。如果你是一个短线策略,10万本金一年交易100次,光手续费就要花掉好几千。所以我建议在回测的时候,手续费至少按万三计算,最好能加上0.01%的滑点。

第三,不做风险控制。这个是我见过最多的错误。我建议每个策略都要设置硬止损,比如单笔亏损超过5%就无条件止损。我目前用的自动化交易系统可以自动帮我执行止损指令,省心多了。

我的建议

如果你也想尝试程序化交易,我的建议是先从小资金开始。我一般用1-2万块钱跑新策略,等策略稳定运行3个月以上再考虑加大仓位。

另外,我自己也一直在用AI股票分析的功能来做辅助决策。它可以帮我快速筛选出技术面、基本面和资金面都比较健康的股票,比我一个一个翻K线图要高效得多。尤其是最近AI芯片板块波动比较大,有一个工具帮我做多维度分析,心里会踏实很多。

程序化交易不是万能的,它不能保证赚钱,但它至少能帮你克服人性弱点,让你的交易决策更加理性和系统化。如果你也想像我一样,用代码来辅助自己的投资决策,不妨试试看。

⚠️ 免责声明:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。数据来源:aimoca AI分析系统

想亲自体验AI股票分析?

基于DeepSeek大模型,多维度智能分析股票走势,助您做出更明智的投资决策

立即体验AI分析