重磅更新来袭WonderTrader新版本v040全新发布

112次阅读

共计 1934 个字符,预计需要花费 5 分钟才能阅读完成。

今天(2020 年 7 月 6 日)WonderTrader 发布了最新版本,有 两个重大更新

v0.4.0 更新如下:

  • 新增一个 选股调度引擎,用于调度应用层的选股策略,得到目标组合以后,提供自动执行服务,暂时只支持日级别以上的调度周期,执行会放到第二天
  • 因为新增了选股调度引擎,所以全面重构 WtPorterWtBtPorter导出的接口函数,以便调用的时候区分
  • 新增一个 独立的执行器模块WtExecMon,并导出 C 接口提供服务。主要是剥离了策略引擎逻辑,提供单纯的执行服务,方便作为单纯的执行通道,嫁接到其他框架之下
  • Windows下的开发环境从 vs2013 升级到 vs2017boost1.72curl需要同步升级

两个重大更新简单说明:

  • 选股引擎 ,也叫做 时间驱动引擎 ,主要用于执行定时的较大计算量的任务,比如多因子选股等,所以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,方便初学者调用
  • 继续完善文档

正文完
 0