资源下载地址:https://download.csdn.net/download/sheziqiong/85709010
资源下载地址:https://download.csdn.net/download/sheziqiong/85709010
需求分析
给定大规模数据集,包含美国股市和中国股市的每日行情数据,编写 C++程序完成要求的数据处理、分析和可视化等任务。
计算涨跌额和涨跌幅:
计算每只股票每日的涨跌额和涨跌幅。计算公式如下:
涨跌额 = 今日收盘价 – 昨日收盘价 涨跌幅 = (涨跌额 / 昨日收盘价)* 100%
将计算出的涨跌额和涨跌幅添加到原来的数据集中,即新增两列,存成文件。
外排序:
将每日股票行情数据按照涨跌幅从大到小排列,日期由近及远。即对数据集按照日期和涨跌幅两列进行降序排列,先排日期,最靠近现在的日期排在最前;再对同一日内的所有股票行情按照涨跌幅的降序排列。
计算夏普比率:
计算每只股票每年内涨跌幅的平均值和标准差,这里视为股票的年平均收益和标准差,用年平均收益除以标准差计算出该股票该年的夏普比率。
输出某月单日涨跌幅最大的 k 条股票交易数据:
对某一个指定的单月份的数据(已划分好的单月份数据的外部存储),进行外部排序。
排序的关键字为涨跌幅 的绝对值,按降序排序。指定单月份后(例如 2020 年 06 月),访问读取并排序单月份数据(如 2020-06.csv),单日涨跌幅最大的 k 条股票交易数据。严格限制内存大小(最多使用 10M 内存空间),通过检查 Windows 任务管理器的监控内存占用并测试。
可视化:
任意选择某时间段(365 天)内,夏普比例最高的 10 只股票,使用 QT 和外部库画出他们在指定期间(1 年)的日 K 线图。
基本思路:
功能1:使用c++文件读写就能完成,主要注意的是字符串的赋值复制等操作;
功能2:排序使用快排,自定义比较器;有一种读写文件特别方便的方式就是将文件按照二进制来读写;然后为了使外排序的复用率更高,使用一个status参数来决定每次使用的比较函数;
功能3:使用两个参数来记录上一次的时间和股票名,当时间过了一年之后就计算一次夏普率然后写入,股票类型变化时也需要写入;
功能4:在分割文件之前,利用外排序2号比较器生成一个按照涨跌幅降序得到的外排序文件,然后再把该文件分割为每个月份,这样根据输入参数年、月和k就可以直接读文件进行输出。
功能5:利用外部库实现。
代码中包含const、static、类的继承、复制构造等
可视化:
调试分析
UML类图:
系统流程图:
实验结果:
功能1 实现涨跌额涨跌幅的写入:
写入后文件大小位18.9G
功能二实现外排序:
下图为外排序文件,下下图为外排序结果:
功能3 :计算sharpe率:
功能4 :按时间分割数据并寻找单月涨跌额最大的TOP k条股票
2010 12 top 10 :
功能5 可视化:
拓展功能:无
附录
- 两个工程文件:
- Stock111.pro
- Stock2.pro
资源下载地址:https://download.csdn.net/download/sheziqiong/85709010
资源下载地址:https://download.csdn.net/download/sheziqiong/85709010