注册OnRtnDepthMarketData回调函数,并将其与您自己的处理函数关联
时间: 2024-03-04 10:48:31 浏览: 99
好的,具体实现可能因编程语言和API库的不同而异,以下是一个C++和CTP API的例子,供参考:
1. 首先,在CTP API的头文件ThostFtdcMdApi.h中找到OnRtnDepthMarketData函数的声明如下:
```c++
virtual void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData) {};
```
2. 在你的C++程序中,创建一个自定义的函数(例如MyOnRtnDepthMarketData),并在其中编写自己的行情处理逻辑。
3. 在你的程序中,创建一个继承自CThostFtdcMdSpi的类(例如MyMdSpi),并将MyOnRtnDepthMarketData函数作为其中的一个成员函数。
4. 在MyMdSpi类的构造函数中,使用MdApi对象的RegisterSpi方法将MyMdSpi对象注册到MdApi中:
```c++
MyMdSpi::MyMdSpi()
{
// 创建MdApi对象并连接服务器
pMdApi = CThostFtdcMdApi::CreateFtdcMdApi();
pMdApi->RegisterSpi(this);
// ...
}
```
5. 在MyMdSpi类中实现OnRtnDepthMarketData函数,并将其与MyOnRtnDepthMarketData函数关联。
```c++
void MyMdSpi::OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData)
{
// 调用自定义的处理函数进行行情数据处理
MyOnRtnDepthMarketData(pDepthMarketData);
}
```
6. 在程序中创建MyMdSpi对象,并使用MdApi对象的RegisterFront和Init方法连接到行情服务器并启动事件循环。
```c++
int main()
{
MyMdSpi spi;
pMdApi->RegisterFront("tcp://md.ctp.com:8000");
pMdApi->Init();
pMdApi->Join();
return 0;
}
```
在实际开发过程中,您需要根据自己的实际情况进行适当的修改和调整。
阅读全文