最近在搭建交易系统的过程中,学习了一下CEP框架的相关知识。
CEP全称是复杂事务处理框架(Complex Event Processing),他的特点简单概括如下:
1、他的输入是一些简单的事件流
2、接受到输入的事件流后,他通过内部核心的判别逻辑,根据事件特点,路由到相应的处理分支进行处理。
举个实例,这个很像是有一种带收纳桶的积木玩具:
可以把每一个积木粒当做一个个简单的事件,而cep框架就是收纳桶的盖子,我们可以根据每个事件的特点,把事件路由到相应的处理分支。https://www.zhihu.com/video/1179493509442195456
这样每个事件就会触发响应的处理分支:不同的事件将触发不同的交易策略。
下面进一步说一些有意思的事儿:
1、可以看到,其实CEP框架的本质,就是一个消息分发系统。每个消息就是上文中的一个事件,Cep框架根据自身逻辑,把每个消息路由到相应的处理分支。咱们极端一点,想象一下,如果所有的消息都采用相同的逻辑来处理,那么cep框架就真的转变为一个消息分发系统了。
2、如果你认真看了上文,可能隐约会感觉到,一个交易策略的执行,有两个逻辑控制点:一是cep框架中的事件分类逻辑,二是实际的策略处理逻辑。
那么这两个逻辑是什么关系呢?理论上你可以把Cep框架中的“逻辑”写的很复杂,达到策略逻辑目的,而且一般cep框架一般是c或者java写的,运行效率也比交易策略要好(为了降低量化交易员的门槛,交易策略甚至可能是python写的)。但这样做也会有一些问题,比如不利于框架逻辑解耦,万一策略有问题要修改都是牵一发动全身;而且cep框架逻辑粒度会变成策略级别,非常细,容易出问题。因此,哪些写在Cep框架的逻辑中?哪些写在策略逻辑中?是需要权衡的。