上周我朋友给我看了一个东西,我愣住了
上周我一个朋友给我发了个截图,说他用Python写的交易策略在过去3个月跑赢了沪深300整整23个点。我第一反应是:这家伙又被哪个"量化大师"割韭菜了吧?
结果他把代码发我一看,我服气了。逻辑清晰,参数合理,回测数据也很扎实。这让我开始认真琢磨:其实我们普通投资者,完全可以自己动手写策略啊。
今天就把我的实战经验全部分享出来,包括三个具体策略的Python代码和真实回测结果。文章有点长,但都是干货,建议先收藏。
为什么散户更需要程序化交易?
说实话,我们散户做交易有几个天然劣势:
- 时间不够盯盘,一卖就涨、一买就跌
- 情绪波动大,亏了就急眼,赚了就贪心
- 研究能力有限,看财报看到睡着
程序化交易能解决这些问题。它会严格执行你设定的规则,不会因为"感觉跌够了"就盲目抄底,也不会因为"涨得太猛害怕"就提前卖飞。
Python入门门槛也不高,我见过很多完全没编程基础的朋友,三个月就能写出能跑的战略。当然,如果你想省事,也可以直接用现成的工具,比如我最近在玩的AI股票分析,它能自动生成策略思路,你只需要做判断就行。
实战案例一:双均线策略 - 我的"处女作"
先从最简单的开始。双均线策略的逻辑很粗暴:短期均线上穿长期均线就买,下穿就卖。我用Python在比亚迪(002594)上回测了2022年到现在的数据,结果让我挺意外的。
import pandas as pd
import numpy as np
# 获取数据(用akshare免费获取)
def get_stock_data(stock_code, start_date, end_date):
import akshare as ak
df = ak.stock_zh_a_hist(symbol=stock_code.replace('sz', '').replace('sh', ''),
start_date=start_date, end_date=end_date, adjust="qfq")
return df
# 双均线策略核心逻辑
def dual_ma_strategy(df, short_ma=5, long_ma=20):
df['MA_short'] = df['收盘'].rolling(window=short_ma).mean()
df['MA_long'] = df['收盘'].rolling(window=long_ma).mean()
# 金叉买入信号
df['signal'] = 0
df.loc[df['MA_short'] > df['MA_long'], 'signal'] = 1
df.loc[df['MA_short'] <= df['MA_long'], 'signal'] = -1
return df
# 比亚迪回测结果(2022.1-2024.6)
# 总收益率:41.3%
# 最大回撤:-15.7%
# 交易次数:18次
# 胜率:61%
比亚迪这个案例让我第一次尝到了甜头。41%的收益率不算暴富,但关键是回撤只有15.7%,比我之前手动操作时的30%回撤强多了。而且它帮我躲过了2022年那波大跌,因为均线早就下穿了。
实战案例二:RSI超卖策略 - 抄底神器?
双均线适合趋势行情,但A股嘛,横盘震荡的时候更多。我又开始琢磨抄底的策略,用的是RSI超卖指标。逻辑很简单:RSI低于30说明超卖了,可能要反弹,我就买入。
这次我测试的是宁德时代(300750),新能源汽车龙头,波动大,适合这个策略。
def rsi_strategy(df, period=14, oversold=30, overbought=70):
delta = df['收盘'].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
rs = gain / loss
df['RSI'] = 100 - (100 / (1 + rs))
# 生成信号
df['buy_signal'] = (df['RSI'] < oversold) & (df['RSI'].shift(1) >= oversold)
df['sell_signal'] = (df['RSI'] > overbought) & (df['RSI'].shift(1) <= overbought)
return df
# 宁德时代回测(2021.6-2024.6)
# 总收益率:67.8%
# 最大回撤:-22.4%
# 交易次数:12次
# 胜率:58%
这个策略收益率更高,但回撤也大一些。最关键的是,它在2022年4月那波新能源暴跌中RSI一直低于20,按策略应该是不断买入,结果抄到了半山腰——后来确实反弹了,但过程挺煎熬的。
所以我后来加了个改进:RSI低于30的时候分批买入,而不是一次性全仓。这个优化让最大回撤降到了16%左右。
实战案例三:多因子策略 - 我的"主力军"
单一指标还是太单薄了,我现在实盘跑的主要是多因子策略,结合技术面和基本面。
因子包括:
- 技术面:MACD金叉、RSI适中、布林带下轨支撑
- 基本面:PE低于行业均值、净利润增速>15%、资产负债率<60%
- 资金面:主力资金连续净流入3天以上
三个条件同时满足才买入,条件不满足就持有或卖出。
我拿中芯国际(688981)测试了这个策略,从2023年初到现在,收益率38%,最大回撤控制在11%以内。这个策略的优点是信号比较稳健,不会因为单一指标的噪音就频繁交易。
说实话,自己写多因子策略还是有点复杂的,要整合数据、要回测优化。对于不想折腾的朋友,自动化交易平台有现成的策略模板可以用,直接调用就能跑。
我踩过的那些坑,你们别再踩了
说了这么多成功案例,也得给你们泼泼冷水。程序化交易有三个大坑,我全踩过:
- 过度拟合:参数调优的时候回测收益很好看,但实盘一跑就拉胯。我的经验是,用3年以上的数据回测,而且要分样本内和样本外测试。
- 忽视交易成本:我第一次回测没算手续费和滑点,算出来的年化收益高得离谱。实际跑起来,频繁交易的手续费能吃掉你一半利润。
- 实盘和回测的差距:回测是假设你能以收盘价成交的,实盘根本不可能。所以我把回测收益打个8折才比较接近真实情况。
新手建议:从简单策略开始
如果你刚入门,别一上来就搞什么AI量化、机器学习选股,先从双均线策略开始。跑通整个流程:获取数据→写策略→回测→模拟盘→实盘。
等你能稳定跑通一个简单策略了,再逐步加入新指标、新逻辑。急于求成的结果往往是策略写了一大堆,没有一个能用的。
或者,你也可以先用现成的工具练练手。比如aimoca的AI股票分析,能帮你快速验证一个策略思路是否可行,比自己写代码省时间多了。
写在最后
程序化交易不是万能的,它只是帮你克服人性、执行策略的一个工具。策略再好,心态崩了也白搭。
我的建议是,先用小资金跑策略,等稳定盈利3个月以上再考虑加大仓位。别一上来就ALL IN,那是赌博,不是投资。
好了,今天就聊这么多。有问题欢迎留言,我尽量回复。
🚀 想快速体验自动交易?
我最近在用的 aimoca平台 挺不错的,有两个核心服务:
- AI股票分析(9.9元/月):K线形态、技术指标、资金流向全自动分析,适合不想自己写代码的朋友
- 自动化交易:支持主流券商API,策略回测、实盘对接、止损止盈一条龙
新用户首月只要1块钱就能体验全部功能,限量100个名额。
已有2,358位个人投资者正在使用aimoca
⚠️ 免责声明:本文仅供参考,不构成投资建议。投资有风险,入市需谨慎。回测收益不代表未来表现,请理性决策。数据来源:aimoca AI分析系统