本文主要包含ctp-api等软件教程,happy_teemo的博客希望在学习及工作中可以帮助到您
CMdSpi* pUseSpi = new CMdSpi;
CThostFtdcMdApi* pUserApi;
const char* sPathOfLocalFiles = "..//StreamFiles/streamUserMD.con";
pUserApi = CThostFtdcMdApi::CreateFtdcMdApi(sPathOfLocalFiles,true); //行情类api
//流文件目录,true为UDP模式,false为TCP模式,第二和第三个参数均为true时,采用组播模式(内网用)
pUseSpi->pUserApi->RegisterSpi(pUseSpi); //注册spi
pUseSpi->pUserApi->RegisterFront(FRONT_ADDR); //前置地址
pUseSpi->pUserApi->Init(); //初始化行情接口的工作线程
pUseSpi->pUserApi->Join();
//前置地址:tcp://101.95.8.106:41213
然后会依次调用:
1. OnFrontConnected(),前置登陆
2. ReqUserLogin(),用户登陆
3. OnRspUserLogin(),用户登陆返回
4. OnRspSubMarketData(),行情请求
5. OnRtnDepthMarketData(),返回行情数据
登陆的函数:
CThostFtdcReqUserLoginField req; //用户登录请求结构体
memset(&req,0,sizeof(req)); //清空
strcpy(req.BrokerID,BROKER_ID);
strcpy(req.UserID,INVESTOR_ID);
strcpy(req.Password,PASSWORD);
iRequestID = 1;
int iResult = pUserApi->ReqUserLogin(&req,++iRequestID);
//BROKER_ID,期货公司ID,比如7030
//INVESTOR_ID,个人ID,比如1151700582
//PASSWORD,个人密码,比如348785
订阅的函数:
char* pInstrumentID[] = {"合约号"};
iInstrumentID = 1;
pUserApi->SubscribeMarketData(pInstrumentID, iInstrumentID);
最后在OnRtnDepthMarketData()函数里面处理传过来的深度行情结构体就好了。

