Skip to content

CTA策略模块策略实盘

vn.py edited this page Aug 29, 2017 · 1 revision

作者:震震男

目录

本章以策略AtrRsiStrategy为例,介绍VnTrader下策略文件的放置目录、参数配置以及实盘交易中的注意事项,策略文件位于项目目录下vnpy\trader\app\ctaStrategy\strategy\strategyAtrRsi.py

策略文件目录

v1.7版本以后的VnTrader的CTA策略模块,已经支持加载当前运行时目录下的策略文件,注意策略文件必须以strategy开头(如strategyAtrRsi.py),同时文件中的策略类名称中必须包含Strategy(如AtrRsiStrategy)。

实盘配置文件

对于同一个策略类,可以通过设定不同的参数和交易品种来创建不同的实例,用户可以在examples\VnTrader\CTA_setting中配置实例。

每个实例的配置项有:

  • name:实例名字,不能重复
  • className: 策略类名,这里使用上一步骤中取的AtrRsiStrategy
  • vtSymbol:实例交易的品种
  • 策略中定义的参数,没有在这里给出的参数将使用策略里赋予的默认值。

一个示范的配置如下,这里定义了 AtrRsiStrategy策略的两个实例,一个交易rb,另一个交易MA,并且设置了几个参数。

[
    {
        "name": "double ema",
        "className": "DoubleEmaDemo",
        "vtSymbol": "IF1602"
    },

    {
        "name": "AtrRsi-rb",
        "className": "AtrRsi",
        "vtSymbol": "rb1705"
    },

    {
        "name": "AtrRsi-MA",
        "className": "AtrRsi",
        "vtSymbol": "MA705",
        "atrLength": 13,
        "atrMaLength": 5,
        "rsiLength": 100
    }
]

使用监控组件

CTA策略界面

打开VnTrader,连接交易接口后,点击菜单栏的 功能->CTA策略可以打开如上图所示的CTA策略模块的实盘交易管理界面,其中各区域作用如下:

  1. 点击加载策略按钮,策略引擎会读取CTA_setting.json中的策略配置,生成具体的策略实例(下面称为“策略”),并显示在管理界面上;

  2. 点击初始化按钮会调用策略的onInit函数,并完成策略开始交易前的初始化操作,此时策略可以计算参数指标等,但是无法发出委托;

  3. 点击启动按钮会调用策略的onStart函数,正式启动策略的交易功能,此时策略基于收到的行情、成交、委托等数据进行相应的逻辑判断,并发出委托;

  4. 点击停止按钮会调用策略的onStop函数,撤销当前策略已发出的所有未成交委托,并停止策略的交易功能,恢复到无法发出委托的状态;

  5. 如果加载了多个策略,窗口最上方的全部初始化全部启动全部停止可以一次性对所有的策略执行相应的操作,省去多次点击。

  6. 显示策略参数、状态,以及策略中指定输出的中间变量值,以监控策略运行。

  7. Log 输出窗口,策略可调用 writeCtaLog() 函数在这里输出。

实盘运维细节

一些实盘运行中可能遇到的问题和需要注意的细节。

ImportError: No module named talib

该错误是由于示例策略中使用的 Ta-Lib 没有安装,请按教程说明安装。

策略初始化时载入历史数据

以 AtrRsiStrategy 为例,在初始化时,需要过去10天的历史数据:

# 载入历史数据,并采用回放计算的方式初始化策略数值
initData = self.loadBar(self.initDays)

此时会从数据库里读取vtSymbol所设定的品种的数据,比如策略正在交易rb1705 合约,数据库中需要有名为rb1705的 Collection才能读入数据。如果希望从自定义的Collection(例如名为rb000的主力连续数据)读取历史行情,需要自行调用 self.ctaEngine.loadBar()函数。

You can’t perform that action at this time.