今天(2020 年 7 月 6 日)WonderTrader 发布了最新版本,有 两个重大更新。
v0.4.0 更新如下:
- 新增一个 选股调度引擎,用于调度应用层的选股策略,得到目标组合以后,提供自动执行服务,暂时只支持日级别以上的调度周期,执行会放到第二天
- 因为新增了选股调度引擎,所以全面重构
WtPorter
和WtBtPorter
导出的接口函数,以便调用的时候区分 - 新增一个 独立的执行器模块
WtExecMon
,并导出 C 接口提供服务。主要是剥离了策略引擎逻辑,提供单纯的执行服务,方便作为单纯的执行通道,嫁接到其他框架之下 -
Windows
下的开发环境从vs2013
升级到vs2017
,boost1.72
和curl
需要同步升级
两个重大更新简单说明:
-
选股引擎 ,也叫做 时间驱动引擎 ,主要用于执行定时的较大计算量的任务,比如多因子选股等,所以
WonderTrader
内部也命名为 选股引擎,相应的策略基类也叫做BaseSelStrategy
,而策略的 API 接口也相应叫做SelContext
。- 选股引擎 主要的适用于需要大量计算的场景,比较典型的就是选股场景。选股引擎 底层采用异步回调,策略的计算逻辑可以拥有更多的执行时间,而不用担心将行情通道和交易通道阻塞。相对比的,原来提供的 Cta 引擎,主要是通过事件驱动 (ontick/onbar/onschedule) 同步回调,要求策略逻辑尽可能简洁,耗时短。
-
选股引擎 回测代码示例如下
from wtpy import WtBtEngine from Strategies.DualThrust_Sel import StraDualThrustSel if __name__ == "__main__": #创建一个运行环境,并加入策略 engine = WtBtEngine(isCta=False)#isCta 主要用于标记是 CTA 引擎还是 SEL 引擎 engine.init('.\\Common\\', "configbt.json") engine.configBacktest(202005150900,202006051500) engine.configBTStorage(mode="bin", path="E:/WTP_Data/") engine.commitBTConfig() # 创建一个选股策略,其实是一个 DualThrust 的变种,通过遍历目标标进行 DualThrust 的计算逻辑来实现 straInfo = StraDualThrustSel(name='DT_COMM_SEL', codes=["CFFEX.IF.HOT","SHFE.rb.HOT","DCE.i.HOT"], barCnt=50, period="m5", days=30, k1=0.1, k2=0.1) engine.set_sel_strategy(straInfo, time=5, period="min") engine.run_backtest() kw = input('press any key to exit\n') engine.release_backtest()
-
独立执行器 是另一个重大更新。独立执行器 的意义在于:无论你用何种策略框架产生的信号,你都能够很轻松的调用 独立执行器 来执行信号。这就从根本上为迁移平台存有顾虑的用户提供了一条捷径,尤其对于那些想要提升自己的管理效率,但是又没有合适的技术框架的用户来说,这绝对是一个巨大的利好。
- 对于已经有成熟策略在别的平台上实盘的用户,如果有类似的需求:一套策略需要在多个账号上运行,一般平台上只能运行多个策略实例,每个实例对应一个交易账号,但是这样管理效率很低,想要重构原框架,开发能力和精力都不允许,开发完成以后还需要测试,迁移别的平台又意味着全部策略重写 ,那么 独立执行器 就能帮你彻底解决这个问题。
- 对于日级别以上的策略类型,特别是选股策略。就可以通过 独立执行器 就能简单实现调仓的目的。
-
独立执行器 调用代码示例如下
from wtpy import WtExecApi if __name__ == "__main__": execMon = WtExecApi() execMon.initialize("logcfgexec.json") execMon.config("config_exec.json") execMon.run() execMon.set_position("CFFEX.IF.2007", 1) input('press any key to exit\n') execMon.release()
- 独立执行器
下一阶段的计划
- 将高频策略引擎 WtHftEngine 导出到 python
- 交易通道数据落地
- wtpy 中会提供一个内置的基于 flask 的服务引擎,在此基础上实现一套 webui,方便初学者调用
- 继续完善文档