本文总结一下以前参加的一个股票分析软件的子项目(仅放了部分代码),项目用QT实现的,股票历史数据存储在excel文件中。
子项目的目标是根据提供的股票历史数据查找与近期股票数据相似的时间段,并根据历史数据对走势进行预测。主要功能包括:
- (1)股票任意时间段数据的显示
- (2)相似历史数据的查找
- (3)股票未来走势的预测
- (4)更新股票数据
- (5)导入/存储相应的数据
下面分别对上面的功能做一下思路性的概括总结:
- 股票数据的显示
使用蜡烛图对股票数据进行显示,包含当股价、交易量、走势等,如下图所示:
/***************价格图(蜡烛图)*****************/
//数据链
QCandlestickSeries *acmeSeries = new QCandlestickSeries();
acmeSeries->setName( name );
acmeSeries->setIncreasingColor(QColor(Qt::red));
acmeSeries->setDecreasingColor(QColor(Qt::green));
//acmeSeries->setBodyOutlineVisible(false);
//acmeSeries->setBodyWidth(0.01);
//横轴显示的信息
QStringList categories;
for( i=0;i<stock_chart->date.size();i++ )
categories.append( stock_chart->date.at(i) );
//添加最近交易天数的数据
add_chart_set( stock_chart,acmeSeries );
//创建Chart
QChart *chart = new QChart();
chart->addSeries(acmeSeries);
//chart->setTitle( name );
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->createDefaultAxes();
QBarCategoryAxis *axisX = qobject_cast<QBarCategoryAxis *>(chart->axes(Qt::Horizontal).at(0));
axisX->setCategories(categories);
axisX->setLabelsAngle( 90 );
axisX->setLabelsFont( QFont("Times",7) );
QValueAxis *axisY = qobject_cast<QValueAxis *>(chart->axes(Qt::Vertical).at(0));
axisY->setMax(axisY->max() * 1.01);
axisY->setMin(axisY->min() * 0.99);
chart->