策略回测

历史数据

WT不提供历史行情,需要自行从其他数据源中获取,并转换为WT使用的DSB格式,笔者这里提供了从米筐获取数据源的代码,供大家参考使用,rqdata。demo中定义了一个Ifeed基类,其他数据源通过继承Ifeed,并实现get_tick与get_bar即可实现。

通过运行store_his_bar与store_his_tick可以将获取的数据进行转换,并按照特定的结构组织存储。

回测配置

回测配置包括

回测环境

创建一个runBT.py文件,包含以下内容

from wtpy import WtBtEngine,EngineType              # 引入wtpy的回测引擎
from wtpy.apps import WtBtAnalyst                   # 引入分析工具

from Strategies.DualThrust import StraDualThrust    # 引入自己的策略

import os
import sys
os.chdir(sys.path[0])
if __name__ == "__main__":
    #创建一个运行环境,制定回测引擎为CTA,并制定日志配置文件
    engine = WtBtEngine(EngineType.ET_CTA,logCfg="logcfgbt.yaml")    
    # 初始化引擎,指定基础配置文件目录,以及策略配置文件
    engine.init('../common/', "configbt.yaml")
    # 确定回测时间,也可以在策略配置文件中指定
    engine.configBacktest(202201100930,202202011500)
    # 提交配置
    engine.commitBTConfig()

    # 初始化策略类
    straInfo1 = StraDualThrust(name='pydt_cu', code="SHFE.cu.HOT", barCnt=50, period="m5", days=30, k1=0.1, k2=0.1, isForStk=False)
    # 将策略加入到回测环境中
    engine.set_cta_strategy(straInfo1)
    # 开启回测
    engine.run_backtest()

    # 初始化分析器
    analyst = WtBtAnalyst()
    # 添加需要分析的策略,指定策略回测结果所在目录
    analyst.add_strategy("pydt_cu", folder="./outputs_bt/pydt_cu/", init_capital=500000, rf=0.02, annual_trading_days=240)
    # 开始分析
    analyst.run()

    kw = input('press any key to exit\n')
    # 结束,释放资源
    engine.release_backtest()
Tip

wt支持实盘时添加多个策略,但回测时仅允许同时回测一个策略。