基于大数据的股票数据可视化分析与预测系统

温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :)

1. 项目简介

        股票市场行情分析与预测是数据分析领域里面的重头戏,其符合大数据的四大特征:交易量大、频率高、数据种类多、价值高。

        本项目基于 Python 利用网络爬虫技术从某财经网站采集上证指数、创业板指数等大盘指数数据,以及个股数据,同时抓取股票公司的简介、财务指标和机构预测等数据,并进行 KDJ、BOLL等技术指标的计算,构建股票数据分析系统,前端利用echarts进行可视化。基于深度学习算法实现股票价格预测,为投资提供可能的趋势分析。

基于大数据的股票数据可视化分析与预测系统

2. 功能组成

        基于大数据的股票数据可视化分析与预测系统的功能组成如下图所示:

3. 股票数据获取

        数据获取是股票数据分析的第一步,找不到可靠、真实的数据,量化分析就无从谈起。随着信息技术的不断发展,数据获取渠道也越来越多,当前包括开源的股票数据获取的工具:tushare、baostock、pandas_datareader和yahool等财经数据API,这样可以节省不少精力。当这些开源的API接口不能满足自己特定场景的股票数据需求的时候,我们可以从某些财经网站抓取所需的数据。以 tushare 为例:

        获取所有股票列表:

print('爬取上市公司列表...')
stock_list_file = os.path.join(os.getcwd(), '../数据集', '股票列表', '{}.csv'.format(cur_date.strftime('%Y-%m-%d')))
# list_status: 上市状态: L上市 D退市 P暂停上市,默认L
# exchange: 交易所 SSE上交所 SZSE深交所 HKEX港交所(未上线)
stocks = pro.stock_basic(list_status='L', exchange='', fields='ts_code,symbol,name,area,industry,market,list_date,is_hs')
stocks.to_csv(stock_list_file, index=False, encoding='utf8')
print('done.')

        获取所有股票的历史 K线数据:

# 爬取过去 300 天的数据
start_date = cur_date - timedelta(days=300)
# ----------- 爬取股票的历史数据 -----------
print('爬取股票的历史数据...')
for i, row in tqdm(stocks.iterrows(), total=stocks.shape[0]):stock_name = row['name']stock_code = row['ts_code']stock_daily_file = os.path.join(os.getcwd(), '../数据集', '股票日线行情', '{}({}).csv'.format(stock_name, stock_code))if os.path.exists(stock_daily_file):stock_df = pd.read_csv(stock_daily_file, parse_dates=['trade_date'])stock_df['trade_date'] = stock_df['trade_date'].map(lambda d: d.strftime('%Y%m%d'))start_date_str = stock_df.iloc[0]['trade_date']else:stock_df = pd.DataFrame()start_date_str = start_date.strftime('%Y%m%d')new_stock_df = Nonewhile True:try:new_stock_df = pro.daily(ts_code=stock_code, start_date=start_date_str, end_date=cur_date.strftime('%Y%m%d'))except:token_idx += 1ts_token = get_ts_token(token_idx)if ts_token:ts.set_token(ts_token)pro = ts.pro_api()new_stock_df = pro.daily(ts_code=stock_code, start_date=start_date_str, end_date=cur_date.strftime('%Y-%m-%d'))else:time.sleep(61)token_idx = 0if new_stock_df is not None:breakstock_df = pd.concat([new_stock_df, stock_df])stock_df = stock_df.drop_duplicates(subset=['trade_date']).reset_index(drop=True)stock_df.to_csv(stock_daily_file, index=False, encoding='utf8')
print('done.')

        当开源工具不能满足需求时,如需要获取个股北向资金持仓排名的数据,需要编写爬虫:

    def fetch_stock_north_bound_foreign_capital_rank(self):"""个股北向资金持仓排名,注意是上一个交易日的数据"""page = 1page_size = 10000HdDate = datetime.now().date()while True:url = f'某财经网站获取数据接口'self.headers['Host'] = "xxx.xxxx.com"self.headers['Referer'] = "http://xxx.xxxx.com/"resp = requests.get(url, headers=self.headers)resp.encoding = 'utf8'stock_datas = json.loads(resp.text)['data']if len(stock_datas) > 0:breakHdDate = HdDate + timedelta(days=-1)stock_df = pd.DataFrame(stock_datas)rename_columns = {"SCode": "股票代码","SName": "股票名称","HYName": "所属行业","HYCode": "行业代码","DQName": "所属地区","DQCode": "地区代码","ShareHold": "今日持股股数","ShareSZ": "今日持股市值","LTZB": "今日持股占流通股比","ZZB": "今日持股占总股本比","ShareHold_Chg_One": "今日增持股数","ShareSZ_Chg_One": "今日增持市值","LTZB_One": "今日增持占流通股比‰","ZZB_One": "今日增持占总股本比‰",}stock_df.rename(columns=rename_columns, inplace=True)for col in rename_columns.values():stock_df = stock_df[stock_df[col] != '-']if col not in {'股票代码', '股票名称', '所属版块', '所属行业', '行业代码', '所属地区', '地区代码'}:stock_df[col] = stock_df[col].astype(float)drop_coumns = [f for f in stock_df.columns.tolist() if f not in set(rename_columns.values())]stock_df.drop(drop_coumns, axis=1, inplace=True)return HdDate, stock_df

