竞赛保研 基于大数据的股票量化分析与股价预测系统

文章目录

  • 0 前言
  • 1 课题背景
  • 2 实现效果
  • 3 设计原理
    • QTCharts
    • arma模型预测
    • K-means聚类算法
    • 算法实现关键问题说明
  • 4 部分核心代码
  • 5 最后

0 前言

🔥 优质竞赛项目系列,今天要分享的是

🚩 基于大数据的股票量化分析与股价预测系统

该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

1 课题背景

基于大数据的股票可视化分析平台设计,对股票数据进行预处理,清洗以及可视化分析,同时设计了软件界面。

2 实现效果

价格可视化
在这里插入图片描述
魔梯访问与指标计算

在这里插入图片描述
聚类分析
在这里插入图片描述

3 设计原理

QTCharts

简介

QtCharts是Qt自带的组件库,其中包含折线、曲线、饼图、棒图、散点图、雷达图等各种常用的图表。而在地面站开发过程中,使用折线图可以对无人机的一些状态数据进行监测,更是可以使用散点图来模拟飞机所在位置,实现平面地图的感觉。

使用Qt
Charts绘制,大概可以分为四个部分:数据(QXYSeries)、图表(QChart)、坐标轴(QAbstractAXis)和视图(QChartView)。这里就不一一给大家介绍了,下面给大家说一下QtCharts的配置安装。

QtCharts模块的C++类

在这里插入图片描述

arma模型预测

简介

ARMA模型,又称为ARMA
(p,q)模型。其核心思想就是当前正如名字所显示的,整个模型的核心就是要确定p和q这两个参数。其中,p决定了我们要用几个滞后时期的价格数据,而q决定了我们要用几个滞后时期的预测误差。

在这里插入图片描述

简单来说,ARMA模型做了两件事。一是基于趋势理论,用历史数据来回归出一个当前的价格预测,这个预测反映了自回归的思想。但是这个预测必然是有差异的,所以ARMA模型根据历史的预测误差也回归出一个当前的误差预测,这个预测反映了加权平均的思想。用价格预测加上误差预测修正,才最终得到一个理论上更加精确的最终价格预测。

比起简单的自回归模型或者以时间为基础的简单趋势预测模型,ARMA模型最大的优势,在于综合了趋势理论和均值回归理论,理论上的精确度会比较高。

    '''自回归滑动平均模型'''from statsmodels.tsa.arima_model import ARMAfrom itertools import product​     ```
def myARMA(data):p = range(0, 9)q = range(0, 9)parameters = list(product(p, q))  # 生成(p,q)从(0,0)到(9,9)的枚举best_aic = float('inf')result = Nonefor param in parameters:try:model = ARMA(endog=data, order=(param[0], param[1])).fit()except ValueError:print("参数错误:", param)continueaic = model.aicif aic < best_aic:  # 选取最优的aicbest_aic = model.aicresult = (model, param)return result
```

K-means聚类算法

基本原理

k-Means算法是一种使用最普遍的聚类算法,它是一种无监督学习算法,目的是将相似的对象归到同一个簇中。簇内的对象越相似,聚类的效果就越好。该算法不适合处理离散型属性,但对于连续型属性具有较好的聚类效果。

聚类效果判定标准

使各个样本点与所在簇的质心的误差平方和达到最小,这是评价k-means算法最后聚类效果的评价标准。

在这里插入图片描述

算法实现步骤

1)选定k值

2)创建k个点作为k个簇的起始质心。

3)分别计算剩下的元素到k个簇的质心的距离,将这些元素分别划归到距离最小的簇。

4)根据聚类结果,重新计算k个簇各自的新的质心,即取簇中全部元素各自维度下的算术平均值。

5)将全部元素按照新的质心重新聚类。

6)重复第5步,直到聚类结果不再变化。

7)最后,输出聚类结果。

算法缺点

虽然K-Means算法原理简单,但是有自身的缺陷:

1)聚类的簇数k值需在聚类前给出,但在很多时候中k值的选定是十分难以估计的,很多情况我们聚类前并不清楚给出的数据集应当分成多少类才最恰当。

2)k-means需要人为地确定初始质心,不一样的初始质心可能会得出差别很大的聚类结果,无法保证k-means算法收敛于全局最优解。

3)对离群点敏感。

