策略回测
历史数据
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支持实盘时添加多个策略,但回测时仅允许同时回测一个策略。