![WonderTrader2.png](./logo_qcode_noad.jpg)
<p align="center">
<img src ="https://img.shields.io/badge/version-0.9.9-blueviolet.svg"/>
<img src ="https://img.shields.io/badge/platform-windows|linux-yellow.svg"/>
<img src ="https://img.shields.io/badge/build-passing-brightgreen"/>
<img src ="https://img.shields.io/badge/license-MIT-orange"/>
</p>
# wtpy
这是**WonderTrader**针对`Python3`适配的子框架
# wtpy子框架简介
+ apps子模块
> - WtBtAnalyst.py 回测分析模块,主要是利用回测生成的数据,计算各项回测指标,并输出到`excel`文件
> - WtCtaOptimizer `CTA`优化器,主要是利用`multiprocessing`并行回测,并统计各项交易指标,最后将统计结果汇总输出到`csv`文件
> - WtHotPicker 国内期货换月规则辅助模块,支持从交易所网站页面爬取数据确定换月规则,也支持解析`datakit`每日收盘生成的snapshot.csv来确定换月规则
+ wrapper子模块
> 该模块主要包含了所有和`C++`底层对接的接口模块
> - ContractLoader.py 主要用于通过`CTP`等接口加载基础的`commodities.json`和`contracts.json`文件
> - WtBtWrapper.py 主要用于和回测引擎`C++`核心模块对接
> - WtDtWrapper.py 主要用于和数据组件`C++`核心模块对接
> - WtDtHelper.py 主要提供将用户自己的数据和`WonderTrader`内部数据格式进行转换的功能
> - WtDtServoApi.py 主要向用户提供直接通过`python`访问`datakit`落地的数据的接口
> - WtExecApi.py 主要用于和`C++`独立执行模块`WtExecMon`对接
> - WtWrapper.py 主要用于和实盘交易引擎`C++`核心模块对接
> - WtMQWrapper.py 主要提供直接使用底层WtMsgQue模块的对接
> - WtDtHelper.py 主要用于和底层的`WtDtHelper`数据辅助模块对接
+ monitor子模块
> 该模块主要包含了内置的监控服务,提供了`Http`和`websocket`两种连接方式
> - DataMgr.py 主要用于读取并缓存组合数据
> - EventReceiver.py 主要用于在指定的`udp`端口接收组合转发的各种事件
> - PushSvr.py 主要用于向`web`提供`websocket`服务
> - WatchDog.py 主要用于自动调度服务端的进程
> - WtBtMon.py 主要进行回测的管理
> - WtMonSvr.py 监控服务核心服务模块 ,利用`flask`实现了一个`http`服务接口
> - static `webui`静态文件
+ 其他模块
> 主要位于根节点下,包含了各个子模块的入口组件
> - WtCoreDefs.py 主要定义的`Python`版本的策略基类,方便用户重写
> - CodeHelper.py 品种代码辅助模块,内置了一些方法,方便使用
> - ContractMgr.py 合约管理器模块,用于加载`contracts.json`或`stocks.json`文件,并提供查询方法
> - CtaContext.py 主要定义了`CTA`策略的上下文,可以理解为单策略的运行环境
> - HftContext.py 主要定义了`HFT`策略的上下文,可以理解为单策略的运行环境
> - SelContext.py 主要定义了`SEL`策略的上下文,可以理解为单策略的运行环境
> - ExtToolDefs.py 扩展模块定义文件,主要定义了一些扩展模块的基础接口
> - ProductMgr.py 品种管理器,主要用于`Python`环境中的合约属性、品种属性查询
> - SelContext.py 选股策略上下文,即选股策略直接交互的`API`
> - SessionMgr.py 交易时间模板管理器,主要用于`Python`环境中的交易时段模板管理
> - StrategyDefs.py 各引擎策略基础定义模块,定义了`CTA`、`HFT`、`SEL`三种策略基类
> - WtBtEngine.py 回测引擎转换模块,主要封装底层接口调用
> - WtDtEngine.py 数据引擎转换模块,主要封装底层接口调用
> - WtEngine.py 交易引擎转换模块,主要封装底层接口调用
# 如何让获取
* `WonderTrader`
> - `github`地址:<https://github.com/wondertrader/wondertrader>
> - `gitee`地址:<https://gitee.com/wondertrader/wondertrader>
* `wtpy`
> - `github`地址:<https://github.com/wondertrader/wtpy>
> - `gitee`地址:<https://gitee.com/wondertrader/wtpy>
* `wtpy`获取地址:<https://pypi.org/project/wtpy/>
`wtpy`可以直接在`python3.8`以上的版本安装
``` shell
pip install wtpy --upgrade
```
# 延伸项目
* 将`wtpy`作为底层回测引擎的强化学习框架`Wt4ElegantRL`
<https://github.com/drlgistics/Wt4ElegantRL>
# 相关资源
* * *
* 关注公众号`wondertrader`,可以收到`WonderTrader`的实时资讯
* 用户交流QQ群上线:`610730738`(加入前请先`star`一下, 然后提供`github`用户名)
* 更多`WonderTrader`的文档请看<https://wondertrader.github.io/>
* `WonderTrader`半官方文档 <https://dumengru.github.io/docs_wondertrader/>
# 更新日志
### 0.9.9
* `C++`底层更新到`2023/11/27`发布的`v0.9.9`版本
* (**重要**)全面将原来的基于DequeueRecord的容器改成新的基于numpy内存直接构建ndarray的容器,数据读写性能很很大提升,目前估算下来差不多10倍左右
* 合约信息增加了上市日期和下市日期的概念,可以在回测中读取当日可用合约(这个还需要维护大的合约列表)
* 其他配合底层的优化和调整
* 细节调增了bug修复
### 0.9.8
* `C++`底层更新到`2023/08/18`发布的`v0.9.8`版本
* WtMonSvr增加移动版入口
* 控制台webui全新改版
* 内置的数据下载模块wtpy.apps.datahelper新增对天勤数据tqsdk的支持
* 优化了python部分调用底层日志接口时的编码处理机制,适配不同操作系统
* WtMonSvr增加了一个token访问模式,主要用于一些跨域访问的场景
* 完善了PushSvr中处理认证信息的细节
* 其他配合底层的优化和调整
### 0.9.7
* `C++`底层更新到`2023/03/21`发布的`v0.9.7`版本
* 监控服务的DataMgr获取资金的接口增加了对一次性读取全部策略资金数据的机制
* 控制台webui做了一些优化
* 其他配合底层的优化和调整
### 0.9.6
* `C++`底层更新到`2022/12/19`发布的`v0.9.6`版本
* 配合底层调整了WtDtServo的一些接口
* 完善了WtWrapper中和底层关于图表的接口对接
* 调整了WtCtaOptimizer和WtBtEngine一些接口,便于在终端中调用
* WtCtaOptimize新增了一个消息队列的支持,可以发布优化的进度等信息
* 配合底层扩展接口,完善了对增量回测的支持
* 控制台webui做了一些优化
* 其他配合底层的优化和调整
### 0.9.5
* `C++`底层更新到`2022/11/04`发布的`v0.9.5`版本
* 将flask改成fastapi(因为flask的依赖包版本繁复,直接安装会有一些依赖版本匹配的问题)
* 其他配合底层的优化和调整
* 修复了一些已知的bug
* 更多修改日志请参考[WonderTrader v0.9.5更新日志](https://github.com/wondertrader/wondertrader/blob/master/updatelog.md)
* 调试资源请查看<https://gitee.com/wondertrader/wtpy_utils/raw/master/pdb_wtpy_v0.9.5.rar>
### 0.9.4
* `C++`底层更新到`2022/08/29`发布的`v0.9.4`版本
* 其他配合底层的优化和调整
* monitor下WtBtSnooper模块进一步完善,支持自定义指标数据处理
* webui中的回测展示页面,完善了对自定义指标的绘制,以及其他的细节完善
* 更多修改日志请参考[WonderTrader v0.9.4更新日志](https://github.com/wondertrader/wondertrader/blob/master/updatelog.md)
* 调试资源请查看<https://gitee.com/wondertrader/wtpy_utils/raw/master/pdb_wtpy_v0.9.4.rar>
### 0.9.3
* `C++`底层更新到`2022/07/14`发布的`v0.9.3`版本
* 其他配合底层的优化和调整
* 绩效分析器去掉对matplotlib的依赖,改成利用excel生成图表
* 配置文件解析的时候,增加一个编码判断的逻辑
* WTSTickStruct的买卖队列改成了单项,而不用数组,这样在python中转dataframe的时候便于处理
* 停用BarList和TickList