添加策略

用户可以基于编写好的CTA策略模板(类)来创建不同的策略实例(对象)。策略实例的好处在于,同一个策略可以同时去交易多个品种合约,并且每个实例的参数可以是不同的。

在左上角的下拉框中选择要交易的策略名称,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_strategy/28.png

请注意,显示的策略名称是策略类(驼峰式命名)的名字,而不是策略文件(下划线模式命名)的名字。

选择好策略类之后,点击【添加策略】,会弹出添加策略对话框,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_strategy/5.png

在创建策略实例时,需要配置相关参数,各参数要求如下:

  • 实例名称

    • 实例名称不能重名;
  • 合约品种

    • 格式为vt_symbol(合约代码 + 交易所名称);

    • 一定要是实盘交易系统中可以查到的合约名称;

    • 一般选择该期货品种当前流动性最好的月份,比如写本文时是2021年3月2日,此时的螺纹钢主力合约为rb2105.SHFE;

  • 参数设置

    • 显示的参数名是策略里写在parameters列表中的参数名;

    • 默认数值为策略里的参数的默认值;

    • 由上图可观察到,参数名后面<>括号中显示的是该参数的数据类型,在填写参数时应遵循相应的数据类型。其中,<class ‘str’>是字符串、<class ‘int’>是整数、<class ‘float’>是浮点数;

    • 请注意,如果某个参数可能会调整至有小数位的数值,而默认参数值是整数(比如1)。请在编写策略时,把默认参数值设为浮点数(比如1.0)。否则策略会默认该项参数为整数,在后续【编辑】策略实例参数时,会只允许填进整数。

参数配置完成后,点击【添加】按钮,则开始创建策略实例。创建成功后可在左侧的策略监控组件中看到该策略实例,如下图所示:

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

策略监控组件顶部显示的是策略实例名、合约品种名、策略类名以及策略作者名(在策略里定义的author)。顶部按钮用于控制和管理策略实例,第一行表格显示了策略内部的参数信息(参数名需要写在策略的parameters列表中图形界面才会显示),第二行表格则显示了策略运行过程中的变量信息(变量名需要写在策略的variables列表中图形界面才会显示)。【inited】字段表示当前策略的初始化状态(是否已经完成了历史数据回放),【trading】字段表示策略当前是否能够开始交易。

从上图可观察到,此时该策略实例的【inited】和【trading】状态都为【False】。说明该策略实例还没有初始化,也还不能发出交易信号。

策略实例创建成功后,该策略实例的配置信息会被保存到.vntrader文件夹下的cta_strategy_setting.json文件中。

创建失败

以下为创建策略实例失败的几种可能情况:

  • 如果添加了同名的策略实例,则会创建失败,图形界面输出“创建策略失败,存在重名”的日志信息,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_strategy/31.png

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_strategy/8.png

  • 如果合约品种没有填写交易所名称,则会创建失败,图形界面输出“创建策略失败,本地代码缺失交易所后缀”的日志信息,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_strategy/32.png

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

  • 如果合约品种的交易所名称填错,则会创建失败,图形界面输出“创建策略失败,本地代码的交易所后缀不正确”的信息,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/cta_strategy/33.png

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