4)结果不稳定(受输入顺序影响)。

5)时间复杂度高O(nkt),其中n是对象总数,k是簇数,t是迭代次数。

算法实现关键问题说明

K值的选定说明

根据聚类原则:组内差距要小,组间差距要大。我们先算出不同k值下各个SSE(Sum of
squared
errors)值,然后绘制出折线图来比较,从中选定最优解。从图中,我们可以看出k值到达5以后,SSE变化趋于平缓,所以我们选定5作为k值。

在这里插入图片描述

初始的K个质心选定说明

初始的k个质心选定是采用的随机法。从各列数值最大值和最小值中间按正太分布随机选取k个质心。

关于离群点

离群点就是远离整体的,非常异常、非常特殊的数据点。因为k-
means算法对离群点十分敏感,所以在聚类之前应该将这些“极大”、“极小”之类的离群数据都去掉,否则会对于聚类的结果有影响。离群点的判定标准是根据前面数据可视化分析过程的散点图和箱线图进行判定。

4 部分核心代码

#include "kmeans.h"
#include "ui_kmeans.h"kmeans::kmeans(QWidget *parent) :QDialog(parent),ui(new Ui::kmeans)
{this->setWindowFlags(Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);ui->setupUi(this);
}kmeans::~kmeans()
{delete ui;
}void kmeans::closeEvent(QCloseEvent *)
{end_flag=true;
}void kmeans::on_pushButton_clicked()
{end_flag=false;//读取数据QFile sharpe("sharpe.txt");sharpe.open(QIODevice::ReadOnly|QIODevice::Text);std::vector<std::array<double,2>> data;while(!sharpe.atEnd()){QStringList linels=QString(sharpe.readLine()).split(',');qreal mean=linels[3].toDouble();qreal sd=linels[4].toDouble();if(mean>-0.06&&mean<0.06&&sd<0.12)data.push_back({mean,sd});}std::random_shuffle(data.begin(),data.end());sharpe.close();//聚类ui->pushButton->setText("聚类中...");QApplication::processEvents();auto labels=std::get<1>(dkm::kmeans_lloyd(data,9));ui->pushButton->setText("开始");QApplication::processEvents();//作图QChart *chart = new QChart();//chart->setAnimationOptions(QChart::SeriesAnimations);//chart->legend()->setVisible(false);QList<QScatterSeries*> serieses;QList<QColor> colors{QColor(Qt::black),QColor(Qt::cyan),QColor(Qt::red),QColor(Qt::green),QColor(Qt::magenta),QColor(Qt::yellow),QColor(Qt::gray),QColor(Qt::blue),QColor("#A27E36")};for(int i=0;i<9;i++){QScatterSeries *temp = new QScatterSeries();temp->setName(QString::number(i));temp->setColor(colors[i]);temp->setMarkerSize(10.0);serieses.append(temp);chart->addSeries(temp);}chart->createDefaultAxes();/*v4
-------------------------------------------------------------Percentiles      Smallest1%     -.023384        -.359855%    -.0115851       -.349373
10%    -.0078976       -.325249       Obs             613,849
25%    -.0037067       -.324942       Sum of Wgt.     613,84950%     .0000567                      Mean           .0004866Largest       Std. Dev.      .0130231
75%     .0041332        1.28376
90%     .0091571        1.52169       Variance       .0001696
95%     .0132541        2.73128       Skewness       95.21884
99%     .0273964        4.56203       Kurtosis       28540.15v5
-------------------------------------------------------------Percentiles      Smallest1%     .0073016       4.68e-075%     .0112397       7.22e-07
10%     .0135353       7.84e-07       Obs             613,849
25%     .0180452       8.21e-07       Sum of Wgt.     613,84950%     .0248626                      Mean           .0282546Largest       Std. Dev.      .0213631
75%     .0343356         3.2273
90%     .0458472        3.32199       Variance       .0004564
95%     .0549695        4.61189       Skewness       68.11651
99%     .0837288        4.75981       Kurtosis       11569.69*/QValueAxis *axisX = qobject_cast<QValueAxis *>(chart->axes(Qt::Horizontal).at(0));axisX->setRange(-0.06,0.06);axisX->setTitleText("平均值");axisX->setLabelFormat("%.2f");QValueAxis *axisY = qobject_cast<QValueAxis *>(chart->axes(Qt::Vertical).at(0));axisY->setRange(0,0.12);axisY->setTitleText("标准差");axisY->setLabelFormat("%.2f");ui->widget->setRenderHint(QPainter::Antialiasing);ui->widget->setChart(chart);int i=0;auto labelsiter=labels.begin();for(auto &&point : data){if(end_flag)return;serieses[*labelsiter]->append(QPointF(point[0],point[1]));i++;labelsiter++;if(i%1000==0){QApplication::processEvents();}}
}void kmeans::on_pushButton_2_clicked()
{end_flag=true;
}

