wumu
2025-02-12 8b717bccb1065ba5a38208fb073045e43fb8ef5e
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#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>
#include <QCompleter> // 用于模糊匹配
#include "customitem.h"
#include "customsortproxymodel.h"
 
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); // 发送消息提示
    void sendClosePrice(QString,QString); // 发送最新的价格:名字、价格
    void sendCodeNames(QMap<QString, 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 multiResonateTest100Slot(); // 多策略共振回测前100名槽
    void macdPolicySlot(); // MACD策略槽
    void buttomToUpPolicySlot(); // 底部翻转策略--主要用于月线处理
    void multiResonatePolicySlot(); // 多策略共振
    void oneUpCrossFourSlot(); // 一阳穿四线,千军万马来相见
    void oneUpCrossFourTest100Slot(); // 一阳穿四线,千军万马来相见 回测
 
    void getCodeSlot(); // 获取股票代号的定时器的槽
    void pollMultiSlot(); // 轮询多策略共振定时器
 
    void on_pushButton_industry_clicked();
 
    void getLastClosePrice(QString name); // 通过名字获取股票价格槽
 
    void on_pushButton_filterCap_clicked();
 
    void on_pushButton_search_clicked();
 
    void on_lineEdit_search_returnPressed();
 
private:
    Ui::GetStockList *ui;
    // 这2个用于爬取数据的
    QNetworkRequest m_request; // 用于管理请求头的
    QString m_cookie; // 缓存
    QNetworkAccessManager m_manager; // 用于管理http请求及响应的
 
    // 下面这几个用于显式爬到的股票数据
    QStandardItemModel *m_model; // 标准项模型,用来存储数据的,将模型和视图进行了分离
    CustomSortProxyModel *m_customModel; // 用于排序的自定义模型
 
    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策略回测数量
 
    QTimer *m_pollMultiTimer; // 轮询多策略定时器
 
    QCompleter *m_completer; // 支持模糊匹配
 
 
};
 
#endif // GETSTOCKLIST_H