基于深度学习股票预测系统

摘要

股票市场的发展对于市场经济具有重要的意义,许多研究者也对股票市场的走势进行预测研究。通过一些技术来预测股票未来的发展趋势,预测其后面涨跌。股票指数是预判经济的一个重要指标,股票指数表示的就是股票市场中总体的发展水平和走向。但由于影响股票指数波动的因素较多。随着金融市场的建立,股票价格的分析和预测问题越来越困难

一、实验数据准备

股票数据数据准备,通过网易api接口获取历史股票数据,核心代码如下:

# 从网易接口获取数据api_adr = 'http://quotes.money.163.com/service/chddata.html'fields = "TOPEN;TCLOSE;HIGH;LOW;VOTURNOVER"# 注意:获取上海证券与深圳证券股票的数据,需要构造不同的URLtag = "0"       # 上海证券if sticker_code in ['000063','000066','000768','000651']:tag = "1"   # 深圳证券params = {'code': tag + sticker_code, 'start': start_date, 'end': end_date, 'fields': fields}r = requests.get(api_adr, params=params)print(r.url)# txt_list = r.text.split('\n')   # r.content二进制数据    r.text 文本数据txt_list = r.content.decode('gbk').split('\n')  # r.content二进制数据    r.text 文本数据txt_list.reverse()txt_list[0] = txt_list[-1]  # 列名替换开头的空字符col_name = "Date,Code,Name,Open,Close,High,Low,Volume\n"txt_list[0] = col_nametxt_list.pop(-1)root = os.path.dirname(os.path.dirname(__file__))dir_path = os.path.join(root,"data")filename = sticker_code + ".csv"print(os.path.join(dir_path,filename))with open(os.path.join(dir_path,filename), "w+",encoding='gbk') as f:for line in txt_list:if line.split(',')[3] != '0.0':     # 去除无效数据f.write(line)def get_all_last_data(start_date): # 得到从start_date至今日 所有最新数据root = os.path.dirname(os.path.dirname(__file__))config_path = os.path.join(root,"config.json")configs = json.load(open(config_path, 'r'))companies = configs['companies']# start_date = '2010-06-21'  # 只能按整年获取至今日数据cur = datetime.now()year = timedelta(days=365)cur = cur + year    # 在当前日期上加一年end_date = cur.strftime("%Y-%m-%d")  # 获取今年最新数据for code, company_name in companies.items():get_domestic_stock(code, start_date, end_date)

在config设置要下载的最新股票数据集:

"companies":{"600718":"drjt","000651":"gldq","600839":"scch","600519":"zhzg","601988":"zgyh","000066": "zgcc","601766":"zgzc","601390":"zgzt","000768":"zhfj","000063":"zxtx"}

单独运行股票文件,就可以获取了:
在这里插入图片描述

二、数据预处理

数据预处理就是把数据归一化,方便模型训练收敛,核心代码如下:

    def normalise_windows(self, window_data, single_window=False):# 归一化窗口,基值为0normalised_data = []window_data = [window_data] if single_window else window_datafor window in window_data:normalised_window = []for col_i in range(window.shape[1]):normalised_col = [((float(p) / float(window[0, col_i])) - 1) for p in window[:, col_i]]normalised_window.append(normalised_col)normalised_window = np.array(normalised_window).Tnormalised_data.append(normalised_window)return np.array(normalised_data)

三、构建模型

3.1构建网络模型

构建3维数组,核心代码如下:

# 定义模型结构
class DataLoader():def __init__(self, filename, split, cols,isTest=False):dataframe = pd.read_csv(filename,encoding='gbk')i_split = int(len(dataframe) * split)self.data_train = dataframe.get(cols).values[:i_split]if isTest:self.data_test = dataframe.get(cols).values[0:]else:self.data_test = dataframe.get(cols).values[i_split:]self.len_train = len(self.data_train)self.len_test = len(self.data_test)print(self.len_train,self.len_test)self.len_train_windows = None

3.2定义LSTM模型

"layers": [{"type": "lstm","neurons": 100,"input_timesteps": 49,"input_dim": 1,"return_seq": true},{"type": "dropout","rate": 0.2},{"type": "lstm","neurons": 100,"return_seq": true},{"type": "lstm","neurons": 100,"return_seq": false},{"type": "dropout","rate": 0.2},{"type": "dense","neurons": 1,"activation": "linear"}]

