CTP量化投资API工作流程概述

MdApi工作流程

MdApi是CTP的行情接口,主要实现订阅、接收行情的功能。MdApi的工作流程可以概况为以下八步:

第一步,用CreateFtdcMdApi创建CThostFtdcMdApi实例,例如_api。
第二步,创建CThostFtdcMdSpi实例,例如_spi,用RegisterSpi将_spi注册到_api中。
第三步,用RegisterFront将行情前置地址注册到_api中。
第四步,用Init()初始化_api,初始化的过程就是与服务建立连接的过程。
第五步,与服务器成功建立连接时,回调函数OnFrontConnect会收到通知,此时用ReqUserLogin登录账户。
第六步,账户登录成功时,回调函数OnRspUserLogin会收到通知,此时用SubscribeMarketData订阅行情,用SubscribeForQuoteRsp订阅询价。此后,MdApi就可以正常工作了。
第七步,MdApi正常工作时,交易者需要在回调函数OnRtnDepthMarketData/OnRtnForQuoteRsp会收到最新行情通知时进行数据处理或者分发。
第八步,MdApi的本质是个子进程,所以需要调用Join方法,让主进程等待,才能正常运行。如果遇到连接成功后立即触发OnFrontDisconnected,错误代码8193,就可能是没有调用Join方法。
在这里插入图片描述
一般情况下,量化交易框架都会对第一至六步,以及第八步的操作进行封装,交易者只需要传递相关参数即可。需要交易者真正关心的是第七步,涉及到数据处理和数据分发。

TraderApi工作流程

TraderApi是CTP的交易口,主要实现(买卖开平撤)报单及查询的功能。TraderApi的工作流程可以概况为以下十步:

第一步,用CreateFtdcTraderApi创建CThostFtdcTraderApi实例,例如_api。
第二步,创建CThostFtdcTraderSpi实例,例如_spi,用RegisterSpi将_spi注册到_api中。
第三步,用SubscribePrivateTopic订阅私有流,用SubscribePublicTopic订阅公有流。
第四步,用RegisterFront将交易前置地址注册到_api中。
第五步,用Init()初始化_api,初始化的过程就是与服务建立连接的过程。
第六步,与服务器成功建立连接时,回调函数OnFrontConnect会收到通知,此时用ReqUserAuthMethod认证客户端。
第七步,客户端认证成功时,回调函数OnRspUserAuthMethod会收到通知,此时用ReqUserLogin登录账户。
第八步,账户登录成功,回调函数OnRspUserLogin会收到通知,此时标记状态。此后,TraderApi就可以正常工作了。
第九步,TraderApi正常工作时,交易者根据需要用Req开头的请求函数进行(买卖开平撤)报单及查询,对应的以On开头的回调函数会收到结果通知。
第十步,TraderApi的本质也是个子进程,所以也需要调用Join方法,让主进程等待,才能正常运行。
在这里插入图片描述
需要注意的是,TraderApi在初始化之前需要订阅公有流和私有流;与服务建立连接之后需要先进行客户端认证,只有认证通过之后才可以登录账户;TraderApi的查询操作是有流量控制的,每秒只能查询1次,1秒内的连续查询不会收到结果通知。

Api函数命名规则

除了初始化Api环境时用到的函数之外,其他功能函数可以根据前缀分为以下几类:

  • Req,执行请求。例如,确认结算单ReqSettlementInfoConfirm,录入报单ReqOrderInsert,录入撤单ReqOrderAction等。
  • OnRsp,请求结果的通知。除(买卖开平撤)报单之外的请求,在执行成功之后获得通知,例如确认结算单通知OnRspSettlementInfoConfirm表示已成功确认结算单。(买卖开平撤)报单请求,在该请求通过交易前置时获得通知,此通知仅代表请求被交易前置接受,后续还需要进入交易队列、被执行等过程。例如,录入报单通知OnRspOrderInsert表示请求被前置接受情况。
  • OnRtn,(买卖开平撤)报单请求的状态变化通知,或者公有流通知。以报单为例,报单状态每次发生变化,都会在OnRtnOrder中收到通知,当报单成交时,还会在OnRtnTrade中收到通知。OnRtnInstrumentStatus就是公有流通知的例子。
  • OnErrRtn,执行错误结果的通知。例如上期所品种今/昨仓不足。未到交易所的错误结果在OnRsp中获得通知,只有到了交易所被执行时的错误,才在OnErrRtn中通知。
  • ReqQry,查询请求。例如,查询报单ReqQryOrder,查询成交ReqQryTrade。
  • OnRspQry,查询结果的通知。查询结果通知比较简单,一般就是一个查询请求对应一个查询结果。

如果看到这里您仍感到一头雾水,没关系,本文的主要目的是让您对一些概念有个印象。后期我们还会结合AlgoPlus制作相关教程,让大家理解这些过程。另外,在学习、使用CTP的过程中,您如果遇到问题,可以到www.ctp.plus量化研究社区进行提问。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 上期ctp_api_c源代码.rar是一个包含CTP (中国金融期货交易系统) API的源代码压缩文件。CTP API是为了与中国金融期货交易系统进行交互而开发的一套接口。它允许开发人员通过编程语言来实现与交易系统的通信和交易操作。 该源代码包含了使用C语言编写的CTP API的实现代码。C语言是一种广泛使用的编程语言,非常适合开发高性能的软件。通过研究和理解这份源代码,开发人员可以了解CTP API的具体实现细节,并在此基础上进行二次开发。 该源代码压缩文件通常包含以下内容: 1. CTP API的源代码文件:这些文件包含了CTP API的各个功能模块的具体实现代码,如行情查询、委托下单、成交查询等。开发人员可以通过阅读这些代码来了解CTP API的调用方式和相关参数。 2. 相关的头文件和函数库:这些文件包含了CTP API的函数声明和必要的宏定义等信息。开发人员可以在自己的项目中包含这些头文件并链接相关的函数库来使用CTP API的功能。 3. 示例代码:源代码压缩文件中可能还包含了一些示例代码,用于演示如何使用CTP API进行实际的交易操作。开发人员可以参考这些示例代码来快速上手并进行二次开发。 总而言之,上期ctp_api_c源代码.rar提供了一个基于C语言的CTP API实现的源代码,通过研究和使用该代码,开发人员可以在自己的软件项目中实现与中国金融期货交易系统的交互和交易操作。 ### 回答2: 上期ctp_api_c 源代码.rar 是一个压缩文件,里面包含了ctp_api_c的源代码。ctp_api_c是一个针对中国金融期货交易的API接口库,主要用于开发相关的交易软件。 在这个压缩文件中,我们可以找到所有关于ctp_api_c的源代码文件。这些源代码文件是以.c和.h为后缀的,分别表示源代码和头文件。 在解压缩后的文件夹中,我们可以看到一些主要的文件,如ctp_md.c,ctp_td.c等。这些文件对应着行情数据接口和交易接口的实现。除此之外,还有一些辅助文件,如ctp_common.c,ctp_utils.c等,用于提供一些共用的函数和工具。 通过阅读这些源代码文件,可以了解ctp_api_c的整体架构和各个功能模块的实现细节。其中,会包含一些关于行情订阅、交易下单、账户查询等相关的代码。 值得一提的是,ctp_api_c是基于C语言编写的,因此在阅读这些源代码时,需要对C语言有一定的了解。通过分析和理解这些代码,我们可以更好地理解ctp_api_c的使用方法和原理,并在此基础上进行二次开发,以满足特定的交易需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值