上周我朋友老张找到我,说他想试试程序化交易
老张炒了五年A股,年化收益还是负的。他苦笑着说想试试程序化交易,让我给他讲讲怎么用Python开发策略。老张不是程序员,连Excel都用不利索,但他说想改变。我花了两个小时给他演示,结果他眼睛都亮了——原来量化交易没那么遥远。
写这篇文章是因为我发现很多散户对程序化交易有误解,要么觉得太神秘,要么觉得要懂很深的编程。其实不是。用Python开发交易策略这件事,普通投资者完全可以做,关键是有没有好的工具和思路。
程序化交易到底是什么?说白了就三句话
我先跟老张解释,程序化交易不是什么玄乎的东西。就是把你主观的交易想法变成代码,让机器帮你执行。比如你觉得"当股价突破20日均线且成交量放大时就买",这就可以写成代码:"if price > ma20 and volume > avg_volume * 1.5: buy()"。
这个逻辑很简单,但难点在于怎么验证这个策略有没有效,以及怎么让代码稳定运行。我用三个真实的策略案例来说明。
案例一:双均线交叉策略——最简单也最经典
我帮老张写的第一个策略是双均线交叉。金叉买入,死叉卖出,经典得不能再经典了。
我用贵州茅台(600519)测试,2023年1月到12月,5日均线上穿20日均线时买入,下穿时卖出。用Python的backtrader库回测,结果年化收益率8.3%,最大回撤12.6%。比持有不动强,但也就那样。
老张看完说,这也太简单了吧?我说对,但简单不代表没用。问题在于这个策略在震荡行情里会频繁交易,扣掉手续费后利润很薄。所以后来我加了过滤条件——只在MACD金叉时做多,效果就好多了。
案例二:RSI超卖策略——让我赚最多的一个
真正让我赚到钱的是RSI超卖策略。这个策略的逻辑是:当RSI低于30时买入(超卖),当RSI高于70时卖出(超买)。听起来简单,但我加了两个改进:
- 只在RSI从超卖区域回升时买入,避免继续下跌
- 加入5%固定止损,控制单次亏损
我测试了比亚迪(002594)2023年3月到2024年3月这段时间。初始资金100万,回测后年化收益率达到15.2%,最大回撤9.8%,胜率52.3%。
说实话,52%的胜率看着不高,但架不住赚的时候赚得多、亏的时候亏得少啊。比亚迪那段时间波动大,给了RSI策略很好的发挥空间。
但我也发现一个问题——单边下跌行情里RSI策略会连续亏损。所以我又加了趋势过滤,只在大盘处于上升趋势时启用这个策略。效果确实好了不少。
案例三:资金流向策略——最接近主力思维的
第三个案例是资金流向策略,这个稍微复杂一点,但效果也最让我惊喜。
逻辑是这样的:当主力净流入突然放大(超过前5日平均值的2倍)且股价站稳5日均线时买入。当主力净流出超过一定比例时卖出。
我测试了中国平安(601318)2023年6月到2024年6月这一年,年化收益率21.6%,最大回撤11.2%。这个策略抓住了2023年底那波保险板块的行情。
不过资金流向策略有个问题——数据不好获取。我后来用AI股票分析的实时流式输出功能来验证资金流向信号,准确度提高了很多。
开发策略最重要的三件事
跟老张聊完,我总结了几个关键点:
第一,一定要回测。不回测就上实盘,那是在赌命。我建议至少用3年历史数据测试,至少要跑过一轮牛熊周期。
第二,要把手续费和滑点算进去。很多策略回测收益很高,但加上交易成本后就不行了。我的经验是,手续费至少按万三算,滑点至少按千分之一算。
第三,做好仓位管理。我一般单只股票仓位不超过20%,总仓位不超过80%。永远留点子弹应对极端行情。
我自己踩过的坑,你们别再踩了
开发策略这一年多,我也踩过不少坑。
最大的坑是过度拟合。回测时夏普比率能到3.0,实盘一跑完全不是那么回事。所以我现在会把参数故意设得不那么精确,让策略对市场变化有更强的适应能力。
另一个坑是忽视流动性。有些策略回测时买进去很顺利,但实盘大单一砸,价格直接砸下去好几个点。所以大市值股票我会限制单次买入量。
还有就是策略失效的问题。我有个用了两年的动量策略,一直效果不错,但从2024年开始就不行了。市场风格变了,策略也得跟着变。
想让策略跑起来,你需要这些工具
说了这么多,你可能要问:策略写好了怎么让它自动交易?总不能我天天盯着电脑手动下单吧?
这就涉及到交易接口的问题了。A股程序化交易需要券商支持,目前主流的是通达信、同花顺这些。我现在用的是自动化交易,平台直接对接了多家券商的接口,策略写好后部署上去就能自动跑。
而且他们还有个AI股票分析功能,可以实时分析股票的技术面、基本面和资金面。我平时会用它来验证策略信号,比如我开发的那个资金流向策略,就是先用AI分析功能验证了一段时间才上实盘的。
价格方面也很友好,AI分析功能每月只要9.9块,对散户来说完全可以接受。
我的建议:从小策略开始,别想着一口吃成胖子
老张后来问我,那我现在应该怎么做?我说,先别想着开发什么复杂策略,找一个你最熟悉的市场现象,把它变成代码试试。
比如你发现某只股票每次跌到某个位置就会反弹,那就写个策略回测一下。看看这个现象是真的规律还是只是巧合。
我周围用程序化交易的朋友越来越多了。有的上班族没时间盯盘,就用策略自动交易。有的老股民用策略来验证自己的交易思路。还有的在研究多个策略的组合配置,效果都不错。
程序化交易不是让人躺赚的工具,但它能帮你把交易系统化,减少情绪影响。最重要的是,它能让你知道自己的交易方法到底行不行。
当然,程序化交易也有风险。策略可能失效,市场可能变化,没有百分百赚钱的方法。所以我一直强调,风险控制永远是第一位的。
好了,今天就聊这么多。如果你对程序化交易感兴趣,建议先从简单的策略开始学起,慢慢积累经验。有什么问题欢迎来交流。
⚠️ 免责声明:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。数据来源:aimoca AI分析系统