四、输出和预测

#训练模型def train(self, x, y, epochs, batch_size, save_dir):timer = Timer()timer.start()print('[Model] Training Started')print('[Model] %s epochs, %s batch size' % (epochs, batch_size))save_fname = os.path.join(save_dir, '%s-e%s.h5' % (dt.datetime.now().strftime('%d%m%Y-%H%M%S'), str(epochs)))callbacks = [EarlyStopping(monitor='val_loss', patience=2),ModelCheckpoint(filepath=save_fname, monitor='val_loss', save_best_only=True)]self.model.fit(x,y,epochs=epochs,batch_size=batch_size,callbacks=callbacks)history = self.model.fit(x,y,epochs=epochs)plt.plot(history.history['loss'])plt.xlabel('epochs')plt.ylabel('loss')plt.show()#模型保存self.model.save(save_fname)print('[Model] Training Completed. Model saved as %s' % save_fname)timer.stop()

五、系统测试

逐点预测,通过前面50个值,预测第51个值,比较简单,拟合比较好
在这里插入图片描述
全序列预测:通过拿前面50个值,预测后面第51-100个值,可以分析出大致的走势
在这里插入图片描述

总结

在股市的预测当中,通过技术指标和股票的交易数据来进行股市的预测,本文利用了LSTM神经网络来构建股票的预测模型。该模型可以有效的应对时间序列的预测,解决了传统RNN梯度消失的问题,但本文提出的方法容易出现过离合的现象,如果结合基本面的股票信息,可能会改善本文模型的预测效果,将政策因素和市场环境作为股票的预测模型输入变量,可以优化本文预测模型的预测准确性,投资者可以根据本文的股票预测模型来结合自己的经验进行合理的投资。

可以进来一起学习python,欢迎进来。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8639.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何借助现有股票量化交易平台编写策略和回测分析

每个交易日的股票都会上涨或者下跌,在这个过程中笔者们偶尔会想针对部分股票进行股价的涨跌幅进行监控,或者自动进行交易,在这个需求前提下,现有券商、股票分析软件都会带有机器人自动交易策略功能,大部分都需要收费或…

Tushare简单股票预测,仅用于交流学习

第一次做Tushare简单股票预测,仅用于交流学习,若有错误欢迎批评指正 下面是用Tushare进行中石化的股票预测 import tushare as ts import pandas as pd import keras from keras import layers from keras import models from keras import Sequential from keras.…

是涨是跌?用Python预测股票价格趋势

来源数据:STUDIO,作者:云朵君 导读:在本文中我们尝试研究白酒股票市场的数据。使用baostock来获取股票信息,可视化它们的不同,最后将使用一些方法来分析股票的风险。还将通过长期短期记忆(LSTM)方法来预测未…

股票分析,利用线性回归实时预测股价,只需要提供股票代码即可爬取相应股票数据并建模

这里参考了别人的代码,并引用了tushare模块中定义的接口自动获取了依据 股票代码来获取数据 此篇文章提供了 1.一个简单通过接口爬取csv数据的方法 2.一个处理csv数据的简单方法 3.依据数据进行特征提取建立简单的股价预测模型 如下: 使用的话只需要修改…

大幅提升预测性能,将NSTransformer用于股价预测

写在前面 NSTransformer模型来自NIPS 2022的一篇paper《Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting》。NSTransformer的目的主要是为了解决其他方法出现过平稳化处理的问题。其通过提出序列平稳化以及去平稳化注意力机制可以使得模型…

利用神经网络实现股票预测 | 附Pyhon代码

神经网络(NeuralNetworks)是一种用训练数据拟合目标函数的黑箱模型,只要数据量足够大,它可以拟合出输入到输出之间的任意函数关系。 本篇教程我们将使用神经网络进行股市的预测,利用数据样本学习,得到相关因…

基于LSTM进行股票趋势预测(tushare)

注: 本文章仅用于算法&工具学习与使用,不具有任何投资建议。 前言: 笔者最近在研究时序趋势预测,而股票天然具有时序性,故使用某一股票数据进行学习。下面将使用代码预测一只股票的每日最高价,当然也可…

Python预测股票走势

