基于Qt开发获取CTP量化交易接口测试数据工具

 更新时间:2024年04月22日 08:48:59   作者:长沙红胖子Qt  
这篇文章主要为大家详细介绍了如何使用Qt软件开发K线股P相关软件,先开发一个通过CTP量化交易的sdk获取相关推送数据的工具,需要的可以参考下

需求

使用Qt软件开发K线股P相关软件,先开发一个通过CTP量化交易的sdk获取相关推送数据的工具(当前深度行情数据)。

注意

采集数据测试

1.晚上9点以后可以采集到数据

2.工作日 上午9:00 — 10:15,10:30 — 11:30,下午13:30 — 15:00

Demo

  

VS移植过程QtCreator

将vs的开发demo,调用sdk,迁移至QtCreator的IDE进行模块化的开发,便于设计软件构架、模块化封装和多工程测试。 

功能描述v1.0.0 注册登录服务器后台开始按钮注册订阅结束按钮取消订阅导出抓取得文本数据

模块化部署  

关键源码

TestSdkWidget异步多线程初始化

void TestSdkWidget::initControl()
{
    // 初始化sdk管理类
    {
        // 线程初始化
        _pStockSdkManager = StockSdkManager::getInstance();
        _pStockSdkManagerThread = new QThread();
        _pStockSdkManager->moveToThread(_pStockSdkManagerThread);
        connect(_pStockSdkManagerThread, SIGNAL(started()),
                _pStockSdkManager, SLOT(slot_start()));
        // 关联
        connect(_pStockSdkManager, SIGNAL(signal_stateLog(QString)),
                this, SLOT(slot_stateLog(QString)));
        // 开始
        _pStockSdkManagerThread->start();
    }

    // 按钮使能
    ui->pushButton_start->setEnabled(true);
    ui->pushButton_stop->setEnabled(false);
}

StockSdkManager.h 

#ifndef STOCKSDKMANAGER_H
#define STOCKSDKMANAGER_H

#include <QObject>
#include <QMutex>

#include "MdSpi.h"

class StockSdkManager : public QObject
{
    Q_OBJECT
private:
    explicit StockSdkManager(QObject *parent = 0);

public:
    static StockSdkManager * getInstance();         // 单例获取指针

signals:
    void signal_stateLog(QString logStr);           // 日志抛出

public slots:
    void slot_start();                              // 线程开启
    void slot_stop();                               // 线程关闭

public slots:
    void slot_startGetInfo();                       // 注册抓取数据(注册合约ID)
    void slot_stopGetInfo();                        // 注销注册停止获取

private:
    static StockSdkManager *_pInstance;
    static QMutex _mutex;

private:
    bool _running;

private:
    CThostFtdcMdApi* _pMdapi;                       // 合约api
    MdSpi *_pMdSpi;                                 // 合约处理(重载类)
};


#endif // STOCKSDKMANAGER_H

MdSpi.h:合约处理类(重载函数获取处理数据)

#ifndef MDSPI_H
#define MDSPI_H

#include <QObject>

#include "ThostFtdcMdApi.h"
#include "ThostFtdcUserApiStruct.h"


class MdSpi : public CThostFtdcMdSpi
{
public:
    MdSpi();
    ~MdSpi();

public:
    CThostFtdcMdApi *getMdapi() const;


public:
    void setMdapi(CThostFtdcMdApi *pMdapi);

public:
    virtual void OnFrontConnected();
    virtual void OnFrontDisconnected(int nReason);
    virtual void OnRspUserLogin(CThostFtdcRspUserLoginField* pRspUserLogin, CThostFtdcRspInfoField* pRspInfo, int nRequestID, bool bIsLast);
    virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField* pDepthMarketData);

private:
    CThostFtdcMdApi* _pMdapi;

private:
    CThostFtdcDepthMarketDataField _preTick;
};


#endif // MDSPI_H

工程模板v1.0.0 

入坑

入坑一:无法停止获取 问题

点击停止获取

原因

调用sdk的join函数进入库内部线程循环,此时调用join处阻塞。

处理

管理类子线程调用join,那么join阻塞该线程,调用注册和注销在管理类外直接调用。 

以上就是基于Qt开发获取CTP量化交易接口测试数据工具的详细内容,更多关于Qt获取CTP量化交易数据的资料请关注脚本之家其它相关文章!

相关文章

  • 从头学习C语言之if语句的使用

    从头学习C语言之if语句的使用

    这篇文章主要为大家详细介绍了C语言之if语句的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • C/C++实现蛇形矩阵的示例代码

    C/C++实现蛇形矩阵的示例代码

    本文主要介绍了C/C++实现蛇形矩阵的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 深入理解C预处理器

    深入理解C预处理器

    下面小编就为大家带来一篇深入理解C预处理器。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • C++笔记-设置cout输出数据的宽度和填充方式

    C++笔记-设置cout输出数据的宽度和填充方式

    这篇文章主要介绍了C++笔记-设置cout输出数据的宽度和填充方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++ Qt开发之关联容器类使用方法详解

    C++ Qt开发之关联容器类使用方法详解

    当我们谈论编程中的数据结构时,顺序容器是不可忽视的一个重要概念,Qt 中提供了丰富的容器类,用于方便地管理和操作数据,本章我们将主要学习关联容器,主要包括 QMap ,QSet和 QHash,感兴趣的朋友跟着小编一起来学习吧
    2023-12-12
  • C语言编程入门必背的示例代码整理大全

    C语言编程入门必背的示例代码整理大全

    这篇文章主要为大家整理并介绍了C语言编程必背的示例代码大全,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • C++的继承特性你了解吗

    C++的继承特性你了解吗

    这篇文章主要为大家详细介绍了C++的继承特性,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言实现俄罗斯方块小游戏

    C语言实现俄罗斯方块小游戏

    这篇文章主要为大家详细介绍了Linux下C语言实现俄罗斯方块小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 利用Matlab实现图像亮度分布统计图

    利用Matlab实现图像亮度分布统计图

    这篇文章主要介绍了如何利用Matlab实现图像亮度分布统计图的绘制,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,感兴趣的可以了解一下
    2022-05-05
  • c++中单例模式使用及说明(局部静态变量)

    c++中单例模式使用及说明(局部静态变量)

    这篇文章主要介绍了c++中单例模式使用及说明(局部静态变量),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-05-05

最新评论