程序员

基于事件驱动的自动化交易系统实践

2016-05-10  本文已影响1244人  wljian

前言

自己一直对自动化交易系统有着浓厚的兴趣,但由于平时较忙,属于纸上谈兵,直到去年年底开始有些业余时间开始实践。整个过程令人兴奋,从一开始有了个策略想法,然后着手写代码回测证明能够实现理论盈利。于是开始实现系统,上线,小额试水,逐渐调高本金,调优。最终,实现账面上的真实盈利。本文则是对该系统实现的一个阶段总结与分享。

目标

实现一套自动化交易系统(平台),能够回测/执行自定义的交易策略(交易对象为比特币)。该系统需要具备以下特性:

事件驱动
记录所有时间序列事件(报价,订单,账户等变化事件),通过对事件的回放从而可以重现任何时间点的历史状态。

架构 V1.0

特点: 单交易策略单执行流

ets_arch_v1.png

策略引擎组成

ets-engine.png

回测支持

ets-regression.png

调试支持

ets-replay.png

架构 V2.0

特点: 单交易策略多执行流
多执行流提供了以下优势:

ets-arch-v2.png

架构 V3.0 (TBD)

特点: 多交易策略多执行流
通过多交易策略捕捉更多日内交易机会

一些问题的处理策略

延时衡量

目前系统所需衡量的延迟有:

所见非所得

由于订单决策价格(Decision Price)往往与实际执行价格不完全相等(目前都是采用Market Order下单),目前采取的策略有:

策略饥饿

当市场表现与策略所定参数长时间相悖,导致策略长时间不被执行(饥饿),错过交易机会。目前采取的策略有:

极端场景

默认情况下策略会自动调整来适应当前市场变化,以此减少饥饿,但当市场进入极端场景时,可能会被套牢。目前采取的策略是:

多执行流冲突

当运行多执行流,市场的快速波动可能同时触发多个执行流的策略下单。为了避免使情况复杂化,采用如下策略简化执行:

上一篇 下一篇

猜你喜欢

热点阅读