4. 股票数据可视化分析与预测系统

4.1 系统注册登录

 4.2 股票技术指标计算

        获取的数据为股票的原始 K 线数据,包括 open、close、high、low、volume 等,基于这些数据我们可以计算股票的均线(MA)、布林线(BOLL)、KDJ 和 MACD 等常用技术指标,其计算方法如下:

def AVEDEV(seq: pd.Series, N):"""平均绝对偏差 mean absolute deviation之前用mad的计算模式依然返回的是单值"""return seq.rolling(N).apply(lambda x: (np.abs(x - x.mean())).mean(), raw=True)def MA(seq: pd.Series, N):"""普通均线指标"""return seq.rolling(N).mean()def SMA(seq: pd.Series, N, M=1):"""威廉SMA算法https://www.joinquant.com/post/867"""if not isinstance(seq, pd.Series):seq = pd.Series(seq)ret = []i = 1length = len(seq)# 跳过X中前面几个 nan 值while i < length:if np.isnan(seq.iloc[i]):i += 1else:breakpreY = seq.iloc[i]  # Y'ret.append(preY)while i < length:Y = (M * seq.iloc[i] + (N - M) * preY) / float(N)ret.append(Y)preY = Yi += 1return pd.Series(ret, index=seq.tail(len(ret)).index)def KDJ(data, N=3, M1=3, lower=20, upper=80):# 假如是计算kdj(9,3,3),那么,N是9,M1是3,3data['llv_low'] = data['low'].rolling(N).min()data['hhv_high'] = data['high'].rolling(N).max()data['rsv'] = (data['close'] - data['llv_low']) / (data['hhv_high'] - data['llv_low'])data['k'] = data['rsv'].ewm(adjust=False, alpha=1 / M1).mean()data['d'] = data['k'].ewm(adjust=False, alpha=1 / M1).mean()data['j'] = 3 * data['k'] - 2 * data['d']data['pre_j'] = data['j'].shift(1)data['long_signal'] = np.where((data['pre_j'] < lower) & (data['j'] >= lower), 1, 0)data['short_signal'] = np.where((data['pre_j'] > upper) & (data['j'] <= upper), -1, 0)data['signal'] = data['long_signal'] + data['short_signal']return {'k': data['k'].fillna(0).to_list(),'d': data['d'].fillna(0).to_list(),'j': data['j'].fillna(0).to_list()}def EMA(seq: pd.Series, N):return seq.ewm(span=N, min_periods=N - 1, adjust=True).mean()def MACD(CLOSE, short=12, long=26, mid=9):"""MACD CALC"""DIF = EMA(CLOSE, short) - EMA(CLOSE, long)DEA = EMA(DIF, mid)MACD = (DIF - DEA) * 2return {'DIF': DIF.fillna(0).to_list(),'DEA': DEA.fillna(0).to_list(),'MACD': MACD.fillna(0).to_list()}

4.3 A股指数行情

        指数主要包括上证指数、深证成指、创业板指、中小板指、沪深300、上证50等,通过点击指数的 tab 标签,实现该指数行情的 K线数据可视化展示,同时后端计算出 BOLL 指标,其效果如下: 

4.4 最新龙虎榜个股排名

        利用爬虫获取某财经网站的最新龙虎榜数据,获取其股票代码、股票名称、所属版块、涨跌幅、主力资金净流入等信息。 

4.5 个股诊断分析

        个股的诊断主要围绕个股的基本面(公司简介)、资金面(各类财务指标)和技术面(各类技术指标)等来展开,同时提供自选列表功能,点击自选股列表个股快速诊断。也支持股票的模糊查询、代码查询等功能:

4.6 股票对比分析

         股票的对比分析主要围绕两只股票的技术指标、K先形态、财务状况以及机构预测盈利等信息,支持股票的模糊查询、代码查询等功能:

