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

这篇具有很好参考价值的文章主要介绍了基于大数据的股票数据可视化分析与预测系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1. 项目简介

        股票市场行情分析与预测是数据分析领域里面的重头戏,其符合大数据的四大特征:交易量大、频率高、数据种类多、价值高。本项目基于 Python 利用网络爬虫技术从某财经网站采集上证指数、创业板指数等大盘指数数据,以及个股数据,同时抓取股票公司的简介、财务指标和机构预测等数据,并进行 KDJ、BOLL等技术指标的计算,构建股票数据分析系统,前端利用echarts进行可视化。基于深度学习算法实现股票价格预测,为投资提供可能的趋势分析。

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

2. 功能组成

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

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

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 = None
    while 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 += 1
            ts_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 = 0
        if new_stock_df is not None:
            break

    stock_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 = 1
        page_size = 10000
        HdDate = 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:
                break
            HdDate = 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 系统注册登录

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

 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 = 1
    length = len(seq)
    # 跳过X中前面几个 nan 值
    while i < length:
        if np.isnan(seq.iloc[i]):
            i += 1
        else:
            break
    preY = seq.iloc[i]  # Y'
    ret.append(preY)
    while i < length:
        Y = (M * seq.iloc[i] + (N - M) * preY) / float(N)
        ret.append(Y)
        preY = Y
        i += 1
    return 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,3
    data['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) * 2
    return {
        '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 指标,其效果如下: 

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

4.4 最新龙虎榜个股排名

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

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

4.5 个股诊断分析

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

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

4.6 股票对比分析

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

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

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

         个股的历史行情数据为典型的时序数据,本项目采用循环神经网络实现股票价格的预测,通过调整时间窗口、训练的次数等参数,测试模型预测的效果:基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据

5. 总结

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

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

精彩专栏推荐订阅:

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

基于数据挖掘的股票预测系统,Python数据挖掘精品实战案例,大数据文章来源地址https://www.toymoban.com/news/detail-797237.html

到了这里,关于基于大数据的股票数据可视化分析与预测系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于python天气数据的预测分析及可视化系统 毕业设计开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月04日
    浏览(63)
  • 基于Python机器学习算法农业数据可视化分析预测系统(完整系统源码+数据库+详细文档+论文+部署教程)

    基于python机器学习XGBoost算法农业数据可视化分析预测系统,旨在帮助农民和相关从业者更好地预测农作物产量,以优化农业生产。该系统主要包括四个功能模块。 首先,农作物数据可视化模块利用Echarts、Ajax、Flask、PyMysql技术实现了可视化展示农作物产量相关数据的功能。

    2024年04月27日
    浏览(42)
  • 计算机毕业设计:基于python招聘数据分析可视化系统+预测算法+爬虫+Flask框架(建议收藏)

    [毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总 2023年 - 2024年 最新计算机毕业设计 本科 选题大全 汇总 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。 本项目旨在通过使用Python的requests库

    2024年01月23日
    浏览(57)
  • django基于Python的房价预测系统+爬虫+大屏可视化分析

    欢迎大家点赞、收藏、关注、评论   房价是一个国家经济水平的重要体现,也是反映居民生活质量和水平的最直接的指标。目前我国住房制度以租售并举形式出现,房屋所有权人通过出售、出租房屋获得租金收入。但是由于房价波动较大,不能及时反映房价变化趋势,需要

    2024年02月08日
    浏览(44)
  • 基于大数据的空气质量预测与可视化分析

    1.内容及要求: 随着工业化和城市化进程的加快,空气污染已成为全球面临的主要环境问题之一。二零二零年我国提出“碳达峰碳中和”的目标,更加深刻我国走可持续发展道路的脚步。在我国,特别是某些大城市,由于车辆排放、工业排放和其他人为活动,空气质量问题

    2024年03月20日
    浏览(56)
  • 基于大数据的空气质量预测和可视化分析

    城市化与环境挑战 :随着城市化进程的加快,环境污染问题,尤其是空气质量问题,已成为公众关注的焦点。 数据监测的重要性 :城市空气质量数据的准确获取对于环境管理和政策制定至关重要,但目前存在数据来源不稳定和质量参差不齐的问题。 发达国家的监测体系 :

    2024年04月17日
    浏览(40)
  • 大数据毕业设计:房屋数据分析可视化系统 预测算法 可视化 商品房数据 Flask框架(源码+讲解视频)✅

    毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅 感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。

    2024年01月17日
    浏览(70)
  • 基于分布式的智联招聘数据的大屏可视化分析与预测

    项目需求分析及体系架构 1.1 项目介绍 互联网成了海量信息的载体,目前是分析市场趋势、监视竞争对手或者获取销售线索的最佳场所,数据采集以及分析能力已成为驱动业务决策的关键技能。《 计算机行业岗位招聘数据分析》旨在 利用 python 编写爬虫程序,从招聘网站上爬

    2024年02月06日
    浏览(54)
  • 计算机竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm

    🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 大数据时间序列股价预测分析系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:3分 🧿 更多资料, 项目分享: https://gite

    2024年02月11日
    浏览(43)
  • 可视化图表组件之股票数据分析应用

    股市是市场经济的必然产物,在一个国家的金融领域之中有着举足轻重的地位。在过去,人们对于市场走势的把握主要依赖于经验和直觉,往往容易受到主观因素的影响,导致决策上出现偏差。如今,通过数据可视化呈现,便可将历年数据和市场情报进行深度挖掘、分析,从

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包