【重磅升级】基于大数据的股票量化分析与预测系统

news2024/10/12 15:44:12

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 

1. 项目简介

        伴随全球经济一体化和我国经济的快速发展,中国股票市场对世界经济的影响力不断攀升,中国股市已成为全球第二大股票交易市场。在当今的金融市场中,股票价格的波动受到众多因素的影响,包括市场情绪、经济指标、公司业绩等。传统的分析方法往往难以捕捉到这些复杂因素的相互作用。

        本项目利用 Python 网络爬虫技术从某财经网站实时采集A股各大指数、个股的 K线数据、公司简介、财务指标、机构预测、资金流向、龙虎榜等数据,并进行 KDJ、BOLL等技术指标的计算和收益率的量化计算,构建股票数据分析与预测系统,深入挖掘板块热点、资金流向、市场估值等,并利用 Tensorflow 深度学习框架构建 LSTM 神经网络,预测个股的未来走势

        通过该系统,用户可以更加科学地进行股票投资决策,提高投资回报率。通过不断优化算法模型与用户体验,未来有望将此系统推广至更广泛的场景中,为股票市场的量化分析与预测提供有力支持。

        B站系统演示视频:【重磅升级,全网最优!】基于大数据的股票量化分析与预测系统_哔哩哔哩_bilibili

【重磅升级,全网最优!】基于大数据的股票量化分析与预测系统

2. 股票数据获取

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

1、指数或个股的模糊搜索;

2、获取个股的 K 线和基本指标数据;

3、个股基本面信息获取;

4、个股的最新核心题材;

5、A股的资金流的最新排名;

6、个股主力资金占比排名;

7、交易日的涨停板数据;

8、沪深两市实时资金流;

9、获取南向实时资金流;

10、获取市场的市盈率和市净率的估值数据

11、A 股的所有股票最新排名榜单

12、......

        以采集交易日的涨停板数据为例:

def get_limit_up_stocks(self, trade_date, page_index=0, pagesize=100):
        """
        获取交易日的涨停板数据,注意网站中收录的涨停板不包含 ST 股
        http://quote.eastmoney.com/ztb/detail#type=ztgc

        Args:
            trade_date: 交易日期,%Y%m%d 格式,20230901
            page_index: 当前页下标
            pagesize: 分页大小,默认最大千股涨停。。。
        """
        time_token = int(time.time() * 1000)
        base_url = 'https://push2ex.eastmoney.com/getTopicZTPool?ut=7eea3edcaed734bea9cbfc24409ed989&dpt=wz.ztzt&Pageindex={}&pagesize={}&sort=fbt%3Aasc&date={}&_={}'
        url = base_url.format(page_index, pagesize, trade_date, time_token)
        print(url)
        headers = {
            'Accept': '*/*',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'Connection': 'keep-alive',
            "Cookie": "Your cookie",
            "Host": "push2ex.eastmoney.com",
            "Referer": "https://quote.eastmoney.com/ztb/detail",
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",
        }
        resp = requests.get(url, headers=headers)
        resp.encoding = 'utf8'
        resp = json.loads(resp.text)['data']
        if resp is None:
            return []

        stock_datas = resp['pool']

        columns_map = {
            'c': '证券代码',
            'n': '证券名称',
            'zdp': '涨跌幅',
            'p': '最新价',
            'amount': '成交额',
            'ltsz': '流通市值',
            'tshare': '流通市值',
            'hs': '换手率',
            'fund': '封板资金',
            'zbc': '炸板次数',
            'zttj': '涨停统计',
            'hybk': '行业板块'
        }

        limit_up_stocks = []
        for stock_info in stock_datas:
            limit_up_stock = {}
            for c in stock_info:
                if c in columns_map:
                    value = stock_info[c]
                    if c == 'zttj':
                        value = '{}天{}板'.format(stock_info[c]['days'], stock_info[c]['ct'])
                    limit_up_stock[columns_map[c]] = value
            limit_up_stock['交易日期'] = trade_date
            limit_up_stocks.append(limit_up_stock)

        return limit_up_stocks

        获取个股的 K 线和基本技术指标数据,可支持采集日线、周线、月线级别的 K 线数据

