基于QT封装的国内商品期货独立行情

CTP的行情订阅挺烦的,自己封装了一个,大家凑活用!

基于QT5.11.3封装,采用的CTP版本为穿透式
6.3.15_20190220_tradeapi64_se_windows

https://coding.net/u/xledoo/p/TrQuote/git/releases/1.0.0

使用步骤:

1. 由于是QT的项目,所以需要在 .pro 里进行配置,添加外部库链接

win32: LIBS += -L$$PWD/include/ -lTrQuote

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include

2. 新建一个用于接收行情的类,继承于 TrMdGlobal.h 里的 CTrMdReceiver

#include "TrMdGlobal.h"

class CMdTest : public CTrMdReceiver
{
public:
    CMdTest();
    virtual void OnReceiveMdData(TrMdResponseId rId, void* wParam, void* lParam) override;
};

3. 重新实现虚函数

void CMdTest::OnReceiveMdData(TrMdResponseId rId, void* wParam, void* lParam)
{
    qDebug() << __FUNCTION__;
    switch (rId) {
        case TrMdResponseId::TrOnRtnDepthMarketData:
        {
            CThostFtdcDepthMarketDataField *pDepthMarketData = reinterpret_cast<CThostFtdcDepthMarketDataField *>(wParam);
            qDebug() << pDepthMarketData->AskPrice1 << pDepthMarketData->BidPrice1 << pDepthMarketData->InstrumentID << pDepthMarketData->UpdateTime;
            break;
        }
    }
}

4. 在main.cpp里进行订阅

    CMdTest* t = new CMdTest;
    CTrQuote* qQuote = new CTrQuote;
    qQuote->TrAddReceiver(t);
    qQuote->TrMarketStart();

5. TrConfigs/FrontConfig.xml 配置文件解释

<?xml version="1.0" encoding="utf-8" ?>
<Config Operation="public">
    <Subscribe>rb1910</Subscribe>
    <Subscribe>SR909</Subscribe>
    <Broker Operation="public">
        <BrokerName>实盘穿透式API</BrokerName>
        <BrokerID>9070</BrokerID>
        <UserID>可以不填</UserID>
        <Password>可以不填</Password>
        <AppID>可以不填</AppID>
        <AuthCode>可以不填</AuthCode>   
        <MarketFront>tcp://124.74.237.193:41313</MarketFront>       
    </Broker>
</Config>

可以配置多组连接信息通过 Operation 属性来配置使用哪一组

穿透式监管的API对行情连接貌似并没有严格要求,所以只是订阅行情的话 AppID 和 AuthCode 不填也能正常获取行情