脚本策略模式

加载启动

  • 若使用脚本策略模式,需要提前编写相关脚本策略文件,如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. def run(engine: ScriptEngine):
  4. """"""
  5. vt_symbols = ["IF1912.CFFEX", "rb2001.SHFE"]
  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循环,停止脚本策略。