5 最后

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

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

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

相关文章

【逗老师的无线电】ICOM IC-705终端模式Terminal Mode直连反射器配置-内置网关IP直连篇

各位友台大家好呀&#xff0c;逗老师最近整了一台IC-705&#xff0c;最吸引人的莫过于这玩意可以IP直连反射器。下面简单介绍一下这个功能和其配置方法 目录 一、功能二、依赖条件三、配置3.1、IC-705连接WIFI3.2、配置Terminal Mode3.2.1、点击MENU进入菜单&#xff0c;翻到第…

Linux:apache优化(4)—— 隐藏版本号

运行环境 yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre gcc make zlib-devel 源码包配置 ./configure --prefix/usr/local/httpd --enable-cgi --enable-rewrite --enable-so --enabl…

【哈希数组】697. 数组的度

697. 数组的度 解题思路 首先创建一个IndexMap 键表示元素 值表示一个列表List list存储该元素在数组的所有索引之后再次创建一个map1 针对上面的List 键表示列表的长度 值表示索引的差值遍历indexmap 将所有的list的长度 和 索引的差值存储遍历map1 找到最大的key 那么这个Ke…

QString设置小数点精度位数

QString设置小数点精度位数 Chapter1 QString设置小数点精度位数Chapter2 Qt中QString.toDouble有效位数6位问题以及数据小数点有效位数的处理问题一&#xff1a;QString.toDouble有效位只有6位问题二:小数点有效位数的问题 Chapter3 qt QString转Double只显示6位数字的问题(精…

12.31_黑马数据结构与算法笔记Java

目录 331 两数之和 Leetcode167 332 三数之和 Leetcode15 333 四数之和 Leetcode18 334 盛水最多容器 Leetcode11 335 滑动窗口最大值 Leetcode239 336 接雨水 Leetcode42 337 字符串匹配 bf Leetcode28 338 字符串匹配 kmp Leetcode28 339 字符串匹配 lps Leetcode28 …

EasyExcel详解(结合官方文档)

EasyExcel 零、前言 文章是根据官方文档&#xff0c;加上自己的测试运行总结出来的&#xff0c;目前只总结的EasyExcel读的部分&#xff0c;写的部分还未完结&#xff0c;后续会更新1、官方文档 https://easyexcel.opensource.alibaba.com/2、EasyExcel的maven依赖 <!--…

手机/平板实现电脑第三屏-记录极简

软件&#xff1a; 手机 平板 : moonlight 电脑&#xff1a; 1 KtzeAbyss/Easy-Virtual-Display 2 Parsec Virtual Display Driver https://builds.parsec.app/vdd/parsec-vdd-0.38.0.0.exe 3 LizardByte/Sunshine: Self-hosted game stream host for Moonlight. (gith…

ssrf之gopher协议的使用和配置,以及需要注意的细节

gopher协议 目录 gopher协议 &#xff08;1&#xff09;安装一个cn &#xff08;2&#xff09;使用Gopher协议发送一个请求&#xff0c;环境为&#xff1a;nc起一个监听&#xff0c;curl发送gopher请求 &#xff08;3&#xff09;使用curl发送http请求&#xff0c;命令为 …

ROS学习记录:用C++实现对wpr_simulation软件包中机器人的运动控制

一、在工作空间下输入catkin_make进行编译 二、在工作空间中输入source ./devel/setup.bash后回车 三、机器人的运动控制在wpr_simulation中有一个例子程序&#xff0c;在工作空间中输入&#xff1a; roslaunch wpr_simulation wpb_simple.launch后回车 四、就会启动一个仿真环…

VMware虚拟机网络配置——桥接模式

