tqsdk.backtest - 策略回测工具

class tqsdk.backtest.TqBacktest(start_dt, end_dt)

天勤回测类

该类只针对天勤外部IDE编写使用, 在天勤内编写完策略后选择该策略直接点击回测即可

将该类传入 TqApi 的构造函数, 则策略就会进入回测模式

回测模式下 k线会在刚创建出来时和结束时分别更新一次, 在这之间 k线是不会更新的

回测模式下 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

模拟交易要求报单价格大于等于对手盘价格才会成交, 例如下买单, 要求价格大于等于卖一价才会成交, 如果不能立即成交则会等到下次行情更新再重新判断

回测模式下 wait_update 每次最多推进一个行情时间

回测结束后会抛出 BacktestFinished 例外

创建天勤回测类

Args:

start_dt (date/datetime): 回测起始时间, 如果类型为 date 则指的是交易日, 如果为 datetime 则指的是具体时间点

end_dt (date/datetime): 回测结束时间, 如果类型为 date 则指的是交易日, 如果为 datetime 则指的是具体时间点