Python Sub Framework Of WonderTrader
Project description
wtpy
这是WonderTrader针对Python3
适配的子框架
wtpy子框架简介
- apps子模块
- WtBtAnalyst.py 回测分析模块,主要是利用回测生成的数据,计算各项回测指标,并输出到
excel
文件 - WtCtaOptimizer
CTA
优化器,主要是利用multiprocessing
并行回测,并统计各项交易指标,最后将统计结果汇总输出到csv
文件 - WtHotPicker 国内期货换月规则辅助模块,支持从交易所网站页面爬取数据确定换月规则,也支持解析
datakit
每日收盘生成的snapshot.csv来确定换月规则
- WtBtAnalyst.py 回测分析模块,主要是利用回测生成的数据,计算各项回测指标,并输出到
- 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
数据辅助模块对接
- ContractLoader.py 主要用于通过
- 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 交易引擎转换模块,主要封装底层接口调用
- WtCoreDefs.py 主要定义的
如何让获取
-
WonderTrader
-
wtpy
github
地址:https://github.com/wondertrader/wtpygitee
地址:https://gitee.com/wondertrader/wtpy
-
wtpy
获取地址:https://pypi.org/project/wtpy/wtpy
可以直接在python3.8
以上的版本安装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://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://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,全部改成更高效的WtBarRecords和WtTickRecords
- WtDtServo配合底层新增了一个get_ticks_by_date接口用于按交易日读取tick数据以及一个get_sbars_by_date接口用于按交易日读取秒线数据
- WtDtServo配合底层新增了一个get_bars_by_date用于按交易日获取分钟线数据
- WTSBarStruct的to_tuple方法进行了扩展
- apps.datahelper新增一个dumpBars接口,将要落地的K线数据直接通过回调的方式传出来,方便灵活控制如何保存K线数据
- WtBtEngine和WtEngine中初始化的时候,把默认的基础文件名改成None,并加入判断,可以兼容配置文件中的配置项
- 新增一个TraderDumper,调用底层的TraderDumper模块,可以将交易接口的数据转接出来
- monitor.DataMgr模块读取数据的时候加了一些兼容处理,减少web控制台报错
- WtBtEngine和WtEngine增加了配置自定义连续合约规则的接口registerCustomRule
- WtHotPicker的演示demo中增加米筐数据源的支持
- 绩效分析做了一些优化,主要是把目录改成output目录,后面的策略子目录通过策略id自动生产,这样就不用多次输入了
- 完善了WtCtaOptimizer的一些细节
- 遗传算法优化器优化
- webui控制台发布包做了一个更新,主要增加了一些分页机制,页面可以不用那么卡
- webui新增一个独立页面backtest.html,该页面主要提供可视化回测查看和分析功能
- monitor下新增一个WtBtSnooper模块,可以运行一个简单的回测结果提取服务
- demo进一步完善
- 更多修改日志请参考WonderTrader v0.9.3更新日志
- 调试资源请查看https://gitee.com/wondertrader/wtpy_utils/raw/master/pdb_wtpy_v0.9.3.rar
0.9.2
C++
底层更新到2022/03/28
发布的v0.9.2
版本- demo进一步完善
- 其他配合底层的优化和调整
- 更多修改日志请参考WonderTrader v0.9.2更新日志
- 调试资源请查看https://gitee.com/wondertrader/wtpy_utils/raw/master/pdb_wtpy_v0.9.2.rar
0.9.0(重大版本)
C++
底层更新到2022/03/14
发布的v0.9.0
版本- (重要)重构了底层数据结构WTSTickStruct和WTSBarStruct,wtpy做了同步修改
- (重要)配置文件全面兼容yaml和json两种格式,并实现了一个WTSCfgLoader模块自动处理
- (重要)底层实现了对7*24小时交易品种的支持
- (重要)完善了监控服务,支持扩展异常事件通知接口
- 新增一个WtCCLoader模块,用于从网络接口加载合约列表
- 新增一个遗传算法参数优化模块WtCtaGAOptimizer
- demo进一步完善
- 其他配合底层的优化和调整
- 更多修改日志请参考WonderTrader v0.9.0更新日志
- 调试资源请查看https://gitee.com/wondertrader/wtpy_utils/raw/master/pdb_wtpy_v0.9.0.rar
0.8.0(大版本)
C++
底层更新到2021/12/24
发布的v0.8.0
版本- (重要)实现了
ExtDataLoder
的机制,实盘和回测框架都可以通过应用层的扩展数据加载器加载历史数据(可参考demos/test_dataexts
) - (重要)实现了
ExtDataDumper
的机制,如果向datakit
注册了ExtDataDumper
,在收盘作业的时候,就会通过ExtDataDumper
将实时数据转储(可参考demos/test_dataexts
) - (重要)配合
C++
底层完善了对T+1
交易机制的支持 WatchDog
模块做了调整,增加了对进程使用的内存的监控- 新增了一个高性能容器
DequeRecord
(By ZerounNet),用于python
部分的缓存替换原来的WtKlinData
和WtHftData
,在数据缓存方面,大致可以提升5%~10%的性能 demos
下新增一个cta_unit_test
,作为一个基准测试demo
,以后会逐步完善- 其他细节优化和
bug
修正
0.7.1
C++
底层更新到2021/10/24
发布的v0.7.1
版本- 回测框架
C++
底层增加了单步控制机制,用于控制回测进度,主要为了配合强化学习框架的调用习惯 WtDtEngine
支持扩展Parser
的接入,可以参考/demos/datakit_fut/testExtParser.py
- 其他配合底层的优化和调整
0.7.0
C++
底层更新到2021/09/12
发布的v0.7.0
版本- 新增一个
WtDataServo
模块,分为两种实现方式, 一种是调用本地底层WtDtServo
模块,直接访问数据文件,根据需要可开启web
接口,另外一种是直接访问第一种实现方式提供的web
接口拉取数据,详情可以参考/demos/test_dataservo
- 优化了
WtWrapper
和WtBtWrapper
,将原来的global
变量全部改成局部变量,可以提升运行效率 - 通过
singleton
修饰器限定Wrapper
为单例,和底层统一 - 新增一个
WtMsgQue
模块,通过WtMQWrapper
模块调用底层的WtMsgQue
模块 EventReceiver
模块改成调用WtMsgQue
来实现,并按照回测和实盘框架分别实现EventReceiver
WatchDog
启动和监控进程的机制进行了优化,不再使用threading
挂载进程句柄的方式,而是利用cmdline
和processid
进行检查和监控,这样WtMonSvr
重启之后,就可以重新根据命令行挂在已经在运行的进程WtMonSvr
新增回测管理模块WtBtMon
,用于提供回测相关的接口服务WtMonSvr
完善了组合配置文件查询和修改的接口WtMonSvr
完善了组合风控过滤器filters.json
的读取机制WtMonSvr
新增了用户修改密码和管理员重设用户密码的接口PushSvr
根据EventReceiver
收到的数据,进行了适配,完善了消息推送的机制WtBtAnalyst
模块新增了run_simple
接口,用于只进行最简单的每日资金分析,并将结果输出到summary.json
文件apps
下新增了一个WtHotPicker.py
模块,用于确定主力合约和次主力合约- 其他配合底层的优化和调整
webui
剥离出来,单独发布到wtconsole
仓库
0.6.5
C++
底层更新到2021/07/19
发布的v0.6.5
版本WtDtHelper
新增一个resample_bars
接口,用于将制定的dsb
数据文件重新采样为其他周期的K线SessionInfo
新增一个toString
对象,生成json
格式的字符串- 暴力优化器
CTAOptimizer
支持设置多个回测时段 - 完善了
read_dsb_bars
和read_dsb_ticks
接口,同时新增read_dmb_bars
和read_dmb_ticks
接口调用WtDtHelper.dll
的同名接口 Context
新增一个is_backtest
属性,用于判断是否在回测模式- 监控服务新增了查看组合文件结构、获取组合下文件内容以及修改组合下文件内容的接口
- 完善了
webui
控制台针对风控员的权限控制 - 完善了绩效分析模块的兼容性
webui
完善- 其他代码级的优化和完善
0.6.4
C++
底层更新到2021/05/24
发布的v0.6.4
版本WtDtHelper
中调用优化,去掉了global
- 修正了一些底层接口调用时参数对应不上的问题
WtDtHelper
新增了直接从python
里向C++
底层喂历史数据的接口trans_bars
和trans_ticks
- 新增了一些
demo
- 针对
C++
底层进行适配:1、CTA
增加一个stra_get_fund_data
接口,2、回测引擎,支持设置slippage
WtEngine
构造函数提供指定数据输出目录的genDir
参数,以及日志配置文件的logCfg
参数- 其他代码级的优化和完善
0.6.3
C++
底层更新到2021/04/14
发布的v0.6.3
版本- 绩效分析工具
WtBtAnalyst
功能大幅度扩展
0.6.2
C++
底层更新到2021/03/17
发布的v0.6.2
版本- 日志信息翻译成英文
webui
的部分表格添加了排序和统计功能
0.6.1
C++
底层更新到2021/02/26
发布的v0.6.1
版本- 统一封装了一个
PlatformHelper
模块,用于确定操作系统的各种信息 - 将绝大部分的函数参数和返回值都增加了类型,方便调用的时候查看
- 将K线容器类的成员变量做了修改,
size
->capacity
,count
->size
,便于用户理解 WtDtHelper
模块新增两个接口read_dsb_ticks
和read_dsb_bars
,同步调用C++
底层WtDtHelper
模块的同名接口,用于直接读取dsb
文件CTA
策略新增一个stra_get_last_exittime
用于获取上一个出场信号WtBeEngine
和WtCtaOptimizer
两个模块都增加了对C++
策略的支持- 回测框架增加对
session
开始和结束事件的响应接口 - 监控服务:增加了查看和修改入口脚本的接口
/qrygrpentry
、/cmtgrpentry
web-ui
:去掉vue-json-viewer
库,改用codemirror
,用于展示和编辑代码web-ui
:控制台新增入口代码修改的组件,用于修改组合盘下的run.py
入口文件web-ui
:优化了一些展示的细节wtpy.apps
下添加了一个datahelper
子模块,该模块的主要作用就是将不同数据源的数据按照WonderTrader
支持的格式保存起来
0.6.0
C++
底层更新到2021/01/26
发布的v0.6.0
版本CTA
策略API
新增一个stra_get_tdate
,用于获取当前交易日CTA
策略API
和SEL
策略API
各新增一个stra_get_all_position
,用于获取全部的持仓数据- 完善了
WtBtWrappe
r模块中对tick
数据的处理 - 完善了数据辅助模块
WtDtHelper
- 完善了跟
C++
底层新增的HFT接口的对接 - 初步完成了跟
C++
底层新增的股票Level2
数据访问接口的对接 - 将
WtDataDefs
模块中的WtTickData
改成WtHftData
,作为高频数据的通用容器
0.5.4.1
WatchDog
模块中修改了一周星期的序列,因为Python
从周一到周天标记为0-6,而WonderTrader
采用周天到周六为0-6
0.5.4
C++
底层更新到2020/12/25
发布的v0.5.4
版本C++
底层接口针对传递配置文件内容的支持做了修改,同步修改了wtpy
中的部分关联代码- 修正了监控服务中的
WatchDog
模块在linux
下的启动参数的bug
,解决了linux
下无法启动的问题 - 修正了监控服务的自动调度任务没有检查是否启用标记,从而导致重复启动的
bug
- 修改了监控服务的
WebUI
的一些展示细节 wrapper
下新增一个WtDtHelper
模块,用于对接C++
底层的WtDtHelpe
r模块,给python
调用处理数据转换的任务- 将
WtBtAnalyst
模块迁移到wtpy.apps
下 - 新增一个
WtOptimizer
,用于遍历优化策略参数
0.5.3
CTPLoader
增加一个isMini的参数,用于控制底层调用MiniLoader对接CTPMini2进行拉取WtKlineData
新增一个slice方法,用于对已有K线进行切片C++
底层更新到2020/12/08发布的v0.5.3
版本CtaContext
新增一个stra_get_sessinfo
接口,用于获取品种的交易时间信息monitor
模块中的web-gui
修改了一些bug- 修正了绩效分析模块的一些bug
0.5.2
- 同步
WonderTrader
核心为v0.5.2 - 监控服务
monitor
增加了一个日志模块WtLogger.py
,内部使用logging
模块来记录日志 - 进一步完善了
web-ui
的部分功能和配色 - 新增一个
CTPLoader
模块,主要用于调用底层CTPLoader
执行程序,用于从CTP
账号加载合约列表
0.5.1
- 同步
WonderTrader
核心为v0.5.1 - 新增一个
monitor
监控服务模块,其中包含http
服务、websocket
服务两种对web端提供的服务,同时新增了组合事件组件,用于接收组合转发出来的实时事件,还新增一个调度模块用于自动调度服务器上的定时任务 - 新增一个
web-ui
目录,用于管理wtpy
的web-ui
项目,暂时实现了PC版的监控界面,位于web-ui/console
下,web-ui
采用vue2+webpack
来实现,前端采用element-ui
界面库,能够实时提供强大的组合盘监控服务
0.5.0
- 同步
WonderTrader
核心为v0.5.0 - 引入了
hft
策略以后,策略可以直接调用行情接入模块Parsers
,所以调整C++底层模块的目录结构,方便策略调用 - 增加了
HftContext
以及BaseHftStrategy
两个针对HFT策略的基础模块 - 回测和实盘都完成了跟C++底层的HFT接口的对接
0.4.0
- 新增一个SEL引擎,用于调度应用层的选股策略,得到目标组合以后,提供自动执行服务,暂时只支持日级别以上的调度周期,执行会放到第二天
- 因为新增了选股调度引擎,所以全面重构
WtPorter
和WtBtPorter
导出的接口函数,以便调用的时候区分 - 新增一个独立的执行器模块
WtExecMon
,并导出C接口提供服务。主要是剥离了策略引擎逻辑,提供单纯的执行服务,方便作为单纯的执行通道,嫁接到其他框架之下 Windows
下的开发环境从vs2013
升级到vs2017
,boost1.72
和curl
需要同步升级
0.3.6
- 执行器使用线程池,减少对网络线程的时间占用
- 增加了一个实盘仿真模块
TraderMocker
,可以满足目前已经支持的股票和期货的仿真交易 - 更多接口支持(飞马、易盛iTap、
CTPMini
) - 内置执行算法增加
TWAP
- 继续完善文档
0.3.5
- 把手数相关的都从整数改成浮点数,主要目的是为了以后兼容虚拟币交易(虚拟币交易数量都是小数单位)
- 优化手数改成浮点数以后带来的日志输出不简洁的问题(浮点数打印会显示很多“0000”)
- 逐步完善文档
- XTP实盘适配,主要是修复
bug
0.3.4
- 正式开源的第一个版本
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
wtpy-0.9.9.3-py3-none-any.whl
(53.3 MB
view details)
File details
Details for the file wtpy-0.9.9.3-py3-none-any.whl
.
File metadata
- Download URL: wtpy-0.9.9.3-py3-none-any.whl
- Upload date:
- Size: 53.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9234a6e4d8f609fb4e40a243a52c04e2d3ebd516ab1f2f06b3b5bfeeeec6fed4 |
|
MD5 | 00eb861672a6401b7674ca802eef942c |
|
BLAKE2b-256 | b92b0c9a51019662197ab6eef07e8bea757ea70df56c25c45cd8525ed68589f8 |