龙听期货论坛's Archiver

龙听 发表于 2019-5-23 15:01

CTP穿透式监管怎么实现代码, 穿透测试API

[p=30, 2, left]做量化交易的朋友都支持,2019年6月要开始实行穿透式监管了,
老的代码可能不再能够接入,那么如何将老的CTP程序实现升级到穿透式监管呢?本文就讲一下修改的方法。
(1)先替换为最新的CTP api
CTP API下载地址
[url=http://www.pythonpai.com/topic/4747/%E9%93%BE%E6%8E%A5%E5%9C%B0%E5%9D%80]http://www.simnow.com.cn/static/softwareDownload.action[/url][/p][p=30, 2, left]Quicklib 下载地址
[url=http://www.quicklib.cn/]http://www.quicklib.cn/[/url]
期货行情数据下载地址
[url=http://www.mdshare.cn/]http://www.mdshare.cn[/url]
[url=http://www.pythonpai.com/topic/4206/]http://www.pythonpai.com/topic/4206/[/url]
免费商品期货股指期货跟单系统和资管系统
[url=http://www.kucps.com/]http://www.kucps.com/[/url]
参考代码打包下载
[url=http://mdshare.cn/source.zip]http://mdshare.cn/source.zip[/url]

期货低佣金开户步骤(交易所标准+1分,交反40%~90%)
[url=http://www.qhlt.cn/thread-25049-1-1.html]http://www.qhlt.cn/thread-25049-1-1.html[/url][/p]
[p=30, 2, left]主要涉及以下2个方法[/p]///客户端认证响应virtual void OnRspAuthenticate(CThostFtdcRspAuthenticateField *pRspAuthenticateField, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};///客户端认证请求virtual int ReqAuthenticate(CThostFtdcReqAuthenticateField *pReqAuthenticateField, int nRequestID) = 0;[p=30, 2, left]这2个方法分别是:客户端认证请求,客户端认证响应[/p][p=30, 2, left](2)代码方面的修改:[/p][p=30, 2, left]之前大家做CTP都需要调用ReqUserLogin();这个登录请求,现在如果要接入穿透式监管的流程改变了,请将ReqUserLogin();替换为ReqAuthenticate(CThostFtdcReqAuthenticateField *pReqAuthenticateField, int nRequestID) 认证请求,然后在认证回调里添加ReqUserLogin();[/p][p=30, 2, left]简单的说代码修改流程即为:
先认证再登录
1.把以前登录请求替换为认证请求
2.就是把登录请求放到认证回调里[/p][p=30, 2, left]向期货公司申请获得信息
在认证请求的结构体定义如下:、[/p][p=30, 2, left][code]
///客户端认证响应

struct CThostFtdcRspAuthenticateField
{
        ///经纪公司代码
        TThostFtdcBrokerIDType        BrokerID;
        ///用户代码
        TThostFtdcUserIDType        UserID;
        ///用户端产品信息
        TThostFtdcProductInfoType        UserProductInfo;
        ///App代码
        TThostFtdcAppIDType        AppID;
        ///App类型
        TThostFtdcAppTypeType        AppType;
};
[/code]
[/p][p=30, 2, left][font=Source Sans Pro, Calibri, Candara, Arial, sans-serif][color=#333333][size=15px](3)认证的函数定义[/size][/color][/font][/p][p=30, 2, left][code]
ReqAuthenticate(UserProductInfo, AuthCode);

void CTraderSpi::ReqAuthenticate(const char *UserProductInfo,const char *AuthCode)
{                        
            
         if(pUserApi[accountid]   ==   NULL ){return;}
        //认证码
        CThostFtdcReqAuthenticateField  pReqAuthenticateField;
        memset(&pReqAuthenticateField, 0, sizeof(CThostFtdcReqAuthenticateField));
        strcpy(pReqAuthenticateField.BrokerID, BROKER_ID);
        strcpy(pReqAuthenticateField.UserID, INVESTOR_ID);
        strcpy(pReqAuthenticateField.UserProductInfo, UserProductInfo); //产品标识
        strcpy(pReqAuthenticateField.AuthCode, AuthCode);  //认证码
        int iResult = pUserApi[accountid]->ReqAuthenticate(&pReqAuthenticateField, ++iRequestID);
         cerr << "--->>> 发送认证请求: " << ((iResult == 0) ? "成功" : "失败") << endl;
}
[/code]
[/p]

龙听 发表于 2020-2-29 07:27

[color=#ff0000]欢迎加群交流:[/color]

[img]http://p.qhlt.cn/filestores/2020/02/26/5545d3109ef6c096c09489c861f26c13.png[/img] 加管理员微信备注:C++微信群  [img=180,238]http://p.qhlt.cn/filestores/2017/12/11/b49a788600bc82cbc1cdf4c1c15f5cf0.jpg[/img]

页: [1]