脚本策略模式

加载启动

  • 若使用脚本策略模式,需要提前编写相关脚本策略文件,如demo_arbitrage.py,

  • 然后打开VnTrader,在菜单栏”功能”处打开”脚本策略”,在跳出的脚本策略窗口最上方打开/Path-To-demo_arbitrage.py/demo_arbitrage.py,然后

  • 点击如下图的“启动”。https://static.vnpy.com/upload/temp/bf6b06f8-26e9-466b-b3e0-5b3a6f99e6ba.jpg

脚本策略

脚本策略文件编写需要遵循一定格式,下面提供使用模板,其作用为:

  • 订阅两个品种的行情;

  • 打印合约信息;

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

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

运行控制

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

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

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