一、准备工作
- 确保你有相应的库文件以及头文件, 没有的可以在这个SimNow仿真交易【官方网站】下载
- 确保有接口手册, 这能提高开发效率, ::::::上海期货信息技术有限公司::::::提供了相应chm的下载
二、代码实现
1. 准备配置文件Config.h
在其中用宏来代替相应位置的变量, 这样做的好处是方便我们后续修改账户密码, 以及修改想要关注的行情编号
下面代码的双引号中写上你自己的对应字符串
#ifndef _CONFIG_H
#define _CONFIG_H
// 定义行情服务器地址
#define URL ""
// 定义期货公司编号
#define MyBrokerID ""
// 定义用户账号
#define MyUserID ""
// 定义用户密码
#define MyPassword ""
// 定义用户产品信息
#define MyUserProductInfo ""
// 定义订阅的行情数据
#define SubscribeMarketDatas { "c2405", "m2405" }
// 用于控制是否在终端打印详细数据, 注销PRINT_DATA则不打印
// #define PRINT_DATA
#endif
2. 准备MdSpi.h, 在其中定义MdSpi来继承CThostFtdcMdSpi, 以便之后重新其中对应的Spi函数, 来实现我们想要的功能, 函数内对应结构体请自行在chm中查看
class MdSpi : public CThostFtdcMdSpi
{
public:
// 构造函数, 初始化行情线程
MdSpi(CThostFtdcMdApi *pMdApi, string path = "./Datas");
// 析构函数, 释放行情线程
~MdSpi();
// 当客户端与交易后台建立起通信连接时(还未登录前),该方法被调用。
void OnFrontConnected();
// 登录请求响应
void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
// 订阅行情应答
void OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);
// 深度行情通知
void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData);
private:
string __savePath; // 行情数据保存路径
CThostFtdcMdApi *__pMdUserApi = nullptr; // CTP行情API指针
string __tradingDay;

本文详细介绍了如何使用C++编程语言配合CThostFtdc库实现期货交易系统的MDAPI接口,包括配置文件编写、MdSpi类的实现、登录与行情订阅过程,以及数据处理和文件保存方法。
最低0.47元/天 解锁文章
3780

被折叠的 条评论
为什么被折叠?



