当然,对付寻求更深入系统调用和获取原始字段信息的高等用户,优宽量化平台也供应了强大的工具。通过exchange.IO函数,用户能够完备兼容官方的API名称,进行深层次的系统调用,访问CTP系统的更多原生功能。这一功能知足了高等用户对繁芜交易策略的需求,供应了灵巧性和强大的系统访问能力。
CTP系统先容CTP(Comprehensive Transaction Platform)是中国金融期货交易所推出的一套综合交易平台,紧张做事于期货公司,同时也适用于基金公司、投资公司等进行期货交易。CTP平台以其高并发处理能力、快速相应和高可靠性而著称,特殊适用于程序化交易和短线交易者。CTP供应了丰富的行情和交易接口,许可用户通过编程办法吸收实时市场数据和实行交易操作。行情接口(MdApi)紧张卖力市场数据的吸收和处理,而交易接口(TraderApi)则处理订单的提交、撤单以及其他交易干系操作。
CTP行情接口支持订阅市场数据,如合约的实时价格、成交量等信息。用户可以通过API进行市场数据的订阅和取消订阅操作,同时接口也会推送干系的市场行情数据。CTP交易接口则更为繁芜,供应了登录、报单、撤单、资金转账、信息查询等功能。开拓者须要通过继续并实现CThostFtdcTraderSpi接口来创建自己的交易处理类,并通过CThostFtdcTraderApi类来与CTP做事器进行通信。此外,交易接口还涉及到身份认证、结算单确认等步骤。

CTP系统的设计看重了可用性、并发处理能力、安全性、可扩展性以及业务规则的隔离。它采取了基于TCP协议的FTD协议进行通信,并供应了对话通讯模式、私有通讯模式和广播通讯模式三种通讯办法。
CTP协议
在这个简化的流程图中:
CTP系统 是核心节点,它包括行情接口和交易接口。行情接口 卖力吸收和处理市场数据。交易接口 供应了身份认证、登录、报单、撤单、资金转账和信息查询等功能。报单流程 从交易接口开始,经由交易前置、排队做事,终极到达交易引擎,处理后更新业务数据库。以上展示了CTP系统的紧张功能和交易实行的基本流程。当引入量化交易中,我们就须要调取原始CTP的API进行行情数据的获取,交易信息的打算,以及后续交易操作的实行。但是原始API函数返回的结果较为繁芜,对付新手用户来说可能难以理解,并且处理起来较为繁琐。
优宽量化API函数整合为了简化这一过程,提高用户体验,优宽量化API供应了更加方便和直不雅观的接口。通过优宽量化API,用户可以更加随意马虎地获取交易信息,进行行情数据剖析,以及实行交易操作。
我们通过优宽量化平台封装的API来实现量化交易。下面展示几个常用函数的比拟及运用实例:
优宽量化封装CTP协议
可以看到,优宽量化对付ReqQryOrder和ReqQryTrade两个函数进行了整合,成为exchange.GetHistoryOrders,不仅可以获取当日订单价格信息(挂单价格),也可以获取实际成交价格,更加方便量化交易利用。
优宽量化API函数关键信息处理为了方便比拟,这里我们首先利用 exchange.IO("api", "ReqQryTrade")来获取当日成交信息。可以看到返回结果包含了很多的字段,而对付交易来说,我们仅须要成交价格,成交方向等几个关键字段。
function main() { let items = exchange.IO("api", "ReqQryTrade") Log(items)}# 返回结果如下:[[{"Name":"CThostFtdcTradeField","Value":{"ParticipantID":"0005","TradeDate":"20240808","ClearingPartID":"0005","ExchangeInstID":"SA409","reserve1":"SA409","ExchangeID":"CZCE","Direction":49,"TraderID":"000501","TradeSource":48,"HedgeFlag":49,"TradeTime":"10:56:00","BusinessUnit":"000501","TradingDay":"20240808","BrokerID":"10010","ClientID":"400609293","reserve2":"SA409","SettlementID":1,"TradeID":" 6853510","OffsetFlag":48,"Volume":1,"SequenceNo":260,"BrokerOrderSeq":539,"OrderLocalID":" 161","InvestUnitID":"","InvestorID":"00609293","OrderRef":"2","UserID":"00609293","TradeType":48,"PriceSource":49,"InstrumentID":"SA409","OrderSysID":" 30178205","TradingRole":49,"Price":1703}},{"Name":"CThostFtdcTradeField","Value":{"ExchangeInstID":"SA409","ExchangeID":"CZCE","SequenceNo":430,"TradingDay":"20240808","SettlementID":1,"InstrumentID":"SA409","OrderSysID":" 42045470","TradingRole":49,"HedgeFlag":49,"TradeTime":"14:26:51","Volume":1,"OrderLocalID":" 197","OrderRef":"2","UserID":"00609293","ClientID":"400609293","reserve2":"SA409","BusinessUnit":"000501","BrokerOrderSeq":686,"InvestUnitID":"","Direction":49,"OffsetFlag":48,"TraderID":"000501","ClearingPartID":"0005","BrokerID":"10010","TradeType":48,"TradeSource":48,"InvestorID":"00609293","ParticipantID":"0005","Price":1705,"TradeDate":"20240808","reserve1":"SA409","TradeID":" 9956391","PriceSource":49}},{"Name":"CThostFtdcTradeField","Value":{"OrderSysID":" 39490988","OrderLocalID":" 194","InvestUnitID":"","TradeTime":"14:05:35","ClearingPartID":"0005","ExchangeID":"CZCE","ClientID":"400609293","TradingRole":49,"SequenceNo":424,"TradingDay":"20240808","InstrumentID":"SA409","ParticipantID":"0005","reserve2":"SA409","BusinessUnit":"000501","PriceSource":50,"Direction":48,"OffsetFlag":49,"TradeDate":"20240808","SettlementID":1,"BrokerID":"10010","InvestorID":"00609293","UserID":"00609293","ExchangeInstID":"SA409","OrderRef":"3","HedgeFlag":49,"BrokerOrderSeq":673,"Volume":1,"TradeType":48,"TraderID":"000501","TradeSource":48,"reserve1":"SA409","TradeID":" 9210457","Price":1701}}]]
通过利用优宽量化函数exchange.GetHistoryOrders,可以得到以下简化后的结果(这里去除了包含原始信息的Info字段):
function main() { let res = exchange.GetHistoryOrders() res = res.map(item => { return Object.assign({}, item, { Info: undefined }); }); Log(res)}# 返回结果[{"Id":"5:485439450:CZCE:2","Price":1693,"Amount":1,"DealAmount":1,"AvgPrice":1703,"Status":1,"Type":1,"Offset":0,"Symbol":"SA409","ContractType":"SA409"},{"Id":"5:1691702221:CZCE:2","Price":1694,"Amount":1,"DealAmount":1,"AvgPrice":1705,"Status":1,"Type":1,"Offset":0,"Symbol":"SA409","ContractType":"SA409"},{"Id":"5:485439450:CZCE:3","Price":1702,"Amount":1,"DealAmount":1,"AvgPrice":1701,"Status":1,"Type":0,"Offset":1,"Symbol":"SA409","ContractType":"SA409"}]
通过比拟,可以看到优宽量化平台对信息进行了提取和处理,方便量化交易的进行。
参考链接
《CTP IO Api Document》:https://www.youquant.com/bbs-topic/3756
转载自:优宽量化交易平台社区
作者:ianzeng123