Article Blog Image

设计考量

系统设计

本文为您介绍我们在ThunderTrader系统架构设计过程中的思路与目标,带您从另外一个角度理解ThunderTrader的设计模式。

容器化部署

ThunderTrader所有模块均采用Docker容器进行部署,这样做的主要目的是降低您学习使用Thunder的门槛。与常见的Linux软件包不同,Docker镜像不需要您额外安装任何第三方依赖,同时也减少了在不同Linux发行版下依赖兼容性的风险。此外Docker容器是完全隔离的,不会受到来自外界的影响,同时也不会影响到宿主机的环境设置。

除了上面所述的优势,docker的另外一个优点是对性能几乎没有损耗。使用Docker镜像封装的应用程序基本与在物理机器上执行的应用程序有着相同的性能。

Native策略与Remote策略

众所周知,像Python/Golang/R/Java等语言,相较于C++在科学计算、仿真模拟等方面有着更加友好的使用体验,而C++则在计算性能方面有着天然的优势。为了支持多语言策略开发满足不同的场景,ThunderTrader为您提供Native和Remote两种策略开发模式。

当您只是想实现一个Idea,使用历史数据仿真,或者在实盘进行小规模交易,再或者您的策略涉及到的计算量并不大,对延迟要求并不高,那么Remote策略非常适合这种场景。Remote策略是一种基于HTTP的协议约定,engine向Remote策略推送行情数据以及报单信息(event),而Remote策略向engine返回需要执行的动作(action)。基于这种模式,几乎所有编程语言都可以成为您开发策略的理想选择。而且Remote策略本身可以运行在任何环境中,甚至可以运行在您的桌面办公电脑上,这非常适合您快速将您的想法变为可进行交易的策略。

当您希望策略能够快速响应,对延迟有严格的要求,对计算性能也有较高的预期,此时您可以选择用Native的方式实现策略。当然这需要您能够较为熟练地使用C++语言进行开发。虽然C++开发涉及到较多的环境配置,但是好在我们为您提供的DevelStudio已经帮您配置好了一切,您可以在DevelStuduo中完成策略编写、编译、仿真等一系列步骤。编译好的策略可以直接上传到engine进行部署。

Native策略以寄生在engine内部的方式运行,本质上与engine是一个整体。这样的方式使得engine能够第一时间将行情数据推送给策略,同时也能快速将策略的交易信号发送到交易所,这些动作的延迟几乎可以忽略不计。同时C++拥有非常多的高性能科学计算库,例如GSL、BLAS等等,这些特点使得Native方式非常适合高频交易策略的开发。同时Native策略支持故障恢复机制,系统能在检测到故障后自动恢复当前运行的策略实例,使得您的交易系统更加稳定。

基于Python的仿真工具

ThunderTrader并没有像其他量化工具一样提供基于用户界面的仿真工具,而是提供了基于Python的一套仿真工具套件(pythunder),这样做的主要目的是为了更加方便您进行第三方开发。Python作为一个强大数据分析工具,提供了像matplotlib、munpy、scipy、pandas等一系列科学计算、图形报表绘制工具,您可以基于pythunder构建您自己的策略分析框架。

Tags: