2023年,我炒股亏掉50%——听消息、追涨杀跌、天天盯盘…
2025年,我用这套方法逆风翻盘:
✅ 5日均线策略优化3次 → 年化收益27%
✅ 回测100+次交易 → 避开90%的坑
✅ 零代码操作 → 小白1小时上手
今天,我的实战日记全公开!(文末送源码合集)
第一部分:3大颠覆认知(90%新手不知道)
❗ 真相1:官网没有回测功能?2招破解
方案一:DeepSeek生成策略+本地回测(免费)
▸ 工具:Python+Backtrader(代码自动生成)
▸ 优势:数据透明,可自定义参数
方案二:DeepSeek+QMT极速下单(机构同款)
▸ 工具:券商免费开通
▸ 优势:实盘回测一键切换
️ 对比图:
[收益率曲线图] 均线策略收益120% VS 盲目交易亏损50%
❗ 真相2:5行代码抓取全A股数据
python
复制
# 小白必存!一键下载股票数据
import akshare as ak
# 示例:茅台后复权数据
df = ak.stock_zh_a_hist(symbol="600519", adjust="hfq")
df.to_excel("茅台十年数据.xlsx")
⚠️ 避坑:一定要用后复权数据!否则K线全是坑!
❗ 真相3:回测必须加这3行代码(否则血亏)
python
复制
# 手续费+滑点设置(实盘更真实)
cerebro.broker.setcommission(commission=0.001) # 千1佣金
cerebro.broker.set_slippage_perc(0.01) # 1%滑点
第二部分:实操教程
第一步:环境搭建
1. 安装Anaconda(数据处理核心工具)
- Windows/Mac通用步骤:
- 访问清华镜像站 → 下载Anaconda3-2023.09-0版本
- 双击安装包 → 全部勾选默认选项(务必勾选Add to PATH)
- 验证安装:按下 Win+R 输入 cmd → 输入 conda –version → 显示版本号即成功
2. 安装必备库(逐行执行)
bash
复制
# 打开Anaconda Prompt(Mac/Linux用终端)
pip install akshare -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 数据获取
pip install backtrader -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 回测框架
pip install pyfolio -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 结果分析
3. 启动Jupyter Notebook(可视化编辑器)
bash
复制
# 在Anaconda Prompt输入
jupyter notebook
# 浏览器自动打开 → 点击右上角New → Python 3 新建笔记本
第二步:获取股票数据(3种方法)
方法1:AKShare直接获取(推荐)
python
复制
import akshare as ak
import pandas as pd
# 示例:获取贵州茅台后复权数据(2015-2024)
df = ak.stock_zh_a_hist(
symbol="600519",
period="daily",
start_date="20150101",
end_date="20241231",
adjust="hfq" # hfq=后复权,重要!
)
# 重命名列并格式化日期
df.rename(columns={'日期':'date','开盘':'open','收盘':'close','最高':'high','最低':'low','成交量':'volume'}, inplace=True)
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
# 保存到本地(可选)
df.to_excel("茅台_十年数据.xlsx")
方法2:CSV文件导入(已有数据使用)
python
复制
import pandas as pd
# 从Excel读取(需包含date/open/high/low/close/volume列)
df = pd.read_excel("你的数据文件.xlsx", index_col='date', parse_dates=True)
方法3:DeepSeek智能生成(新手友好)
- 访问DeepSeek官网 → 输入:“写Python代码获取贵州茅台股票数据”
- 复制生成的代码 → 粘贴到Jupyter中运行
第三步:编写均线策略(逐行解析)
python
复制
# 导入库
import backtrader as bt
import pyfolio as pf
# 自定义策略类
class MaCrossStrategy(bt.Strategy):
params = (
('fast_period', 5), # 5日均线
('slow_period', 20), # 20日均线
)
def __init__(self):
# 定义指标
self.fast_ma = bt.indicators.SMA(
self.data.close,
period=self.params.fast_period
)
self.slow_ma = bt.indicators.SMA(
self.data.close,
period=self.params.slow_period
)
self.crossover = bt.indicators.CrossOver(
self.fast_ma,
self.slow_ma
)
def next(self):
if not self.position: # 没有持仓
if self.crossover > 0: # 金叉买入
self.buy(size=100) # 买入100股
elif self.crossover < 0: # 死叉卖出
self.close() # 平仓
# 注意:此策略类可直接复用!
第四步:运行回测(完整代码块)
python
复制
# 创建回测引擎
cerebro = bt.Cerebro()
# 加载数据
data = bt.feeds.PandasData(
dataname=df, # 使用前面获取的df
datetime=None, # 索引已经是日期
open=0, # 列位置索引
high=1,
low=2,
close=3,
volume=4,
openinterest=-1 # 无持仓量列
)
# 设置初始资金10万
cerebro.broker.setcash(100000.0)
# 添加策略
cerebro.addstrategy(MaCrossStrategy)
# 添加分析器
cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')
# 运行回测
results = cerebro.run()
# 提取结果
strat = results[0]
portfolio_stats = strat.analyzers.getbyname('pyfolio').get_analysis()
# 可视化
pf.create_returns_tear_sheet(
returns=portfolio_stats['returns'],
benchmark_rets=portfolio_stats['benchmark_returns']
)
第五步:关键结果解读(附示意图)
- 收益曲线图:
- 蓝色线:策略收益
- 灰色线:基准收益(如沪深300)
- 关键指标表:
- 指标合格标准示例值年化收益率>15%22.3%最大回撤<20%18.7%夏普比率>11.5胜率>55%60.2%
常见报错解决方案
- ModuleNotFoundError: No module named ‘akshare’
→ 重新执行 pip install akshare - 数据日期格式错误
→ 检查 df[‘date’] = pd.to_datetime(df[‘date’]) - 回测无交易信号
→ 检查均线周期是否过短(建议5日+20日组合)
高级技巧:策略优化模板
python
复制
# 批量测试不同均线组合
for fast in [5, 7, 10]:
for slow in [20, 30, 50]:
cerebro.optstrategy(
MaCrossStrategy,
fast_period=fast,
slow_period=slow
)
# 运行优化
optim_results = cerebro.run()
立即行动:复制代码到Jupyter中运行,2小时完成你的第一次专业级回测!
警告:这3类人不要继续看!
❌ 想一夜暴富的赌徒 → 量化是长跑
❌ 拒绝学习的伸手党 → 需1小时研究
❌ 迷信“圣杯策略”的懒人 → 市场永远在变
行动号召:今天你能做什么?
1️⃣ 复制代码跑通第一个策略 → 截图发微头条
2️⃣ 优化参数挑战年化30% → 7日/30日均线试试看
3️⃣谢谢您的关注
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/962894
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!