def get_stock_kline_factor_datas(self, security_code, period, market_type):
        """
        获取个股的 K 线和基本指标数据

        Args:
            security_code: 股票代码
            period: 周期: day、week、month
        """
        if not market_type:
            security_type = security_util.get_security_type(security_code)
            market_type = int(security_type == 'SH')
        print('market_type:', market_type)

        # 根据当前时间,计算 beg 值
        cur_date = datetime.now()
        if period == 'day':
            begin_date = cur_date + timedelta(days=-1200)
            begin_date = begin_date.strftime('%Y%m%d')
            url = f'https://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&beg={begin_date}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid={market_type}.{security_code}&klt=101&fqt=1'
        elif period == 'week':
            begin_date = cur_date + timedelta(days=-120)
            begin_date = begin_date.strftime('%Y%m%d')
            url = f'https://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&beg={begin_date}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid={market_type}.{security_code}&klt=102&fqt=1'
        elif period == 'month':
            begin_date = cur_date + timedelta(days=-250)
            begin_date = begin_date.strftime('%Y%m%d')
            url = f'https://push2his.eastmoney.com/api/qt/stock/kline/get?fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&beg={begin_date}&end=20500101&ut=fa5fd1943c7b386f172d6893dbfba10b&rtntype=6&secid={market_type}.{security_code}&klt=103&fqt=1'
        else:
            raise ValueError(f'暂不支持 {period} 类型周期')

        resp = requests.get(url)
        resp.encoding = 'utf8'
        resp_data = resp.json()['data']
        security_name = resp_data['name']
        klines = resp.json()['data']['klines']

        all_stock_info = []
        for kline in klines:
            # 日期, 开盘, 收盘, 最高, 最低, 成交量, 成交额, 振幅, 涨跌幅, 涨跌额, 换手率
            datas = kline.split(',')
            stock_info = {
                'date': datas[0],
                'code': security_code,
                'name': security_name,
                'open': float(datas[1]),
                'close': float(datas[2]),
                'high': float(datas[3]),
                'low': float(datas[4]),
                'volume': float(datas[6])
            }
            all_stock_info.append(stock_info)

        stock_df = pd.DataFrame(all_stock_info)
        stock_df.to_csv(f"./dataset/kline/{security_code}.csv", index=False, encoding='utf8')
        return stock_df

        网络爬虫代码接近1000行,此处篇幅限制,暂不一一列出。

3. 股票量化分析与预测系统

3.1 系统注册登录

        用户需要先完成注册过程才能使用系统的所有功能。注册时需提供基本信息如用户名、密码等,并设置个人信息保护措施。登录后,用户可以根据自身需求选择不同的服务项目。

        前端基于 Bootstrap 框架实现扁平石响应式页面:

<section class="ftco-section" style="margin-top: 50px;">
		<div class="container">
			<div class="row justify-content-center">
				<div class="col-md-8 text-center mb-5">
					<h2 class="heading-section">欢迎使用“基于大数据的股票量化分析与预测系统”</h2>
				</div>
			</div>
			<div class="row justify-content-center">
				<div class="col-md-12 col-lg-10">
					<div class="wrap d-md-flex">
						<div class="img" style="background-image: url(../static/img/login.jpeg);">
						</div>
						<div class="login-wrap p-4 p-md-5">
							<div class="d-flex">
								<div class="w-100">
									<h3 class="mb-4">用户注册</h3>
								</div>
								<div class="w-100">
									<p class="social-media d-flex justify-content-end">
										<a href="#"
											class="social-icon d-flex align-items-center justify-content-center"><span
												class="fa fa-facebook"></span></a>
										<a href="#"
											class="social-icon d-flex align-items-center justify-content-center"><span
												class="fa fa-twitter"></span></a>
									</p>
								</div>
							</div>
							<form action="#" class="signin-form">
								<div class="form-group mb-3">
									<label class="label" for="name">用户名</label>
									<input type="text" class="form-control" placeholder="Username" required  id="name" >
								</div>
								<div class="form-group mb-3">
									<label class="label" for="password">密&nbsp;&nbsp;码</label>
									<input type="password" class="form-control" placeholder="Password" required id="password">
								</div>
								<div class="form-group">
									<button type="submit" id="submit" class="form-control btn btn-primary rounded submit px-3">注册</button>
								</div>
								
							</form>
							<p class="text-center">已有账号? <a data-toggle="tab" href="/login">直接登录</a></p>
						</div>
					</div>
				</div>
			</div>
		</div>
	</section>

        (1)新用户注册

        (2)用户登录

3.2 系统首页

        主页提供简洁明了的界面设计,用户可以通过主页快速了解系统的基本功能和所包含的核心模块。

3.3 大盘指数行情

        实时采集上证指数、深证成指、创业板指、中小板指和沪深300指数的日线行情数据,利用 echarts 进行股票 K 线数据的可视化:

3.4 个股量化分析

        支持个股的股票代码、股票名称、名称缩写等形式的股票模糊搜索,个股的量化分析包括:个股的 K线行情数据、公司简介、核心财务指标、机构预测、核心概念板块等。

        (1)个股K线与公司简介

        (2)主要财务指标与机构预测

        (3)个股的核心概念板块

