Switch大气层整合包:从零开始的终极自定义系统指南
2026/6/3 11:45:01
在量化江湖里,CNN 擅于捕局部形态(如 K 线组合),LSTM 长于记长期记忆(如趋势),Attention 专治“信息过载”(自动给重要时间点加权)。把三大杀器融合,就是今天的主角——CNN-LSTM-Attention 多模态股价预测模型。
读完本文,你将收获:
1、一套可直接跑通的 PyTorch 源码(model.py + train.py + predict.py)
2、数据爬取→特征工程→训练→评估→预测的 全流程拆解
3、早停法、反标准化、维度对齐等 工程技巧
| 组件 | 版本 | 安装命令 |
|---|---|---|
| Python | ≥3.8 | — |
| PyTorch | ≥1.12 | pip install torch |
| mootdx | 最新 | pip install mootdx |
| numpy & pandas | 最新 | pip install numpy pandas |
提示:CUDA 驱动≥11.6 可启用 GPU 加速,训练速度提升 5×。
frommootdx.readerimportReader reader=Reader.factory(market='std',tdxdir='C:/new_tdx')# 你的通达信安装目录df=reader.daily(symbol='000061')# 以「农产品」为例Input(30,5) ─►Permute ─►Conv1d ─►BN ─►ReLU ─►Permute ─►LSTM ─►Attention ─►FC ─►Output(1)
| 模块 | 输出形状 | 作用 |
|---|---|---|
| Conv1d | (64,30) | 提取局部波动特征,类似“识别 K 线组合” |
| LSTM | (64,) | 捕捉 30 天里的长期依赖 |
| Attention | (30,) 权重 | 自动聚焦“最关键那几天” |
| FC | 1 | 映射为下一天收盘价 |
代码亮点:
- 维度自动修复:x.dim()==2 时自动 unsqueeze,避免 RuntimeError
- 输入 time_step 可变,只需改 1 个参数,模型自动适配。
train_size=int(0.6*len(X))val_size=int(0.2*len(X))best_val_loss=float('inf')patience=5...ifval_loss<best_val_loss:best_val_loss=val_loss torch.save(model.state_dict(),'best_model.pth')predictor=StockPredictor('stock_model.pth','000061')pred=predictor.predict_next_day(recent_30_days)print(f"预测下个交易日收盘价:{pred:.2f}")importmatplotlib.pyplotasplt plt.plot(val_loss_list,label='Val Loss')plt.plot(test_loss_list,label='Test Loss')plt.title('CNN-LSTM-Attention Training Curve')plt.savefig('loss_curve.png',dpi=300)| 超参 | 推荐范围 | 作用 |
|---|---|---|
| lstm_hidden | 32~128 | 越大记忆容量越高,但易过拟合 |
| cnn_channels | 32~128 | 控制卷积核数量,影响局部特征丰富度 |
| lr | 1e-4~1e-2 | 学习率过大震荡,过小收敛慢 |
建议使用 Optuna 自动搜索,10 次试验即可找到最佳组合。
1、过往业绩不代表未来表现,股市有风险,投资需谨慎。
2、本文仅供 教育 & 研究 之用,不构成任何投资建议。
3、实盘前请做 充分回测 & 压力测试,并配合风控系统。
importtorchimporttorch.nnasnnimporttorch.nn.functionalasFclassCNN_LSTM_Attention(nn.Module):def__init__(self,input_dim,time_step,lstm_hidden=64