Skip to main content

Python Sub Framework Of WonderTrader

Project description

WonderTrader2.png

wtpy

这是WonderTrader针对Python3适配的子框架

wtpy子框架简介

  • apps子模块
    • WtBtAnalyst.py 回测分析模块,主要是利用回测生成的数据,计算各项回测指标,并输出到excel文件
    • WtCtaOptimizer CTA优化器,主要是利用multiprocessing并行回测,并统计各项交易指标,最后将统计结果汇总输出到csv文件
    • WtHotPicker 国内期货换月规则辅助模块,支持从交易所网站页面爬取数据确定换月规则,也支持解析datakit每日收盘生成的snapshot.csv来确定换月规则
  • wrapper子模块

    该模块主要包含了所有和C++底层对接的接口模块

    • ContractLoader.py 主要用于通过CTP等接口加载基础的commodities.jsoncontracts.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子模块

    该模块主要包含了内置的监控服务,提供了Httpwebsocket两种连接方式

    • 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.jsonstocks.json文件,并提供查询方法
    • CtaContext.py 主要定义了CTA策略的上下文,可以理解为单策略的运行环境
    • HftContext.py 主要定义了HFT策略的上下文,可以理解为单策略的运行环境
    • SelContext.py 主要定义了SEL策略的上下文,可以理解为单策略的运行环境
    • ExtToolDefs.py 扩展模块定义文件,主要定义了一些扩展模块的基础接口
    • ProductMgr.py 品种管理器,主要用于Python环境中的合约属性、品种属性查询
    • SelContext.py 选股策略上下文,即选股策略直接交互的API
    • SessionMgr.py 交易时间模板管理器,主要用于Python环境中的交易时段模板管理
    • StrategyDefs.py 各引擎策略基础定义模块,定义了CTAHFTSEL三种策略基类
    • WtBtEngine.py 回测引擎转换模块,主要封装底层接口调用
    • WtDtEngine.py 数据引擎转换模块,主要封装底层接口调用
    • WtEngine.py 交易引擎转换模块,主要封装底层接口调用

如何让获取

延伸项目

相关资源


更新日志

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

0.9.4

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

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部分的缓存替换原来的WtKlinDataWtHftData,在数据缓存方面,大致可以提升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
  • 优化了WtWrapperWtBtWrapper,将原来的global变量全部改成局部变量,可以提升运行效率
  • 通过singleton修饰器限定Wrapper为单例,和底层统一
  • 新增一个WtMsgQue模块,通过WtMQWrapper模块调用底层的WtMsgQue模块
  • EventReceiver模块改成调用WtMsgQue来实现,并按照回测和实盘框架分别实现EventReceiver
  • WatchDog启动和监控进程的机制进行了优化,不再使用threading挂载进程句柄的方式,而是利用cmdlineprocessid进行检查和监控,这样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_barsread_dsb_ticks接口,同时新增read_dmb_barsread_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_barstrans_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->capacitycount->size,便于用户理解
  • WtDtHelper模块新增两个接口read_dsb_ticksread_dsb_bars,同步调用C++底层WtDtHelper模块的同名接口,用于直接读取dsb文件
  • CTA策略新增一个stra_get_last_exittime用于获取上一个出场信号
  • WtBeEngineWtCtaOptimizer两个模块都增加了对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策略APISEL策略API各新增一个stra_get_all_position,用于获取全部的持仓数据
  • 完善了WtBtWrapper模块中对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++底层的WtDtHelper模块,给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目录,用于管理wtpyweb-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引擎,用于调度应用层的选股策略,得到目标组合以后,提供自动执行服务,暂时只支持日级别以上的调度周期,执行会放到第二天
  • 因为新增了选股调度引擎,所以全面重构WtPorterWtBtPorter导出的接口函数,以便调用的时候区分
  • 新增一个独立的执行器模块WtExecMon,并导出C接口提供服务。主要是剥离了策略引擎逻辑,提供单纯的执行服务,方便作为单纯的执行通道,嫁接到其他框架之下
  • Windows下的开发环境从vs2013升级到vs2017boost1.72curl需要同步升级

0.3.6

  • 执行器使用线程池,减少对网络线程的时间占用
  • 增加了一个实盘仿真模块TraderMocker,可以满足目前已经支持的股票和期货的仿真交易
  • 更多接口支持(飞马、易盛iTap、CTPMini
  • 内置执行算法增加TWAP
  • 继续完善文档

0.3.5

  • 把手数相关的都从整数改成浮点数,主要目的是为了以后兼容虚拟币交易(虚拟币交易数量都是小数单位)
  • 优化手数改成浮点数以后带来的日志输出不简洁的问题(浮点数打印会显示很多“0000”)
  • 逐步完善文档
  • XTP实盘适配,主要是修复bug

0.3.4

  • 正式开源的第一个版本

Project details


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)

Uploaded Python 3

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

Hashes for wtpy-0.9.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9234a6e4d8f609fb4e40a243a52c04e2d3ebd516ab1f2f06b3b5bfeeeec6fed4
MD5 00eb861672a6401b7674ca802eef942c
BLAKE2b-256 b92b0c9a51019662197ab6eef07e8bea757ea70df56c25c45cd8525ed68589f8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page