脚本策略模式
加载启动
若使用脚本策略模式,需要提前编写相关脚本策略文件,如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循环,停止脚本策略。