Skip to content

Latest commit

 

History

History
17 lines (11 loc) · 4.31 KB

README.md

File metadata and controls

17 lines (11 loc) · 4.31 KB

CTP_DEV_NOTE

CTP是目前国内高频量化交易重要的接口,通过期货公司开通CTP接口,可以连接国内四大期货交易所,进行期货和期权等金融衍生品的交易。

为什么要自己开发交易系统?

目前市场中,有很多的基于CTP二次开发的客户端,这些客户端大多数都是将CTP原始的接口封装成Python供大家使用,然而作为一名量化高频的开发人员,深知这其中的弊端,一是交易不能有黑盒子,大多数的国际投行,比如高盛,摩根,美林等,都有自己的交易系统,原因是实际交易过程中,如果遇到问题,那么交易员还是量化开发人员都需要知道整个交易决策的过程,这就需要对原始的交易逻辑和代码进行分析,如果是使用第三方的封装的软件,除非有源码提供,否则是无法实现的,其次,第三方的交易软件更新迭代比较慢,尤其是当交易需要有自己的个性化的功能时,很难达到自己的预期的效果。最后,实际的交易还是开发,知其然必知其所以然,如果只是用但不知道其中的原理,个人觉得并不是一种高明的思维,因此我坚持自己基于CTP原始的接口开发自己的高频量化交易系统。

开发交易系统难吗?

也许有一些人会觉得开发一个高频交易系统很难,这个问题也不能有一个明确的结论,我觉得量化交易系统可以分为几个部分:交易系统的架构,系统的实现以及交易的策略。首先架构上个人觉得大同小异,看了很多的交易系统的架构,比如火币,币安,QunantConnect等等,无论交易什么金融产品类型是什么,但是可以发现底层的架构大多的类似,比如分为:订单管理模块,策略引擎模块,持仓管理模块,行情模块,风控模块等,不用自己过多的设计,参考加优化即可。其次交易的实现,CTP原始的接口使用的C++,使用C++是顶尖投行交易的传统了,一直延续至今,毫无疑问C++确实是一门博大精深的语音,要想完全掌握成为一名C++的大神,并非一朝一夕的事情,但是如果开发一个金融类的高频交易系统可能并不需要成为一名顶级的C++的编程人员,学以致用也许才是准确的道路,从现有的交易系统来看,学会基本的编程知识加上面向对象编程,智能指针,多线程以及常见的几种程序设计模式的知识,我个人觉得是可以应付的过来的,这里可以参考一下quantnet上面的两门C++课程《C++ Programming for Financial Engineering》和《Advanced C++ and Modern Design》,学完这两门课程,应对编程应该问题不大。最后就是交易策略,这个是最重要的部分,就是将自己的交易思路转换为实际的代码,并且运用于实盘交易,这个因人而异,有好的策略也许就能从市场中获利,这也是交易我们做交易系统的目的。

如何建立自己的交易系统

有了架构图,C++编程基础加上自己还有策略时,便可以开始的CTP交易开发了,前期我每日每夜写了三个月代码,终于完成了自己的高频交易系统,目前还算稳定,因为之前自己摘CTP的开发过程中,走了不少的弯路,包括模拟环境,接口的调用,缺失行情的处理,回报信息字段的处理,因此我建立了这个代码库,并且开始自我归纳总结如何开发和开发过程中遇到的问题,一方面可以积累自己内在的储备,另外一方面,给后来开发者一些思路。

代码库哪些内容

主要包含如何使用CTP开发,包括行情和交易接口的连接,行情的订阅,订单回报和成交回报推送,不同订单类型的发送以及回报消息对象的解析;也许很多人认为交易策略是核心,个人也许并不认同这个观点,因为好的策略运用到实盘交易之间有着巨大的鸿沟,想法能真正实盘进行交易,并且避开各种坑,需要花费很大的很大的精力。因此这个代码库目前我想并不包含策略相关的内容。就如同战士上战场,这里只提供武器和弹药,但是具体的如何打战,运用的战术,需要大家自己思考。

更多的内容,大家可以关注我的微信公众账号:量化金融初学者