VM虚拟机配置桥接模式&#xff0c;可以让虚拟机和物理主机一样存在于局域网中&#xff0c;可以和主机相通&#xff0c;和互联网相通&#xff0c;和局域网中其它主机相通。 vmware为我们提供了三种网络工作模式&#xff0c;它们分别是&#xff1a;Bridged&#xff08;桥接模式&…

NGUI基础-三大基础组件之Panel组件

目录 Panel组件 Panel的作用&#xff1a; 注意&#xff1a; 相关关键参数讲解&#xff1a; Alpha&#xff08;透明度值&#xff09;&#xff1a; Depth&#xff08;深度&#xff09;&#xff1a; Clippinng&#xff08;裁剪&#xff09;&#xff1a; ​编辑 None Tex…

超真实随身WiFi测评,你确定不看一下?随身WiFi靠谱吗? 看完这篇文章你就懂了?随身WiFi真实评测

用了一年多的格行随身wifi&#xff0c;屏幕都磨花了。直接看图&#xff0c;都是自己实测&#xff01; 设备是去年买的&#xff0c;到现在也快1年了&#xff0c;一直有朋友蹲后续&#xff0c;现在把后续给大家&#xff01;到底是大牌子&#xff0c;确定是不跑路的随身wifi&…

Navicat for MySQL 创建函数——报错1418

解决方法 1查看是否开启了创建函数的功能 输入下面语句查看是否开启了创建函数的功能 show variables like %func%; 下面为创建函数功能为开启的查询结果 如果不是上面的结果可以用下面的语句修改为开启 set GLOBAL log_bin_trust_function_creatorstrue; //或 set GLOBAL …

Python:日期和时间类型学习

背景 在非开发环境经常需要做一下日期计算&#xff0c;就准备使用Python&#xff0c;顺便记下来学习的痕迹。 代码 1 1 # coding utf-82 2 3 3 from datetime import *4 4 5 5 ########################## 日期 ##########################6 6 date_now date.today()…

前端框架前置学习(4) AJAX

同步代码和异步代码 同步代码 浏览器按照我们书写代码的顺序一行一行地执行程序.浏览器会等待代码的解析和工作,在上一行代码完成之后才会执行下一行代码.这被称之为同步程序 逐行执行,需要原地等待结果 异步代码 异步编码技术使得程序可以在执行一个可能长期运行的任务的…

51和32单片机读取FSR薄膜压力传感器压力变化

文章目录 简介线性电压转换模块51单片机读取DO接线方式51代码实验效果 32单片机读取AO接线方式32代码实验效果 总结 简介 FSR薄膜压力传感器是可以将压力变化转换为电阻变化的一种传感器&#xff0c;单片机可以读取然后作为粗略测量压力&#xff08;仅提供压力变化&#xff0c;…

【web安全】验证码识别-burp的captcha-killer-modified插件教程(基于百度接口)(总结一些坑)

前言 菜某分享 captcha-killer-modified插件的安装教程 整体安装教程可以看他的 安装captcha-killer-modified插件&#xff08;windospython环境&#xff09;_aptcha-killer-modified的安装-CSDN博客 但是有一点补充。 这个里面的codereg.py文件有个问题 可能是版本的问…

如何用Python批量计算Word中的算式

一、问题的提出 到了期末&#xff0c;大家都在忙着写总结、改试卷、算工作量&#xff0c;写总结可以借助于ChatGPT&#xff0c;改试卷可以用星火的自动批阅功能&#xff0c;算工作量就是一项比较棘手的问题&#xff0c;因为它涉及很多算式&#xff0c;有时需要老师用计算器算来…

springcloud微服务篇--6.网关Gateway

一、为什么需要网关&#xff1f; 网关功能&#xff1a; 身份认证和权限校验 服务路由、负载均衡 请求限流 在SpringCloud中网关的实现包括两种&#xff1a; gateway zuul Zuul是基于Servlet的实现&#xff0c;属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的Web…

蓝牙物联网移动硬件数据传输系统解决方案

随着传感器技术、网络技术和数据传输技术的不断发展&#xff0c;人们对智能设备的需求日渐增强,利用传感器技术可以对周围环境进行准确和全面的感知&#xff0c;获取到实时信息&#xff0c;从而在网络中进行传输和共享&#xff0c;再通过服务器对各种数据进行保存、分析和挖掘等…