3.5 涨停板热点分析

        通过选择交易日的日期,系统实时采集当天的涨停板个股数据,统计不同行业博客的涨停股票数据分布和涨停股的成交额占比分布,并将当天的涨停板的股票信息、成交额、流通市值、换手率、封板资金、炸板统计、行业板块等信息进行表格展示:

        (1)热点行业板块涨停板数量分布

        (2)当日涨停股票池

        涨停股票池表格中,点击股票代码或股票名称,可直接跳转到该个股的量化分析页面。

3.6 大盘资金流向

        实时采集交易日的大盘资金流向,包括:

  • 沪深两市实时资金流(主力、超大单、大单、中单和小单的实时资金流)
  • 南向资金的实时资金流(港股通(沪)、港股通(深)的实时净买额)

3.7 市场基本面估值分析

        市场的基本面估值包括大盘市盈率TTM、大盘市净率 MRQ两个维度,同时对近5年大盘市盈率的30、50、70分位数进行对比:

3.8 龙虎榜热股排名

        采集交易日的龙虎榜数据,挖掘最新资金热点方向,击股票代码或股票名称,可直接跳转到该个股的量化分析页面。

3.9 个股收益量化分析

        支持个股的股票代码、股票名称、名称缩写等形式的股票模糊搜索,分析该个股的每日涨跌幅收益率、和累计收益率情况:

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

        利用 Tensorflow 框架构建 LSTM 神经网络,预测某一只股票的未来走势,系统支持在线的参数调试,以观察不同参数对预测性能的影响,对于历史数据,计算模型预测的误差,以作为趋势预测的参考。

4. 总结

        本项目利用 Python 网络爬虫技术从某财经网站网站实时采集A股各大指数、个股的 K线数据、公司简介、财务指标、机构预测、资金流向、龙虎榜等数据,并进行 KDJ、BOLL等技术指标的计算和收益率的量化计算,构建股票数据分析与预测系统,深入挖掘板块热点、资金流向、市场估值等,并利用 Tensorflow 深度学习框架构建 LSTM 神经网络,预测个股的未来走势

  B站系统演示视频:【重磅升级,全网最优!】基于大数据的股票量化分析与预测系统_哔哩哔哩_bilibili

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。技术交流、源码获取认准下方 CSDN 官方提供的学长 QQ 名片 :)

精彩专栏推荐订阅:

1. Python-数据挖掘实战案例

2. Python-深度学习实战案例

3. Python-管理系统实战案例

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图像处理中常用的统计矩

目录 原点矩中心矩常用的统计矩偏度&#xff08;Skewness&#xff09;定义解释 峰度&#xff08;Kurtosis&#xff09;定义解释 统计矩的应用MATLAB相关函数 原点矩&#xff08;Moment about the Origin&#xff09;和中心矩&#xff08;Central Moment&#xff09;是概率论和数…

YOLOv11改进 | 融合篇,YOLOv11改进主干网络为MobileNetV3+CA注意机制

YOLOv11改进介绍 YOLOv11 跟 YOLOv8 结构差不多相似,只是作者在 YOLOv8 基础上进行了改进,我感觉 YOLOv11 训练速度更快,map和精度应该比 YOLOv8 高一些,所以我会把 YOLOv11 改进也写在本专栏里面。YOLOv11 改进,可以看往期 YOLOv8 改进主干网络教程,原理都是一样的,这…

【m6A】如何调节【免疫】,双热点如何碰撞出火花?

国自然已经放榜许久&#xff0c;【免疫】和【m6A】&#xff08;N6-甲基腺苷&#xff09;再次成为热门研究主题。m6A作为真核生物mRNA的主要表观遗传修饰之一&#xff0c;它通过调控mRNA的稳定性、剪接、运输和翻译等过程&#xff0c;进而影响基因的表达[1]。 图1.关键词【免疫、…

热烈祝贺!开利网络成为第一批广州市数据要素入库企业

今日&#xff0c;我们怀着无比激动的心情&#xff0c;热烈祝贺 广州市开利网络科技有限公司成为第一批广州市数据要素入库企业&#xff01;这一殊荣&#xff0c;是对 广州市开利网络科技有限公司在数据领域卓越表现的高度认可&#xff0c;更是 广州市开利网络科技有限公司发展历…