最新代码:股票预测配套代码(jupyter版)-机器学习文档类资源-CSDN下载 视频:基于python进行股票趋势预测_哔哩哔哩_bilibili Python的功能可谓相当强大,在很多行业具有相当的优势,这种优势很大程度上来源于各种第三方库。本文介绍…

使用python对股票数据分析预测

安装quandl 安装Pandas_Datareader 1、获取数据 import Pandas_Datareader.data as web import datetime startdatetime.datetime(2018,1,1) enddatetime.datetime.now() SZ000001web.DataReader(000001.SZ,yahoo,start,end) 可以获取最高价,最低价&#xf…

使用新闻预测股票走势-----Kaggle经典ph.D操作分析

General information Two Sigma金融新闻竞赛是一项独特的竞赛:不仅仅是内核竞争,而且我们不应该下载数据,在第二阶段,我们的解决方案将用于预测未来的真实数据。 我将尝试为本次比赛进行广泛的EDA,并尝试找到一些有关…

tushare单个股票过去五年的数据整理与预测

文章目录 前言:1. 导入相关包2. 数据预处理3. 构建模型3. 模型训练4. 检查数据6. 工作中其他常用包记录 前言: %md 在量化投资中,计算收益率是更常见的做法,而不是仅计算股价。计算收益率可以更好地反映投资的回报情况&#xff0c…

使用chatSonic代替chatGPT实现代码智能编写与应答

WriteSonic地址 WriteSonic—其中,提供chatSonic功能app. 注册 使用google账户登录即可. 界面 登录后的界面](https://img-blog.csdnimg.cn/bff0283f8b5f43dd8483caef62784b37.png) 使用 点击上图中的chatSonic链接. 问答窗口 测试智能编码 在文本框中输入…

有了ChatGPT 微软对元宇宙不香了?

押注ChatGPT是微软最近的主要发力点,另一边,它开始向元宇宙业务挥出裁员“大刀”。海外消息称,微软解散了成立仅四个月的工业元宇宙团队,约100名员工被全被解雇。 这只是微软放缓元宇宙战略的长尾动作,此前&#xff0…

ChatGPT 之父推出加密货币钱包;Intel 被曝预算砍掉 10%、裁员 20%;Firefox 113 发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

阿里版ChatGPT突然上线邀测!大模型热战正剧开始,这是第一手体验实录

阿里正式加入ChatGPT战局! 就在刚刚,阿里版类ChatGPT突然官宣正式对外开放企业邀测。 它叫通义千问,由达摩院开发。 嗯,是大模型版十万个为什么那个味儿了。 事实上,早在这个月初,就传出过不少阿里要推出…

python 调试大法

说在前面 我觉得没有什么错误是调试器无法解决的,如果没有,那我再说一遍,如果有,那当我没说 一、抛出异常 可以通过 raise 语句抛出异常,使程序在我们已经知道的缺陷处停下,并进入到 except 语句 raise…

获得北大新材料学院夏令营offer的艰险历程(附面试答辩PPT)

知乎原文获得北大新材料学院夏令营offer的艰难历程(附面试答辩PPT) - 知乎 视频版 05:27 获得北大新材料学院夏令营offer的艰险历程 科大云炬 的视频 698 播放 文字版 相继6月15日以来北大、清华、浙大、西交、复旦、大连理工等10几个夏令营被拒后,我被打击得渐…

概率图模型 - 学习笔记

文章目录 教材与公开课视频概率图模型例子如何理解BP算法?概率图模型相比有监督学习的优势 教材与公开课视频 国外经典教材 英文版:Probabilistic Graphical Models: Principles and Techniques中文版:《概率图模型:原理与技术》…

从文本创建艺术,AI图像生成器的数据集是如何构建的

AIGC系列分享是整数智能推出的一个全新分享系列,在这个系列中,我们将介绍与AIGC概念相关的有趣内容。AIGC系列主要分为以下几篇文章: 被称为下一代风口的AIGC到底是什么? AIGC的数据集构建方案分享系列 从文本创建艺术&#xff0c…

【軟體架構師如何煉成?硬功夫軟技能點滿技能樹】

軟體架構師如何煉成?硬功夫軟技能點滿技能樹 協助企業資訊系統轉型,架構師擔任關鍵角色如何成為軟體架構師技術領域硬技能職場領域軟技能結語 協助企業資訊系統轉型,架構師擔任關鍵角色 「人無遠慮,必有近憂」,套用到…