行情接口

CTP-API

行情接口


1.说明

行情API提供了两个接口,分别为CThostFtdcMdApi和CThostFtdcMdSpi。这两个接口对FTD协议进行了封装,方便客户端应用程序的开发。客户端应用程序可以通过CThostFtdcMdApi发出操作请求,通过继承CThostFtdcMdSpi并重载回调函数来处理后台服务的响应。

特别注意:CTP系统在早盘系统启动时,会重演夜盘流水,此时有可能重复推送整个夜盘的行情。如果用户此时连入CTP就有可能收到这些重复行情,因此建议用户在处理行情时过滤掉重复行情,以免影响程序逻辑。

2.代码示例

// mduserhandle.h
#include "ThostFtdcMdApi.h"
#include <stdio.h>
#include <Windows.h>
class CMduserHandler : public CThostFtdcMdSpi
{
private:
  CThostFtdcMdApi *m_mdApi;
public:
  void connect()
  {
//创建并初始化API
      m_mdApi = CThostFtdcMdApi::CreateFtdcMdApi("", true, true);
      m_mdApi->RegisterSpi(this);
      m_mdApi->RegisterFront("tcp://218.28.130.102:41413");
      m_mdApi->Init();
  }
//登陆
  void login()
  {
      CThostFtdcReqUserLoginField t = {0};
      while (m_mdApi->ReqUserLogin(&t, 1)!=0) Sleep(1000);
  }
// 订阅行情
  void subscribe()
  {
      char **ppInstrument=new char * [50];
      ppInstrument[0] = "IF1809";
      while (m_mdApi->SubscribeMarketData(ppInstrument, 1)!=0) Sleep(1000);
  }
  //接收行情
  void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
  {
          printf("OnRtnDepthMarketData\n");
  }
};
// main.cpp
#include "mduserhandle.h"
int main(int argc, char* argv[])
{
  CMduserHandler *mduser = new CMduserHandler;
  mduser->connect();
  mduser->login();
  mduser->subscribe();
  Sleep(INFINITE);
}

< 前页 回目录 后页 >