What-什么是WonderTraderWonderTrader要解决的问题WonderTrader是一个开源的CTA投资组合管理量化交易框架,是投资组合管理的利器!WonderTrader旨在提供一个相对通用的技术框架,将量化交易技术框架中的策略和技术解耦,让策略开发者可以专注于策略本身的逻辑,软件开发者可以专注于技术的性能和稳定性框架,从而实现一个开放、高可用、高度可定制的量化策略技术框架。WonderTrader的设计思路从周边来看,WonderTrader本着专业的人做专业的事的基本原则。从一开始就考虑到很多编程能力有限的策略开发者的实际情况,采用C++作为底层核心框架,再以C接口导出,为其他语言的调用提供了便利。从核心来看,为实现开放性、高可用、高定制化的设计目标,核心设计遵循核心逻辑+功能模块的原则进行解耦,将所有直接功能模块放入外部功能模块中进行实现。这样策略开发者就不需要关心信号的执行情况,每个功能开发者也不需要考虑与策略的交互。因为交互逻辑放在了核心。WonderTraderWhy的基本架构图-为什么用WonderTrader的策略一次性写好,方便,不易出错直接迁移磁盘,无需修改。方便开发和移植,不会因为代码重写而给已经测试过的策略引入新的问题。策略可以直接在C++底层开发,也可以写在其他语言的子框架下,以满足不同场景的需求。用户可以根据自己的需要选择在其他语言(目前是python3)的子框架下开发策略,也可以直接使用C++进行开发,WonderTrader提供了完整的接口(为了方便用户,python子框架wtpy和C++策略调用接口名称一致)。策略的逻辑和执行完全分离,让专业的人做专业的事。策略开发者只需要关注策略本身的逻辑是否合理,而不需要考虑执行的细节,比如是买平还是买平?是开盘卖还是平盘卖?如何处理今天和昨天的佣金差异?是双开还是锁位?Executor开发者只需要关注算法交易的具体逻辑,不需要考虑如何调用策略,是否需要将订单上报给策略进行处理。核心模块采用C++开发,保证了比其他解释型语言更高的执行效率。C/C++属于低级语言,在内存控制和执行效率上有较大的优势。虽然没有高级语言那么多的语法糖,但是成熟的社区环境可以保证核心部分的逻辑能够有很好的解决方案。在核心部分由专门的软件工程师开发的前提下,与其他直接用解释型语言开发核心逻辑的方式相比,C++的核心模块显然更有优势。一个数据登陆程序+N个组合盘的方式,非常方便部署和管理。WonderTrader的数据组件内置UDP广播服务,可以直接广播接收到的行情数据。也就是说,数据组件可以同时为多个复合盘提供数据服务。内置的数据存储模块使用内存映射文件读写文件,大大降低了数据读写的开销。而且,使用内存映射文件也可以轻松应对多进程读取的应用场景。C接口的导出可以满足大多数跨语言调用WonderTrader的工程结构,基本遵循静态核心库+动态C库。如果运行在C++环境下,静态核心库可以直接被可执行程序链接。如果用其他语言调用,需要调用C接口导出的动态库。C接口导出的动态库可以满足绝大多数的跨语言调用场景。WonderTrader的python子框架wtpy是在python3环境下调用WonderTrader的一种做法。有需要的用户可以根据自己的需求开发子框架。比如C#可以使用DllImport导出C库,而python可以使用ctypes库调用C库,java也可以使用JNI调用C库。Where-WonderTrader如何获取WonderTrader的github地址:https://github.com/wondertrad...WonderTrader的Python3子框架wtpy获取地址:https://pypi.org/project/wtpy/wtpy可以直接在python3.5安装以上版本pipinstallwtpyHow-WonderTraderUsageDemoHowtorungithub提供了WonderTrader子框架wtpy的用例https://github.com/wondertrad...安装好wtpy后,可以直接运行回测demo。如果要运行数据demo和真实demo,需要将合约列表更新到最新(期货demo中的contracts.json,股票demo中的stocks.json)写在最后WonderTrader是一个成熟的量化交易经过多年考验的框架,从2013年第一个版本构建至今,经历了数次重构,最终形成了WonderTrader。关注公众号wondertrader,获取WonderTrader的实时资讯