4.7 基于神经网络的股票价格预测

         个股的历史行情数据为典型的时序数据,本项目采用循环神经网络实现股票价格的预测,通过调整时间窗口、训练的次数等参数,测试模型预测的效果:

5. 总结

        本项目利用 python 获取股票行情数据,包括K线数据、财务指标、机构预测、公司简介、资金流入等数据,并计算 MA、EMA、BOLL、KDJ 和 MACD 等技术指标,基于此实现股票的诊断、对比分析等功能,并利用循环神经网络实现对个股的未来趋势进行预测,为投资提供一定的参考。

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码

技术交流认准下方 CSDN 官方提供的学长 Wechat / QQ 名片 :)

精彩专栏推荐订阅:

1. Python 毕设精品实战案例
2. 自然语言处理 NLP 精品实战案例
3. 计算机视觉 CV 精品实战案例

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

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

相关文章

TensorFlow神经网络实现股票预测

目录 1、数据来源 2、数据可视化 3、神经网络设计 神经网络&#xff08;NeuralNetworks&#xff09;是一种用训练数据拟合目标函数的黑箱模型&#xff0c;只要数据量足够大&#xff0c;它可以拟合出输入到输出之间的任意函数关系。 本篇博文将使用TensorFlow神经网络进行股…

火狐插件FoxyProxy的使用方法

以前自己挖漏洞使用火狐burp抓包测试&#xff0c;但是每次浏览器开代理老麻烦了 今天同事无意间给我提了这个插件FoxyProxy 很实用&#xff0c;下面是使用教程&#xff0c;很直白很详细 首先安装火狐插件FoxyProxy 然后选择Options开始配置 . 然后重启浏览器 选中Burpsuite …

如何解决:FIREFOX的副本已经打开。一次只能打开一份FIREFOX

1.问题 由于电脑卡机使Firefox自动退出之后&#xff0c;重新点击Firefox图标无法打开程序在mac版Firefox中打开时提示&#xff1a;“Firefox的副本已经打开。一次只能打开一份Firefox” 2.解决 重启没解决使用终端中断程序也无法解决活动监视器中中断程序解决 3.方法 1.其他…

Firefox浏览器多账号登陆方法

1、需要安装插件Multifox&#xff0c;由于此插件已经从firefox官网&#xff08;插件&#xff09;上下架&#xff0c;因此需要从Multifox的github上直接下载 2、下载地址&#xff1a;https://github.com/hultmann/multifox/releases/tag/3.2.3 3、直接选则“ multifox-3.2.3-fx.…

Firefox个性化教程

Firefox是跨平台兼容的浏览器软件 注意&#xff0c;是浏览器软件而不是搜索引擎 可能有人不明白&#xff0c;那我简单讲解。 常见的浏览器软件有edge&#xff0c;Firefox&#xff0c;chrome之类的 常见的搜索引擎有Google&#xff0c;bing&#xff0c;duck duck go&#xff0c;…

火狐安全软件Huohong

你还在为垃圾软件&#xff0c;恶意弹窗&#xff0c;病毒骚扰等而烦扰吗&#xff1f; 让简约高效的火狐安全软件来帮助你吧&#xff01; 火绒互联网安全软件 — 轻巧、高效、超强防御的安全防护软件。功能强悍&#xff0c;体量轻巧&#xff0c;既干净又安静。它能全面防御病毒、…

音视频技术开发周刊 | 298

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 AI艺术在北京798&#xff0c;展望人工智能与环境的未来 本文很有意思的提出了个假设&#xff0c;通过人工智能和艺术家协作与实践产生环绕地球的叙事&#xff0c;去开启置…

chatgpt赋能python:用Python模拟串口:学习串口通信的好方法

用Python模拟串口&#xff1a;学习串口通信的好方法 计算机与外部设备之间的通信经常需要串口。串口通信是指通过串行通信协议在计算机与外部设备之间进行数据传输。在实验室工作中&#xff0c;在传感器网络和控制系统中我们经常使用串口进行通信。为了调试这些系统&#xff0…

绿联nas骚操作,没事帮你压测下网络

如果遇到路由器频繁掉网&#xff0c;且家里有个绿联nas&#xff0c;那么大概率是nas的锅&#xff0c; 没啥值钱东西&#xff0c;希望不要掏空我的资料~ 继扫盘之后的又一骚操作 发现自从更新最新版本后&#xff0c;家里频繁出现断网。因为路由器为与nas通过单口1000兆&#xff…

History of Object Recognition (物体识别)

在github上看到一副总结的非常好的图&#xff08;原图地址&#xff09;先码住 &#x1f600;&#x1f600;&#x1f600; 物体识别的综述 &#x1f340;发展历史&#xff1a; &#x1f331;图像分类&#xff08;Image Classification&#xff09; 任务&#xff1a;根据图像中…

谷歌 TensorFlow 物理检测 API,目前最好的物体识别方案?

原文&#xff1a;Is Google Tensorflow Object Detection API the easiest way to implement image recognition? 作者&#xff1a;Priya Dwivedi 译者&#xff1a;聂震坤 审校&#xff1a;屠敏 用大数据干大事&#xff01; 目前有很多种图像识别的方案&#xff0c;而 Goog…

姿态识别、手势识别(附代码)

姿态识别技术是一种基于计算机视觉的人体姿态分析方法,可以通过分析人体的姿态,提取出人体的关键点和骨架信息,并对人体的姿态进行建模和识别。随着深度学习技术的发展,近年来姿态识别技术得到了广泛的应用和研究,其中Pose是一种基于深度学习的姿态识别工具包。本篇博客将…

用户手势检测-GestureDetector使用详解

前言&#xff1a;今天终于可以正常上班了&#xff0c;阿里的百技真的真的太累了&#xff0c;作为队长&#xff0c;不仅要考虑到每一个人的感受&#xff0c;而且要最大程度地使大家团结起来&#xff0c;共同完成一个任务&#xff0c;四天的时间&#xff0c;14个人的小组完成一个…

如何使用OpenCV对物体进行搜索检测与识别

在本教程中&#xff0c;我们将了解对象检测中称为“选择性搜索”的重要概念。我们还将用C 和Python共享OpenCV代码。 物体检测与物体识别 对象识别算法识别图像中存在哪些对象。它将整个图像作为输入&#xff0c;并输出该图像中存在的对象的类标签和类概率。例如&#xff0c;类…

通用物体识别使用攻略

作者&#xff1a;让天涯 一、需求描述 大家在出去旅游的时候&#xff0c;往往会对景点里的特色事物感兴趣&#xff0c;而一般情况下&#xff0c;如果没有导游的介绍&#xff0c;我们不太清楚这个景区里的特色景点是什么&#xff0c;有时候即使看到了一个事物&#xff0c;都不…

python姿态检测实现多人多姿态识别python行为识别openpose行为骨骼框架检测动作识别动作检测行为动作分类

效果演示&#xff1a; 视频演示&#xff1a; python行为识别行为骨骼框架检测动作识别动作检测行为动作分类 项目下载链接&#xff1a;https://download.csdn.net/download/babyai996/87552750 0环境项目配置教程&#xff1a;https://download.csdn.net/download/babyai996/87…

Win11集成 ChatGPT,任务栏取消分组真的回来了

时隔两月微软如期发布了 Win11 Moments 3 更新&#xff0c;版本号 22621.1778 。 微软这次更新带来了许多质量更新和功能改进。 直观的改动是任务栏&#xff0c;网络图标在连接加密隧道时会上锁&#xff0c;时间显示到秒也重新回归。 日常会用到的 AltTab 任务选项卡被限制到最…

​干货!影视剪辑大神常用避免侵权的8个秘籍首次公开【覃小龙课堂】

哈罗&#xff0c;我是您的老朋友&#xff1a;覃小龙&#xff0c;您可以称呼我为覃总&#xff0c;因为我是腾然MCN和火星电商的老板&#xff0c;我2016年创办腾然MCN至今&#xff0c;已经是自媒体的骨灰级老司机了&#xff0c;所以今天给您带来的主题是&#xff1a; 干货&#x…

影视剪辑,视频剪辑的万能剪辑技巧来啦,剪辑技巧合集

好多人在学习视频剪辑时不知道如何入手&#xff01; 今天这一篇总结来啦&#xff01; 首先要掌握的就是关于正确的视频剪辑流程 ①建立好项目文件夹。根据时间、地点、大体拍摄内容等分类&#xff0c;在不同的文件夹存入对应的物料和工程。 ②获取素材。提前收集好要用的包装…

影视剪辑,PR剪辑软件两个转场教程

一、古风渐变擦除转场&#xff1a;拖入视频1和视频2&#xff0c;将视频2放到视频1上面的轨道&#xff0c;2者重叠部分就是转场部分。 【效果】【渐变擦除】&#xff0c;拖到视频2。 在开头K关键帧&#xff0c;【效果控件】【渐变擦除】【过渡完成】K帧调到100。 在2段视频交接…