脚本策略模式
加载启动
若使用脚本策略模式,需要提前编写相关脚本策略文件,如demo_arbitrage.py,
然后打开VnTrader,在菜单栏”功能”处打开”脚本策略”,在跳出的脚本策略窗口最上方打开/Path-To-demo_arbitrage.py/demo_arbitrage.py,然后
点击如下图的“启动”。
脚本策略
脚本策略文件编写需要遵循一定格式,下面提供使用模板,其作用为:
订阅两个品种的行情;
打印合约信息;
每隔3秒获取最新行情。
- from time import sleep
- from vnpy.app.script_trader import ScriptEngine
- def run(engine: ScriptEngine):
- """"""
- vt_symbols = ["IF1912.CFFEX", "rb2001.SHFE"]
- # 订阅行情
- engine.subscribe(vt_symbols)
- # 获取合约信息
- for vt_symbol in vt_symbols:
- contract = engine.get_contract(vt_symbol)
- msg = f"合约信息,{contract}"
- engine.write_log(msg)
- # 持续运行,使用strategy_active来判断是否要退出程序
- while engine.strategy_active:
- # 轮询获取行情
- for vt_symbol in vt_symbols:
- tick = engine.get_tick(vt_symbol)
- msg = f"最新行情, {tick}"
- engine.write_log(msg)
- # 等待3秒进入下一轮
- sleep(3)
运行控制
engine.strategy_active用于控制While循环,可视作是脚本策略的开关:
点击“启动”按钮,启动While循环,执行脚本策略;
点击“停止”按钮,退出While循环,停止脚本策略。