管理策略

初始化

策略实例创建成功后,就可以对该实例进行初始化了。点击该策略实例下的【初始化】按钮,若初始化成功,则如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/6.png

初始化完成后,可观察到此时该策略实例的【inited】状态已经为【True】。说明该策略实例已经加载过历史数据并完成初始化了。【trading】状态还是为【False】,说明此时该策略实例还不能开始自动交易。

请注意,与CTA策略不同,如果创建实例时输入错误的vt_symbol,多合约组合策略模块会在初始化时报错而不是在创建策略实例时报错,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/7.png

启动

策略实例初始化成功,【inited】状态为【True】时,才能启动该策略的自动交易功能。点击该策略实例下的【启动】按钮,即可启动该策略实例。成功后如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/10.png

可观察到此时该策略实例的【inited】和【trading】状态都为【True】。说明此时该策略实例已经完成了历史数据回放,而且此时策略内部的交易请求类函数(buy/sell/short/cover/cancel_order等),以及信息输出类函数(send_email/put_event等),才会真正执行并发出对应的请求指令到底层接口中(真正执行交易)。

在上一步策略初始化的过程中,尽管策略同样在接收(历史)数据,并调用对应的功能函数,但因为【trading】状态为【False】,所以并不会有任何真正的委托下单操作或者交易相关的日志信息输出。

如果启动之后,策略发出了委托,可以去VN Trader主界面【委托】栏查看委托订单细节,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/9.png

请注意,与CTA策略模块不同,多合约组合策略不提供本地停止单功能,所以UI界面上不会有停止单的显示区域了。

停止

如果启动策略之后,由于某些情况(如到了市场收盘时间,或盘中遇到紧急情况)想要停止、编辑或者移除策略,可以点击策略实例下的【停止】按钮,即可停止该策略实例的自动交易。成功后如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/11.png

组合策略引擎会自动将该策略之前发出的所有活动委托全部撤销,以保证在策略停止后不会有失去控制的委托存在。同时该策略实例最新的变量信息会被保存到.vntrader文件夹下的portfolio_strategy_data.json文件中。

此时可观察到该策略实例的【trading】状态已变为【False】,说明此时该策略实例已经停止自动交易了。

在多合约组合策略的实盘交易过程中,正常情况应该让策略在整个交易时段中都自动运行,尽量不要有额外的暂停重启类操作。对于国内期货市场来说,应该在交易时段开始前,启动策略的自动交易,然后直到收盘后,再关闭自动交易。因为现在CTP夜盘收盘后也会关闭系统,早上开盘前重启,所以夜盘收盘后也需要停止策略,关闭VN Trader了。

编辑

如果创建策略实例之后,想要编辑某个策略实例的参数(若已启动策略,需要先点击策略实例下的【停止】按钮,停止策略),可以点击该策略实例下的【编辑】按钮,会弹出参数编辑对话框,以供修改策略参数。如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/12.png

编辑完策略参数之后,点击下方的【确定】按钮,相应的修改会立即更新在参数表格中。

但是策略实例的交易合约代码无法修改,同时修改完后也不会重新执行初始化操作。也请注意,此时修改的只是.vntrader文件夹下porfolio_strategy_setting.json文件中该策略实例的参数值,并没有修改原策略文件下的参数。

修改前,json文件如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/18.png

修改后,json文件如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/17.png

若盘中编辑后想要再次启动策略,点击策略实例下的【启动】按钮即可再次启动该策略实例。

移除

如果创建策略实例之后,想要移除某个策略实例(若已启动策略,需要先点击策略实例下的【停止】按钮,停止策略),可以点击该策略实例下的【移除】按钮。移除成功后,图形界面左侧的策略监控组件中将不会再显示该策略实例的信息。如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/portfolio_strategy/13.png

此时.vntrader文件夹下的portfolio_strategy_setting.json文件也移除了该策略实例的配置信息。

状态跟踪

如果想要通过图形界面跟踪策略的状态,有两种方式:

  1. 调用put_event函数

    策略实例中所有的的变量信息,都需要把变量名写在策略的variables列表中,才能在图形界面显示。如果想跟踪变量的状态变化,则需要在策略中调用put_event函数,界面上才会进行数据刷新。

    有时用户会发现自己写的策略无论跑多久,变量信息都不发生变化,这种情况请检查策略中是否漏掉了对put_event函数的调用。

  2. 调用write_log函数

    如果不仅想观察到变量信息的状态变化,还想根据策略的状态输出基于自己需求的个性化的日志,可以在策略中调用write_log函数,进行日志输出。