我们在前面的文章中讲到了成為一名优秀的 程序化交易 者应当经历的四个阶段。今天我们再来一起看一下九大阶段中的另外五项希望大家在看过这两篇文章后,能对程序化交易有一个更加深入的了解 一、交易系统 想要开发出一套完善的交易系统并不是一个简单
开放以来很多人开始编写自己嘚程序化交易系统,今天我想说说自己的一些看法
协议(《期货交易数据交换协议》)与交易托管系统进行通讯,而交易托管系统负责投资者的交易业务处理
协议中规定了所有的通讯都基于某一种通讯模式。
交易涉及的通讯模式共有三种:
1.对话通讯模式是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理并给予响应。例如报单、查询等这种通讯模式与普通的客户/服务器模式相同。
2.私有通讯模式是指交易所端主动,向某个特定的会员发出的信息例如成交
3.广播通讯模式,是指交易所端主动向市场中的所有会员都發出相同的信息。
例如公告、市场公共信息等
现在把主要的业务举例在下表中
行情涉及的通讯模式共有两种:
1.对话通讯模式,同交易┅样是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理并给予响应。例如登录退订等。
2.广播通讯模式主要是行情訂阅,当订阅行情后交易所端主动向会员连续主动发出行情信息
可见,通过CTP提供的接口我们可以向CTP发送业务申请,也不断的按照三种通讯模式中的其中一种接收CTP的响应因此我们写的交易系统中至少就应该有两个线程,一个称其为主业务线程负责对CTP发出业务申请;另┅个线程为API工作线程,负责接收CTP通过广播通讯模式对话通讯模式,私有通讯模式其中一种模式对交易系统的响应
综上所述,我们的程序化交易系统需要完成的业务可以划分为:
1.基本操作比如登录,订阅等;
2.行情操作比如对行情数据的接收,存储等
3.订单操作比如报單;对报单,成交状况的查询;报单成交状况的私有回报等。
4.数据***和处理操作比如接收到新数据之后的统计处理,满足统计条件後的报单处理(其实这里就是我们的策略所在)
那么我建议将我们的程序化交易系统分为四个线程,分别处理上述业务程序的主线程僦可以完成基本操作,完成登入订阅等初始化工作。
程序化交易系统是一个复杂的多线程网络程序在开发过程中要特别注意处理很多嘚线程互斥、数据处理造成的网络丢包等一系列棘手问题。另外对于CTP开发的资料,大家可以留言给我我尽量提供,也欢迎大家多多讨論