wumu
2025-01-08 6c68684bcdc55572de4084d7b4bc97ed20ffc68c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#ifndef GETSTOCKLIST_H
#define GETSTOCKLIST_H
 
#include <QMainWindow>
#include <QNetworkAccessManager>
#include <QNetworkCookie>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QStandardItemModel>
#include <QMenu>
#include <QLineSeries>   // 折线类
#include <QSplineSeries> // 曲线类
#include <QTimer>
 
QT_CHARTS_USE_NAMESPACE  // 命名空间得使用起来,要不然类会拿不到
 
 
/*
 * 关于SSL的处理,由于要请求 https的链接,需要将编译器目录下的两个dll动态库拷贝到对应编译器的bin目录下
 * 将libeay32.dll 和 ssleay32.dll 两个文件复制到对应的区域
 * 例如从编译器的opt\bin原始目录:...\Qt5.9.4\Tools\mingw530_32\opt\bin 找个这2个dll
 * 拷贝到编译器的bin目录下: ...\Qt5.9.4\Tools\mingw530_32\bin
 */
namespace Ui {
class GetStockList;
}
 
class GetStockList : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit GetStockList(QWidget *parent = 0);
    ~GetStockList();
    void getStockAllCode(QByteArray &buffer); // 获取所有沪深股票的信息
    void getStockOne(QByteArray &buffer); // 获取单只股票的处理
    void getIndustryInfo(QByteArray &buffer); // 获取行业信息
    void getStockByIndustry(QByteArray &buffer,QString industryCode); // 通过行业获取股票
 
signals:
    void sendChartData(QLineSeries*);  // 折线
    void sendChartData(QSplineSeries*);  // 曲线
    void sendInfoMess(QString); // 发送消息提示
 
private slots:
    void on_pushButton_get_clicked();
    void showAplyData(QNetworkReply *reply);  // 用来响应请求的回传数据的槽函数
 
    void on_pushButton_get_2_clicked();  // 获取沪深股市数据的按钮槽函数
    void showMenu();
    void policySlot();
    void priceSlot();
    void maPolicySlot(); // MA策略槽
    void maTest100Slot(); // MA策略回测前100名槽
    void macdPolicySlot(); // MACD策略槽
 
    void getCodeSlot(); // 获取股票代号的定时器的槽
 
    void on_pushButton_industry_clicked();
 
private:
    Ui::GetStockList *ui;
    // 这2个用于爬取数据的
    QNetworkRequest m_request; // 用于管理请求头的
    QString m_cookie; // 缓存
    QNetworkAccessManager m_manager; // 用于管理http请求及响应的
 
    // 下面这几个用于显式爬到的股票数据
    QStandardItemModel *m_model; // 标准项模型,用来存储数据的,将模型和视图进行了分离
    QMenu *m_menu; // 菜单指针,用来处理右击菜单的
    int m_numsCnt; // 单个股票的数据行数
    int m_menuIndex; // 针对单个股票需要判断是哪个操作,用来记录下标的
 
    QTimer *m_getCodeTimer; // 获取股票代号的定时器
    QMap<QString,QString> m_codeNames; // 股票代号和名字
 
    QMap<QString,QString> m_industryInfo; // 行业代码和行业名字
    QMap<QString,QVector<QString>> m_codeAndIndustry; // 股票代号及对应的行业代码
    QString m_curIndustry; // 当前行业
    QString m_dateType; // 日期类型:day week month year
    int m_maTestNum; // ma策略回测数量
 
};
 
#endif // GETSTOCKLIST_H