脚本策略模式

上文提到了要想通过图形界面启动脚本交易模块则需要事先编写好脚本策略文件,因此在这个小节我们提供了一个模板test_.py供用户参考。其作用为:

  • 订阅两个品种的行情;

  • 打印合约信息;

  • 每隔3秒获取最新行情。

  1. from time import sleep
  2. from vnpy_scripttrader import ScriptEngine
  3. def run(engine: ScriptEngine):
  4. """"""
  5. vt_symbols = ["sc2209.INE", "sc2203.INE"]
  6. # 订阅行情
  7. engine.subscribe(vt_symbols)
  8. # 获取合约信息
  9. for vt_symbol in vt_symbols:
  10. contract = engine.get_contract(vt_symbol)
  11. msg = f"合约信息,{contract}"
  12. engine.write_log(msg)
  13. # 持续运行,使用strategy_active来判断是否要退出程序
  14. while engine.strategy_active:
  15. # 轮询获取行情
  16. for vt_symbol in vt_symbols:
  17. tick = engine.get_tick(vt_symbol)
  18. msg = f"最新行情, {tick}"
  19. engine.write_log(msg)
  20. # 等待3秒进入下一轮
  21. sleep(3)

其中engine.strategy_active用于控制While循环,可视作是脚本策略的开关:

  • 点击【启动】按钮,启动While循环,执行脚本策略;

  • 点击【停止】按钮,退出While循环,停止脚本策略。