在解答这个问题之前,先来简单介绍下交易者们使用的程序化交易平台是怎么设计的。我们以发明者科技研发的期货程序化交易平台为例子。
在这之前,我们先看下例子中的交易策略:
PS,本篇的例子只是抛砖引玉,真正可以实战的程序化交易策略,可能要比这个更加完整和精细。
一个完整的交易系统都包含哪些呢?
首先就是历史数据和实时行情了,因为这是策略计算所需要的最基本元素。然后就是策略的算法处理,它负责跟进原始数据,计算买卖逻辑条件。接着是风控管理,具体就是止盈和止损等等。最后是报单、下单和回测统计等模块,把这些集合起来就是一个完整的交易系统。
以下是程序化交易平台处理策略的具体流程:
从输入和输出的角度讲,几乎所有的交易系统都是通过两种路径和交易所发生交互通信:
发明者量化交易平台从交易所和期货公司获取实时的行情,在行情中包含:买价卖价、买量卖量、成交价格、成交量和委托订单队列等等基础信息。
大部分情况下,交易者不仅需要参考实时行情,还要参考历史行情数据,甚至是基本面数据,综合判断做出交易策略。所以发明者量化交易平台,用专门的历史数据库来存储非实时市场数据,这样更方便金融工具使用数据库,比如历史数据回测。
整个交易策略还可以细分为几方面:
如下图所示:
高质量的行情数据是程序化交易制胜的关键因素之一。策略的研究和实盘交易等都是需要高质量的数据为其提供支撑的,发明者量化交易系统通过交易所提供的数据接口,连接至交易所实时获取行情。
程序化交易对于数据的速度⼗分敏感,为了更高的程序性能和更低的延迟,在使⽤⾼速⽹络设备的基础上,支持多个高质量数据源可供程序化交易者选择,也就是我们日常所说的行情多路优选,以达到最快行情和交易速度。
整个程序化交易系统的性能越好,策略算法的处理速度就会越快。发明者量化交易系统采用的智能算法处理引擎,以全自动方式执行。订单的自动化执行由独立报盘(Order Management System)模块完成。
在程序化交易平台中,所有的报单、下单和撤单请求,都会由此模块传送给交易服务器来进行高速处理。如果交易买卖信号通过了风控模块,那么程序化交易服务器会根据订单的目标市场生成相应的请求,并将之发送给交易所。
当收到交易所的下单、撤单和成交回报之后,程序化交易服务器也会相应地更改本地的订单状态,并通知给订单的发送者。
因为程序化交易策略不需要人工干预,所以需要借助风控模块检查,来确保如果交易系统出现错误,将损失降到更小。这是至关重要的一步,因为一个策略如果没有风控,将会对程序化交易这或者公司造成无法挽回的损失。因此,风控是程序化交易的重要组成部分。它的主要作用是︰
1. 帮助系统排除异常和交易者的手误。
2. 在订单离开系统之前,确保订单已通过风控模块的检验。
在发明者量化交易平台中,用户可以根据自己的需求,制定适合自己的风控模块,比如:品种限制、时间限制、资金限制、下单量限制、账户总头寸和净头寸限制等等风控模块。
任何一个订单,如果违反任何一个限制,都会被拦截,并且不会将交易指令发送至交易所。而且这些风控模块的延迟被控制在个位数微秒级,不会出现因为风控模块导致的延迟问题。
程序化交易者将大部分时间用于开发交易策略、回测、策略优化和资金管理上。这样是为了确保交易策略可在真实市场环境中有效执行。但是没有策略可以一直持续获利,所以程序化交易者必须更新迭代,保持市场优势性。
我们知道,科学的回测是评价一个策略是否可以实盘交易的关键一步,发明者量化交易平台的一大优势就是它对策略开发环境和回测环境进行了抽象封装,用户策略在开发环境和测试环境间可以做到一键切换无缝过渡,无需二次开发。这种设计极大地缩短了策略上线的周期,更降低了维护成本。