华为OD机试 - 排队游戏 刺头学生(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

动态规划lc

先找到规律&#xff0c;然后找边界情况&#xff1b;部分特殊情况分类讨论 *递归 70.爬楼梯 简单 提示 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a…

瑞芯微RK3566/RK3568 Android11使用OTA升级固件方法,深圳触觉智能鸿蒙开发板演示,备战第九届华为ICT大赛

本文介绍瑞芯微RK3566/RK3568在Android11系统OTA升级固件方法&#xff0c;使用触觉智能的Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566&#xff0c;Laval官方社区主荐&#xff01; 1、OTA包生成 在源码根目录上执行以下命令编译OTA包 # make installclean # …

效率提高——自动登录校园网(河海大学)与模拟点击与输入获取最新消息

文章目录 零、前言一、自动登录校园网1.1 快速锁定小工具1.2 版本问题1.3 出现进程未结束的情况1.4 关于chromedriver.exe1.5 打包ico图片格式 二、获取信息门户最新消息参考文章 零、前言 最近被校园网弄的也是比较烦心&#xff0c;而且准备远程弄弄这些玩具&#xff0c;为以…

150万条多语种音频数据!浙大清华发布语音伪造检测框架SafeEar,兼顾隐私保护,附代码和数据集

150万条多语种音频数据&#xff01;浙大清华发布语音伪造检测框架SafeEar&#xff0c;兼顾隐私保护&#xff0c;附代码和数据集. SafeEar是一种内容隐私保护的语音伪造检测方法&#xff0c;其核心是设计基于神经音频编解码器的解耦模型&#xff0c;分离语音声学与语义信息&…

服务器数据恢复—硬盘坏扇区导致Linux系统服务器数据丢失的数据恢复案例

服务器数据恢复环境&#xff1a; 一台linux操作系统网站服务器&#xff0c;该服务器上部署了几十个网站&#xff0c;使用一块SATA硬盘。 服务器故障&原因&#xff1a; 服务器在工作过程中突然宕机。管理员尝试重新启动服务器失败&#xff0c;于是将服务器上的硬盘拆下检测…

PostgreSQL数据库安全管理,细节都在这里了

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

要求信创检测的项目验收中,验收依据有哪些?

一、验收依据和分类 验收依据&#xff1a; 通常包括立项批复文件以及经批复的项目建议书、可行性研究报告、业务需求说明书&#xff1b;正式设计文件&#xff1b;项目招标文件和采购文件&#xff1b;签订的项目合同或协议&#xff1b;经批准的项目变更文件&#xff1b;有关法…

出海快报 | “三消+短剧”手游横空出世,黄油相机“出圈”日本市场,从Q1看日本手游市场趋势和机会

编者按&#xff1a;TopOn出海快报栏目为互联网出海从业者梳理出海热点&#xff0c;供大家了解行业最新发展态势。 1.“三消短剧”横空出世&#xff0c;融合创新手游表现亮眼 随着竞争的加剧&#xff0c;新产品想要突出重围&#xff0c;只能在游戏中加入额外的元素。第一次打开…

vue使用js-xlsx导入本地excle表格数据,回显在页面上

效果图 解释放在代码的注释中 页面代码&#xff0c;导入本地文件我用的是element的上传工具 // 我是根据js文件直接引入的 <script src"/js/xlsx.full.min.js"></script>// 导入excelreadWorkbookFromLocalFile(fileData) {// 文件信息const file f…

智能生成ppt软件哪个好?如何高效生成ppt?

想要快速制作出专业且吸引人的PPT演示文稿吗&#xff1f;ai智能生成ppt工具可以帮你实现这一目标。 无需复杂的设计技巧&#xff0c;也不必花费大量时间&#xff0c;只需几个简单的步骤&#xff0c;就能创造出令人印象深刻的演示文稿。下面是一份免费版教程&#xff0c;让你轻…

中航资本:股票低佣开户注意事项,怎么低佣金开户?

股票生意中会涉及到一些手续费&#xff0c;佣金费、印花税、过户费等&#xff0c;印花税、过户费的费率是承认的&#xff0c;而不同证券公司、生意途径的佣金费率都有或许不同。 低佣金开户办法&#xff1a; 1、线上券商途径开户&#xff1a;许多大型证券公司&#xff0c;例如…

在HF上部署你的专属MindSearch,随时随地开启智能搜索!

作者&#xff1a;MindSearch 兴趣小组成员张富才 本文将详细带领大家学习如何在 Hugging Face Space 部署****并美化专属自己的 MindSearch 应用&#xff0c;免去排队等待的烦恼&#xff0c;随时随地开启智能搜索&#xff01; 在深入开始之前&#xff0c;我们需要了解&#x…

深入理解 C/C++ 指针

深入理解 C 指针&#xff1a;指针、解引用与指针变量的详细解析 前言 在 C 编程语言中&#xff0c;指针 是一个非常强大且重要的概念。对于初学者来说&#xff0c;指针往往会让人感到困惑不解。本文将通过形象的比喻&#xff0c;帮助大家深入理解指针、解引用与指针变量的概念…

安装openai-whisper 失败

昨晚安装python 语音识别模型经常失败&#xff1a; pip install openai-whisper 具体原因是因为国外的源使网络不稳定造成断网 查阅资料我自己的解决办法是在自己C:\Users\用户名目录下建一个pip文件夹&#xff0c;在pip文件夹下建一个pip.ini文件 在pip.ini文件中加入自己要…

MYSQL 多表拼接link

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…