# hs300_stock_predict
该项目用于对hs300股票的预测,包括股票下载,数据清洗,LSTM 模型的训练,测试,以及实时预测。<br>
## 文件构成
1、data_utils.py 用于股票数据下载,清洗,合并等。该文件共有9个函数。
get_stock_data(code, date1, date2, filename, length=-1)<br>
该函数用于下载股票数据,保存开、高、收、低、量、涨跌幅等6维数据。<br>
由于用的tushare接口,因此只能下载最近两年的数据。(从新浪网易财经的数据爬虫接口后续开放)<br>
共有`5个`参数<br>
`code`是需要下载的股票代码,如000001是平安银行的股票代码,输入'000001'既下载平安银行的股票数据。<br>
`date1`是开始日期,格式如"2019-01-03",`date2`是结束日期,格式同上。<br>
`filename`是存放数据的目录,如"D:\data\"<br>
`length`是筛选股票长度,默认为-1,既对下载的股票数据长度上不做筛选,如果人为指定长度如200,既会将时间长度200以下的数据剔除不予以保存。<br><br>
get_hs300_data(date1, date2, filename)<br>
该函数用于下载沪深300指数数据,参数格式同get_stock_data<br><br>
update_stock_data(filename)<br>
该函数将股票数据从本地文件的最后日期更新至当日,`filename`是指定的单只股票路径名称,如"d:\data\000001.csv"<br><br>
get_data_len(file_path)<br>
该函数过去单只股票的时间长度,`file_path`是单只股票路径名称,如"d:\data\000001.csv"<br><br>
select_stock_data(file1, file2, date1, date2)<br>
该函数对已经再本地的文件按照日期筛选,`date1`是开始数据,`date2`是结束数据,`file1`是源文件夹,`file2`是筛选日期后文件存放的文件夹<br><br>
crop_stock(df, date)<br>
该函数暂时不使用<br><br>
fill_stock_data(target, sfile, tfile)<br>
该函数按照沪深300指数的时间长度来对个股停盘数据进行填充,填充为该股上一交易日的数据。该函数是对所选文件夹下所有文件进行处理。<br>
注意,如果开始日期是属于停牌的,那么该段停牌将不会被填充,后续会有更新。<br>
`target`为参照股票,一般选择同时间段的沪深300指数文件,`sfile`为原文件夹,`tfile`为填充完要存放文件夹。<br><br>
merge_stock_data(filename, tfile)<br>
该函数将多个文件按序合并为一个文件,如讲沪深300只个股文件合并为一个总文件,方便后续模型输入。<br>
`filename`是需要合并的文件夹路径,`tfile`是存放合并后文件的文件夹路径。<br><br>
quchong(file)<br>
该函数暂不使用。<br><br>
2、dataprocess.py 用于训练数据的处理,归一化等,模型的输入都由该文件的接口输出提供。
get_train_data(batch_size=args.batch_size, time_step=args.time_step)<br>
该函数用于处理训练数据,参数默认,有配置文件给定。该函数返回五个变量:`batch_index`训练集分批处理的批次, `val_index`验证集批次, `train_x_1`, 训练集输入,`train_y_1`, 训练集标签,`val_x`, y验证集输入,`val_y`验证集标签<br>
备注:由于整个数据处理是对多只股票合成的总文件处理,所以在时间步长迭代添加时须在各自股票时间长度内完成,因此,需要在配置文件中指定股票长度。<br><br>
get_test_data(time_step=args.time_step)<br>
该函数用于处理测试集数据,返回两个变量:`test_x`测试集输入, `test_y`测试集标签。<br><br>
get_update_data(time_step=args.time_step)<br>
该函数将更新数据加历史数据的前time_step-1拼接,用于整批处理,如2019 1-3月数据和2018.12的数据拼接,返回拼接后的`train_x`, `train_y`<br>
get_predict_data(file_name)<br>
该函数完成下载实时股票数据,与之前的数据拼接后返回输入x。有一个参数需要填充,`file_name`既要预测的单只股票文件。
3、config.py 配置文件,所有接口内超参数,路径等,在该文件修改,即可在全局生效。
4、lstm_model 模型,包括训练,微调,测试,及预测。
train_lstm(time_step=args.time_step, val=True)<br>
用于训练的函数,val既是否验证,默认开启。其数据来自`get_train_data()`<br><br>
fining_tune_train(time_step=args.time_step)<br>
用于微调模型,如新增数据在原模型继续训练,或者迁移学习等。其数据可以来自`get_update_data()`<br><br>
test(time_step=args.time_step)<br>
用于测量测试集的准确率和F1,数据来自`get_test_data()`<br><br>
predict(time_step=args.time_step)<br>
用于预测第二天的收盘价,数据来自`get_predict_data(args.predict_dir)`<br><br>
5、stock_main.py 主函数
可以调用上述所有函数接口,实现相关功能。<br><br>
## 相关论文
《基于LSTM的股票价格的多分类预测》<br><br>
论文地址:https://www.hanspub.org/journal/PaperInformation.aspx?paperID=32542<br><br>
LeapMay
- 粉丝: 6w+
- 资源: 2303
最新资源
- comsol SPP波导EIT,包含两个模型
- 光伏储能+三相并离网逆变切运行模型含笔记 包含Boost、Buck-boost双向DCDC、并网逆变器控制、离网逆变器控制4大控制部分 光伏+boost电路应用mppt 采用电导增量法实现光能最大
- 西门子200smart控制3轴伺服程序,plc程序结构条理清晰,层次分明,注释齐全 西门子触摸屏程序画面功能齐全,画面精美 有io图 电气原理图 参考本案例程序 可快速掌握西门子200sma
- COMSOL含裂缝地层流动和传热耦合,油藏数值模拟,COMSOL裂缝流动,包含注入井与生产井,考虑裂缝交叉
- c# winform上位机源代码 plc通讯基于modbus通讯协议 sql2008
- 椭圆印花机程序,PLC 触摸屏 伺服全是台达品牌,包括主站和从站程序,AS228T-A主机,界面好看 实际使用设备,功能全面,资料齐全
- 光伏储能+三相离网逆变 包含光伏Boost、Buck-boost双向DCDC、三相离网逆变三大部分,0.25s时刻负荷有5kW突增至105kW boost电路应用mppt, 采用电导增量法实现光能最
- 西门子屏sR40程序,污水厂,带图纸
- Comsol矢量光束设置
- 西门子s7200smartplc 昆仑通态触摸屏 锅炉程序 模拟量读取 运算 时间自动切 水泵一用一备故障自动切 自动时间段加热 时间段设定温度 电能读取 及算法 modbus通讯控制
- 信捷四轴机械手臂控制,信捷PLC控制,具有伺服通讯及伺服选择,示教器急停,设置单圈脉冲数等
- 三菱plc程序常用画圆,用两轴伺服,有公式定理解释帮助理解 新手学习好案例,学会了可以随便画圆
- 威纶通与台达M系列变频器通讯程序 ~ 可以通过触摸屏控制变频器正反转,运行停止,还能监视变频器的运行频率,输出频率,输出电压,输出电流以及转速 有做笔记,详细内容见笔记 EB8000、EB Pr
- 西门子PLC博途3种自动流程程序写法 本案例介绍3种不同的方法去写自动流程程序 第一种是用scl case语录,另外的两种使用梯形图的模式去写 使用此类方法去写,清晰明了,非常使用 并且针对程序
- 电动汽车VCU hil BMS hil硬件在环仿真 其中包含新能源电动汽车整车建模说明书, hil模型包含驾驶员模块,仪表模块,BCU整车控制器模块,MCU电机模块,TCU变速箱模块,减速器模块,BM
- STM32F407ZET6两种工程文件: 板卡1:原理图,PCB,主要功能有CAN通讯,RS485通讯,以太网通讯,232通讯,USB接口,音频处理WM8978,MPU6050,SRAM,EEROM
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