综合交易平台API技术开发指南.docx
- 文档编号:18420171
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:42
- 大小:56.19KB
综合交易平台API技术开发指南.docx
《综合交易平台API技术开发指南.docx》由会员分享,可在线阅读,更多相关《综合交易平台API技术开发指南.docx(42页珍藏版)》请在冰点文库上搜索。
综合交易平台API技术开发指南
【综合交易平台API技术开发指南】
综合交易平台API技术开发指南
第一章CTP产品特性......................................................................................................................2
第二章CTP-API技术基础...............................................................................................................4
第三章CTP-API证券交易...............................................................................................................9
模拟交易系统...........................................................................................................................9
证券交易实务...........................................................................................................................9
行情接口函数.........................................................................................................................10
交易接口函数.........................................................................................................................10
第四章CTP-API期货交易.............................................................................................................10
模拟交易系统.........................................................................................................................10
期货交易实务.........................................................................................................................11
行情接口函数.........................................................................................................................11
交易接口函数.........................................................................................................................11
©上海期货信息技术有限公司,2012
第1页共18页
【综合交易平台API技术开发指南】
第一章CTP产品特性
如何获取综合交易平台(ComprehensiveTransactionPlatform以下简称CTP)证券(期
货)交易及行情API发布包、文档以及开发实例?
【答:
2群(102497247)群共享中发布,请及时获取最新版本。
CTP_API开发技术群均遵守实
名制规则,
求的群成员将不定期予以清除。
CTP提供哪些证券(期货)投资者交易客户端软件?
【答:
CTP向全市场免费开放投资者交易及行情API,并不提供任何投资者使用的交易
客户端产品。
目前市场上使用的客户端产品都由第三方厂商提供(基于免费开放的API
接入CTP)
手工交易客户端(如快期:
http:
//winnerfutures../)
请问国证券(期货)公司有哪些使用CTP系统?
【答:
一套或多套CTP次用系统)
家。
CTP期货公司主用系统用户:
中国国际、华泰长城、海通期货、申银万国、上海中
期、广发期货、恒泰期货、美尔雅期货、中证期货、华元期货、瑞龙期货、天鸿期货。
CTP期货公司次用系统用户:
华西期货、华鑫期货、兴业期货、渤海期货、金源期
货、宏源期货、新湖期货、国泰君安、东证期货、南华期货、浙商期货、银河期货、经
易期货、
国金期货、方正期货、鲁证期货(新增)
纪期货(新增)
CTP证券公司次用系统用户:
华宝证券。
©上海期货信息技术有限公司,2012
第2页共18页
【综合交易平台API技术开发指南】
CTP中的BrokerID是什么意思,在使用CTP-API时如何填写?
【答:
CTP最初设计时考虑了一套CTP系统供多家经纪公司使用的情形,CTP则使用
BrokerID从业务层面完全隔离不同经纪公司的交易、风控及结算用户的接入。
BrokerID
的具体取值请咨询开户的经纪公司。
CTP中UserID和InversterID的区别是什么?
【答:
代码;投资者自己下单时,两者同为投资者代码。
CTP-API中的OrderRef和OrderActionRef是什么意思,在客户端开发时如何填写?
【答:
OrderRef是CTP后台提供给客户端标识一笔报单的字段,客户端可以通过关键
字组(FrontID、SessionID、OrderRef)唯一确定一笔报单,客户端在报单发出时未填
写OrderRef字段,CTP后台会自动为该报单的OrderRef字段赋值并返回给客户端。
OrderActionRef与OrderRef功能类似,它是提供给客户端来标识一笔撤单。
OrderRef的
数据类型为字符数组,必须是阿拉伯数字字符。
OrderRef(OrderActionRef)的取值必须
保证在同一会话后发送的报(撤)单的OrderRef(OrderActionRef)值大于之前的最
大值,在开发多线程的客户端时需要特别注意。
CTP是否提供Level2行情?
【答:
CTP期货交易系统仅提供各交易所发布的普通一阶行情。
部分证券公司部署的
CTP证券交易系统提供level2行情,请联系证券公司获取CTP-level2-API发布包及level2
行情服务器配置参数。
CTP是否提供历史行情,实际交易时需要取历史数据做相应计算,比如atr(30)等,如
何处理?
是否只能客户端通过别的接口自己补数据?
【答:
CTP也不提供行情回补机制,因为行情的实时性对CTP的系统延时要求非常高,行情数
据的回补逻辑增加的系统延时以及网络资源的消耗限制了其在高速系统部实现的空
©上海期货信息技术有限公司,2012
第3页共18页
【综合交易平台API技术开发指南】
间。
方式以提高到CTP连接的保障级别。
第二章CTP-API技术基础
CTP-API库包含哪些文件,分别包含什么容?
【答:
错误定义文件error.dtd、
交易接口类定义文件(ThostFtdcTraderApi.h)
件(ThostFtdcUserApiStruct.h)客户端接口使用的业务数据类型定义文件
(ThostFtdcUserApiDataType.h)行情接口库文件thostmduserapi.lib,
交易接口库文件(thosttraderapi.lib,thosttraderapi.dll)
包含API和SPI类定义,
户端回传响应及回报。
CTP证券接口库文件基本类似,文件名中使用“SSE”标识为证券接口。
10.CTP-API与CTP后台才何种协议通讯,如何通讯?
【答:
CTP-API使用建立在TCP协议之上FTD协议与CTP后台进行通讯,FTD协议中
的所有通讯都基于某个通讯模式。
通讯模式实际上就是通讯双方协同工作的方式。
CTP-API涉及的通讯模式共有三种:
○对话通讯模式,是指由客户端主动发起的通讯请
求,该请求被CTP后台接收和处理,并给予响应,如报单、撤单及查询等,这种通讯模
式与普通的客户/服务器模式相同。
○私有通讯模式,是指CTP后台主动向某个特定的
客户端发出的信息,如报单回报、成交回报等。
○广播通讯模式,是指CTP后台主动向
有客户端都发出相同的信息,如合约交易状态通知等。
通讯模式和网络的连接不一定存在简单的一对一的关系。
也就是说,一个网
络连接中可能传送多种不同通讯模式的报文,一种通讯模式的报文也可以在多个
不同的连接中传送。
CTP-API与CTP后台通讯,不同的通讯模式对应不同的通讯数据流,对话通讯模式
对应对话数据流(DialogRsp)和查询数据流(QueryRsp)CTP后台不维护对话数据流
©上海期货信息技术有限公司,2012
第4页共18页
【综合交易平台API技术开发指南】
(查询数据流)的状态,通讯故障时,对话数据流(查询数据流)会重置,通讯途中的
数据可能会丢失。
私有通讯模式对应私有数据流(Private)
后台维护每个登录用户的私有流,在一个交易日,CTP-API与CTP后台断线后恢复连
接时,
或断线期间(resume)的私有数据流。
广播通讯模式对应公共数据流(Public)
可靠的数据流。
11.CTP-API的实例会在客户端生成哪些流文件?
如何指定流文件存放路径?
【答:
实例(DialogRsp.con,Private.con,Public.con,QueryRsp.con,TradingDay.con)
文件的存放路径都是通过接口实例创建函数(CreateFtdcTraderApi)参
数指定,如CreateFtdcTraderApi(".\flow\")将会在当前目录的flow文件夹存放流文件。
客户端无法决定是否生成以上流文件,因此,在开发多CTP-API实例的客户端时需要注
意操作系统的文件句柄限制。
因此,多账号共用接口实例(或多实例共用流文件)将会造成数据紊乱或缺失。
12.基于CTP-API的客户端交易软件在每个交易日开始之前需要执行哪些必要的步骤?
【答:
1创建API实例(CreateFtdcTraderApi)并为其注册对应的回调接口类的实例
(RegisterSpi)→○订阅私有流(SubscribePrivateTopic)→○订阅公有流
(SubscribePublicTopic)→○注册名字服务器网络地址(RegisterNameServer)或注册前
置机网络地址(RegisterFront)→○初始化API与CTP前置服务器连接(Init)
功后回调OnFrontConnected→○发起客户端认证请求(ReqAuthenticate)
结果由OnRspAuthenticate返回;在CTP后台开启强制客户端认证(或客户端在本次会
话主动发起认证)后,只有通过客户端认证才能接入CTP后台→○发起用户登录请求
(ReqUserLogin)
户端在当前交易日必须成功执行一次
后才能开始交易。
©上海期货信息技术有限公司,2012
第5页共18页
【综合交易平台API技术开发指南】
13.CTP的客户端怎样实现对代理服务器的支持?
【答:
CTP的API提供了对代理服务器的支持,包括socks4、socks4a及socks5,客户
端开发时只需通过传递给API不同的连接字符串就可实现,例如:
RegisterFront("socks5:
//IP地址或域名:
端口号/user:
pass@127.0.0.1:
10001");
14.什么是动态密码(OneTimePassword)
【答:
易使用的一种更强的身份验证工具,
为CTP供应动态令牌的厂商有坚石诚信和飞天诚信。
证券(期货)公司购买动态令牌后
将随附的种子文件导入CTP后台,
令牌的投资者在登录CTP时需要将动态令牌当时显示的字符填写到OneTimePassword
字段,通过用户名/密码以及动态密码校验后方可登录成功。
15.什么是客户端认证,怎样获取认证码(AuthCode)?
【答:
端产品接入CTP后台进行交易。
入指定的证券(期货)公司CTP交易系统之前,必须向该公司提交用户端产品信息
(UserProductInfo)并获得认证码(AuthCode)之后在发起客户端认证请求时
(ReqAuthenticate)填写正确的用户端产品信息及对应的认证码即可完成客户端认证。
16.CTP的名字服务器是做什么用的,如何使用?
【答:
名字服务器(RegisterNameServer)自动选择CTP后台分配的前置机地址接入CTP交易
系统,不再需要客户端直接注册CTP前置地址(RegisterFront)
17.CTP是否提供加密手段以保护通过互联网传送的交易数据的安全?
【答:
方式接入CTP交易系统。
客户端选择接入ssl前置时使用如下方式注册ssl前置地址:
©上海期货信息技术有限公司,2012
第6页共18页
【综合交易平台API技术开发指南】
RegisterFront("ssl:
//ssl前置IP地址或域名:
端口号");
18.如何接入CTP提供的UDP行情?
【答:
bIsUsingUdp=false)中,参数bIsUsingUdp:
为行情模式,该参数缺省或置为false时使用
TCP行情,否则为UDP行情。
无论使用TCP或是UDP行情,都必须注册相对应的TCP
或UDP行情服务器地址。
一般来说,CTP的普通行情前置都为TCP行情服务器,使用
UDP行情服务器需要向证券(期货)公司申请,且仅限专线或网接入的投资者使用。
在注册行情前置服务器时,无论是tcp还是udp,都必须使用RegisterFront("tcp:
//
行情前置服务器IP地址或域名:
端口号")的格式,因为udp传输存在不可靠性,所以在
登录、订阅及接收第一次行情时仍然使用tcp方式;并且无需为udp方式提供配置节点
参数,udp仍然使用相同的地址和端口号。
19.CTP对每秒发送查询数量的限制是多少?
【答:
CTP仅对查询进行流量限制,对交易指令没有限制。
如果有在途的查询,不允
许发新的查询。
1秒钟最多允许发送1个查询。
返回值“-2”表示“未处理请求超过许
可数”“-3”表示“每秒发送请求数超过许可数”
20.程序使用TradeApi和MdApi,并且把这2个dll放在同一个目录下。
程序再次启动后,
如果某个api采用Resume模式订阅公有流/私有流,就会去参考相关的本地流文件。
可
能会导致数据异常?
【答:
对方写下的流文件。
程序再次启动时,TradeApi可能去参考MdApi写下的流文件,所以
导致数据流不连续。
解决方法:
如果一定要把2个dll放在相同的目录下,可以在创建
api时指定流文件的路径。
使得不同的dll写入不同流文件。
staticCThostFtdcUserApi*CreateFtdcUserApi(constchar*pszFlowPath="",constbool
bIsUsingUdp=false);
21.请问api是否多线程安全的(linux以及windows平台)?
【答:
api,spi是不同的线程、可以同时被多个线程调用、
©上海期货信息技术有限公司,2012
第7页共18页
【综合交易平台API技术开发指南】
这些特性和平台无关。
22.测试时发现CThostFtdcMdSpi有个比较严重的问题,就是使用Release()退出清理对象时
会出现死机,并且频率很高,怎样解决?
【答:
template
voidCUserApiEnv
:
UnInitialUserApi()
{
//释放UserApi
if(m_pUserApi)
{
m_pUserApi->RegisterSpi(NULL);
m_pUserApi->Release();
m_pUserApi=NULL;
}
//释放UserSpi实例
if(m_pUserSpiImpl)
{
deletem_pUserSpiImpl;
m_pUserSpiImpl=NULL;
}
}
23.CTP的LIB,是几字节对齐的,是一字节,还是八字节,还是其它的?
【答:
24.使用查询函数时怎样设置查询条件?
【答:
CTP提供了查询函数及查询相应函数,客户端可以使用这些函数向后台查询投
资者以及基础数据信息,
©上海期货信息技术有限公司,2012
第8页共18页
【综合交易平台API技术开发指南】
有记录。
如查询合约信息:
CThostFtdcQryInstrumentFieldreq;
memset(&req,0,sizeof(req));
intiResult=pApi->ReqQryInstrument(&req,++iRequestID);
这样,在对应的查询响应OnRspQryInstrument中将会获得所有有效的合约。
第三章CTP-API证券交易
模拟交易系统
25.CTP提供证券模拟交易系统供投资者开发、测试试用:
交易前置:
行情前置:
ctp24-front1.financial-trading-platform.:
41205
ctp24-front2.financial-trading-platform.:
41205
ctp24-front3.financial-trading-platform.:
41213
ctp24-front4.financial-trading-platform.:
41213
经纪公司代码:
2011
26.怎样申请上期技术证券模拟交易系统测试账号?
【答:
(共10个公用帐号,请勿修改密码)
证券交易业务
27.CTP证券交易系统支持哪些业务类型?
【答:
CTP证券交易系统支持普通股票买卖、ETF买卖及申购赎回、国债回购卖出、融
资融券等业务类型。
28.CTP证券交易系统支持哪些交易指令?
【答:
CTP证券交易系统支持市价、限价报单及撤单等交易指令。
报单(买、卖、申
购及赎回)
©上海期货信息技术有限公司,2012
第9页共18页
【综合交易平台API技术开发指南】
有效期类型:
THOST_FTDC_TC_IOC,价格:
不需要)限价单(报单价格条件:
THOST_FTDC_OPT_LimitPrice,有效期类型:
THOST_FTDC_TC_GFD,价格:
指定价格)
以下为报单必须输入的字段列表:
BrokerID、InvestorID、InstrumentID、ExchangeID、
OrderPriceType、Direction、VolumeTotalOriginal、TimeCondition、VolumeCondition、
ContingentCondition、ForceCloseReason。
ReqOrderAction函数完成撤单操作,
FrontID、SessionID、InstrumentID、ActionFlag=THOST_FTDC_AF_Delete)或(BrokerID、
InvestorID、exchangeID、traderID、OrderLocalID、ActionFlag=THOST_FTDC_AF_Delete)
定位报单完成撤销。
29.CTP证券交易系统中,如何进行ETF的申购赎回?
【答:
Direction字段填写THOST_FTDC_D_ETFPur(申购)或THOST_FTDC_D_ETFRed(赎回)
字段填写OrderPriceType
THOST_FTDC_OPT_PurchasesETF(申购)或
THOST_FTDC_OPT_RedeemETF(赎回)VolumeTotalOriginal字段需要重点注意,在进行
ETF及普通股买卖时该字段单位为份额或股数,在进行E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 综合 交易平台 API 技术开发 指南