WonderTrader快速入门
安装wtpy
安装wtpy 打开命令行,输入以下指令直接安装
$ pip install wtpy --upgrade
或者直接下载whl文件到本地进行安装 阿里云镜像地址:https://mirrors.aliyun.com/pypi/simple/wtpy/ pipy地址:https://pypi.org/project/wtpy
安装完成以后,输入以下命令,可以查看wtpy的版本号
$ pip show wtpy
选择要运行的demo
github上提供了python下的几个demo
cta期货策略实盘 cta_fut
cta期货策略回测 cta_fut_bt
cta股票策略实盘 cta_stk
cta股票策略回测 cta_stk_bt
期货数据组件 datakit_fut
股票数据组件 datakit_stk
期货高频实盘 hft_fut
期货sel回测 sel_fut_bt
选择需要的demo,如期货回测demo cta_fut_bt
修改demo的配置
打开回测配置文件configbt.yaml
replayer: basefiles: commodity: ../common/commodities.json #品种列表 contract: ../common/contracts.json #合约列表 holiday: ../common/holidays.json #节假日列表 hot: ../common/hots.json #主力合约映射表 session: ../common/sessions.json #交易时间模板 mode: csv #回测历史数据存储,csv或者bin/wtp,其中bin/wtp都是一个意思 store: module: WtDataStorage #历史数据存储模块,如果是csv,该配置不生效 path: ../storage/ #历史数据存储跟目录 etime: 201912011500 #回测结束时间,精确到分钟 stime: 201909010900 #回测开始时间,精确到分钟 fees: ../common/fees.json #佣金配置文件 env: mocker: cta #回测引擎,cta/sel/hft/exec/uft
回测及结果分析
打开回测入口文件runBT.py,配置好回测引擎,加入要测试的策略,以及设置好绩效分析的参数
from wtpy import WtBtEngine,EngineType from wtpy.apps import WtBtAnalyst from Strategies.DualThrust import StraDualThrust if __name__ == "__main__": #创建一个运行环境,并加入策略 engine = WtBtEngine(EngineType.ET_CTA) engine.init('../common/', "configbt.yaml") engine.configBacktest(201909100930,201912011500) engine.configBTStorage(mode="csv", path="../storage/") engine.commitBTConfig() ''' 创建DualThrust策略的一个实例 name 策略实例名称 code 回测使用的合约代码 barCnt 要拉取的K线条数 period 要使用的K线周期,m表示分钟线 days 策略算法参数,算法引用的历史数据条数 k1 策略算法参数,上边界系数 k2 策略算法参数,下边界系数 isForStk DualThrust策略用于控制交易品种的代码 ''' straInfo = StraDualThrust(name='pydt_IF', code="CFFEX.IF.HOT", barCnt=50, period="m5", days=30, k1=0.1, k2=0.1, isForStk=False) engine.set_cta_strategy(straInfo) #开始运行回测 engine.run_backtest(bAsync=False) #创建绩效分析模块 analyst = WtBtAnalyst() #将回测的输出数据目录传递给绩效分析模块 analyst.add_strategy("pydt_IF", folder="./outputs_bt/pydt_IF/", init_capital=500000, rf=0.02, annual_trading_days=240) #运行绩效模块 analyst.run_new() kw = input('press any key to exit\n') engine.release_backtest()
然后启动runBT.py进行回测,回测的执行如下

回测完成以后,打开生成的绩效分析报表(xxxx.xlsx),则可以查看策略的回测绩效
回测绩效概览

回测收益详情
从上图的绩效分析可以看出,DualThrust策略,针对股指期货主力合约,在20190919到20191201这段时间内,这组参数下进行回测,一直处于回撤的状态,累计亏损达20%。可见,这不是一组好的参数。接下来我们调整参数,将K1和K2改成0.5和0.3,再进行回测和分析,得到如下结果
调整后的回测绩效总览

从上图可以看出,参数调整过以后的绩效远远好于调整之前。
最后进行回测分析总结 让我们简单的分析一下参数调整前和参数调整后绩效悬殊的原因。 熟悉DualThrust的朋友肯定知道:DualThrus的信号原理其实就是价格突破。当上边界系数k1和下边界系数k2较小的时候,信号出现较多,但是容易遇到假突破,从而导致交易成本上升,最终出现净亏损;当k1和k2较大的时候,信号变少,但是又容易错失交易机会。 调整之前的k1和k2较小,调整以后的k1和k2也不是特别大,从而达到了过滤大部分假突破,降低交易成本,并保证一定的灵敏度的效果,所以才会有较大幅度的改善。 大家有兴趣的话,可以自行尝试一下,将k1和k2改成不同的组合,相信能够有更好的回测结果。