源码文件:vnpy_ctastrategy.strategies.test_strategy

1. 策略概述

TestStrategy 并不是一个用于实盘获利的交易策略,而是一个调试工具。 它的主要作用是帮助开发者验证:

  1. 交易接口(Gateway)是否连接正常。
  2. 策略引擎(CtaEngine)是否能正确收发订单。
  3. 测试下单函数的执行耗时。
  • 基类CtaTemplate
  • 触发机制:基于 Tick 计数,每隔 N 个 Tick 执行一个测试动作。

2. 测试流程

策略内部维护了一个函数列表 self.test_funcs,按顺序存放了要测试的动作:

  1. 市价单测试 (test_market_order)
    • 以涨停价 (limit_up) 发出买单,模拟市价成交(在期货中通常用对手价或超价模拟市价)。
  2. 限价单测试 (test_limit_order)
    • 以跌停价 (limit_down) 发出买单,模拟挂单(通常不会立即成交)。
  3. 全撤测试 (test_cancel_all)
    • 调用 cancel_all() 撤销之前挂出的所有未成交订单。
  4. 停止单测试 (test_stop_order)
    • 发出本地停止单(Stop Order),验证策略引擎的触发机制。

3. 核心代码逻辑

on_tick 中,每收到 test_trigger (默认10) 个 Tick,就弹出一个测试函数执行,并计算耗时。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
self.tick_count += 1
if self.tick_count >= self.test_trigger:
    self.tick_count = 0

    if self.test_funcs:
        test_func = self.test_funcs.pop(0) # 取出下一个测试任务

        start = time()
        test_func() # 执行
        time_cost = (time() - start) * 1000 # 计算耗时(ms)
        self.write_log(f"耗时{time_cost}毫秒")

4. 使用场景

当你刚配置好一个新的交易接口(比如连接到一个新的仿真环境),或者修改了底层引擎代码后,可以先运行这个策略:

  • 如果日志里能看到“耗时xx毫秒”且没有报错,说明发单链路是通的。
  • 如果能在交易软件里看到对应的委托单,说明柜台交互是正常的。