策略回测

天勤的页面7 – 策略回测, 用于管理所有策略回测. 在这个页面上, 你可以回测策略, 并获取完整的回测报告.

_images/page_backtest_intro.png

开始一个回测

页面左侧为回测运行管理区.

_images/view_backtest_instance_list_intro.png

要启动新回测, 点击 [开始回测] 按钮. 点击按钮后, 需要选择一个策略文件:

_images/dialog_choose_strategy_file.png

点击【确认】后,如果策略有运行参数, 此时会出现一个弹出框, 让你填写参数. 如果策略没有参数, 会自动跳过这一步。

_images/dialog_param_backtest.png

做到这一步, 策略程序就正式执行回测了.

要停止一个执行中的回测, 只需双击它. 再次双击, 会从头开始重新回测.

天勤可以同时执行多个回测. 即使前一个回测任务正在执行中, 你依然可以开始另一个回测任务. 同时执行的回测任务没有数量限制.

回测结果

天勤的回测报告, 是在整个回测过程中不断更新的.

策略报告

策略报告展示策略程序回测的收益情况和资金曲线, 如下

_images/view_report_summary.png

策略成交记录

策略成交记录表展示策略程序在回测过程中产生的全部成交记录(不是报单记录)

_images/view_report_trade_list.png

点击成交记录中的任意一条, 会自动在策略交易图中定位到这笔成交的时间

策略交易图

策略交易图展示一个合约的交易和持仓情况

_images/view_chart_trade_rec.png

它包含了这些内容

  • 成交记录: 图上用红色和绿色的箭头标注实际发生的成交时间和成交价格
  • 持仓记录: 当策略在一段时间内有持仓时, 图上会用红绿色矩形框表示. 红色框表示这段时间的持仓方向与行情方向一致(盈利), 反之为绿色
  • 当前挂单: 如果策略当前还有挂单, 将在图上以横线虚线的形式显示
  • 当前持仓: 如果策略当前还有持仓, 将在图上以横线实线的形式显示
  • 成交记录定位: 如果你在成交记录表中选中一条成交记录, 图上会用紫色竖条标出这条成交的具体时间.

如果策略程序交易涉及多个合约, 可以在策略成交记录表中选择一条, 策略交易图将切换到选中的合约

要改变图表K线周期, 请使用右键菜单操作

如有需要, 你可以在策略交易图上添加技术指标或者手工画线

策略运行日志

策略程序中用 print 或 logging 输出的信息, 都会出现在这里

_images/view_strategy_log_list.png

再次回测

所有运行过的回测结果都会自动保存, 随时可以点击查看.

当策略程序修改以后, 如需再次运行回测, 只需对回测任务再次双击即可, 再次回测依然使用前次回测的参数.

回测与真实运行有哪些差别

我们在设计复盘功能时, 已尽量模仿真实交易的场景. 但由于种种限制, 与实盘运行相比, 回测时在行情和交易方面依然有一些重要的差别.

  • 由于回测时使用模拟交易, 成交情况与实盘交易不可避免地存在一些区别
    • 模拟交易要求报单价格大于等于对手盘价格才会成交, 例如下买单, 要求价格大于等于卖一价才会成交, 如果不能立即成交则会等到下次行情更新再重新判断
  • 回测模式下 quote 的更新频率由所订阅的 tick 和 k线周期确定:
    • 只要策略程序订阅了tick, 则对应合约的 quote 就会使用 tick 生成, 更新频率也和 tick 一致, 但只有这些字段: datetime/ask&bid_price1/ask&bid_volume1/last_price/highest/lowest/average/volume/amount/open_interest/ price_tick/price_decs/volume_multiple/max&min_limit&market_order_volume/underlying_symbol/strike_price
    • 如果策略程序没有订阅tick, 但是订阅了 k线, 则对应合约的 quote 会使用 k线生成, 更新频率和 k线的周期一致. 如果订阅了某个合约的多个周期的 k线, 则任一个周期的 k线有更新时, quote 都会更新. 使用 k线生成的 quote 的盘口由收盘价分别加/减一个最小变动单位, 并且 highest/lowest/average/amount 始终为 nan, volume 始终为0
    • 如果策略程序既没有订阅tick, 也没有订阅 k线或订阅的k线周期大于分钟线, 则 TqBacktest 会自动订阅分钟线来生成 quote
  • 回测模式下k线会在刚创建出来时和结束时分别更新一次, 在这之间 k线是不会更新的
  • 回测模式下 wait_update 每次最多推进一个行情时间

用复盘模式测试策略程序

除了回测以外, 你还可以选择用复盘模式下的模拟交易来测试你的策略程序.

  • 启动天勤复盘模式, 回到过去的某个时间. 详见 历史复盘
  • 按照 策略运行 的说明, 启动策略运行

todo: 回测与复盘的优缺点对比介绍