策略回测

下载完历史数据后,需要配置以下字段:交易策略、手续费率、交易滑点、合约乘数、价格跳动、回测资金。这些字段主要对应BacktesterEngine类的run_backtesting函数。

若数据库已存在历史数据,无需重复下载,直接从本地数据库中导入数据进行回测。注意,vt_symbol的格式为品种代码.交易所的形式,如IF1908.CFFEX,导入时会自动将其分割为品种和交易所两部分

  1. def run_backtesting(
  2. self, class_name: str, vt_symbol: str, interval: str, start: datetime,
  3. end: datetime, rate: float, slippage: float, size: int, pricetick: float,
  4. capital: int, setting: dict
  5. ):

点击下方的“开始回测”按钮可以开始回测:首先会弹出如图所示的参数配置窗口,用于调整策略参数。该设置对应的是run_backtesting()函数的setting字典。

https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/cta_backtester/parameter_setting.png

点击“确认”按钮后开始运行回测,同时日志界面会输出相关信息,如图。

https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/cta_backtester/backtesting_log.png

回测完成后会显示统计数字图表。

统计数据

用于显示回测完成后的相关统计数值, 如结束资金、总收益率、夏普比率、收益回撤比。

https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/cta_backtester/show_result.png

图表分析

以下四个图分别是代表账号净值、净值回撤、每日盈亏、盈亏分布。

https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/cta_backtester/show_result_chat.png

K线图

K线图是基于PyQtGraph开发的,整个模块由以下五大组件构成:

  • BarManager:K线序列数据管理工具

  • ChartItem:基础图形类,继承实现后可以绘制K线、成交量、技术指标等

  • DatetimeAxis:针对K线时间戳设计的定制坐标轴

  • ChartCursor:十字光标控件,用于显示特定位置的数据细节

  • ChartWidget:包含以上所有部分,提供单一函数入口的绘图组件

在回测完毕后,点击“K线图表”按钮即可显示历史K线行情数据(默认1分钟),并且标识有具体的买卖点位,如下图。

https://vnpy-community.oss-cn-shanghai.aliyuncs.com/forum_experience/yazhang/cta_backtester/bar_chart.png