文华WH8量化交易模型编写的基本流程和技巧学习(三)
文华WH8量化交易的基本流程:
第三步 模型的加载运行
通过历史回测和参数优化,模型的执行效果得到了大幅提升。但是仅有模型是不能自动交易的,还需要借助量化运行平台运行,自动下单。
量化软件有盒子和模组两种运行平台,对于习惯盯着K线图、指标、信号,有时还会手动干预下单的用户,更适合使用页面盒子功能;对于量化思路成熟,不需要手动干预,由策略全自动下单、加减仓、风控、资金管理的用户,则更适合使用模组功能。
(一)方式一:加入盒子自动运行
一些投资者想要由软件计算信号,根据自己的盘感手动执行下单,这样的思路就需要使用盒子来实现。
如下图,在新建页面盒子时建立【模型下单】属性的盒子,选择“弹出下单提示”,当满足条件时,会弹出如下图红框中所示的确认窗口,点击【多反空】按钮即可完成下单。
1、加载单合约到盒子运行步骤:
如下图,是如何添加单合约到盒子。投资者需要根据运行思路选择“模型下单”/“公式条件单”/“K线图”其中一种属性新建页面盒子。
不同属性的页面盒子执行思路如下:
【模型下单】适合有完整下单模型,由软件提示下单信号,根据盘感手动下单的客户
支持三种信号作用方式:显示信号不下单、弹出下单提示、不弹提示直接下单
【公式条件单】适合只有单边交易思路,借助量化模型执行公式条件单的客户
支持两种信号作用方式:显示信号不下单、不弹提示直接下单
【K线图】适合做画线程序化的客户,提供更多的画线程序化分析空间
不支持信号作用方式
注:
1、盒子属性只能在新建时选择,不支持更改
2、模型下单属性的盒子,不支持加载公式条件单模型
3、公式条件单属性的盒子,不支持加载非公式条件单模型
4、K线图属性的盒子,不支持加载带指令的模型
2、批量加载合约到盒子运行步骤:
如果想要通过一个公式同时监控多个合约运行,逐一添加合约到盒子就太麻烦了。我们可以把需要运行的合约添加到一个合约篮子中,在篮子报价页面点右键->【一篮子合约装入页面盒子】,便可将合约批量添加到盒子中,如下图所示。
(二)方式二:加入模组全自动运行
有的投资者想要实现出信号N秒后下单、一根K线执行多次信号,或者使用策略进行账户资金头寸管理、风险控制等,这些需求都需要在运行模组中实现。
如下图,是如何建立运行模组的操作。
模组加载之后的效果如下图,不同的页面区域分别显示分区模组、资金、信号、监控K线图和运行日志信息。
1、建立模组时交易合约的指定方式(如下图)
(1)模型中写入交易合约的此处会自动抓取模型中编写的交易合约
模型中没有写入交易合约的,可在此处手动设置。
(2)数据合约为指定交易合约(如IF1801):
A 模型中写入TRADE_OTHER函数的,按照TRADE_OTHER函数指定的合约作为交易合约。
B 模型中未写入TRADE_OTHER函数的,默认交易合约与数据合约一致。
(3)数据合约为主连/指数合约:
A 按照模型中TRADE_OTHER函数指定的合约作为交易合约。
B TRADE_OTHER函数写为TRADE_OTHER(‘AUTO’)时,可实现自动换月移仓。
2.模组的运行方式选择(如下图)
(1)延续回测信号运行方式:模组历史k线图显示回测的信号,后续以历史信号为基础,根据实时数据计算新信号。
模组重新启动影响:
如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,并且对这部分数据进行历史回测。回测信号与历史信号同时保留,加载成功之后,延续这些信号继续运行。
(2)忽略回测信号运行方式:模组历史k线图不显示信号,从模组加载时开始重新计算信号,不以任何历史信号为基础。
模组重新启动影响:
如果本次启动与前一次退出之间没有产生新数据,由于没有缺失数据,所以历史信号保留,加载完成之后,延续历史信号运行。
如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,但不会进行历史回测,并且清空所有的历史信号。加载成功之后,模组资金复原为初始资金,持仓清零,相当于重新开始运行。
注:选择忽略回测信号的运行方式,模组加载成功后,第一个有效信号必须是开仓信号。
(三)相关常见问题解答
1、如何设置页面盒子平铺窗口数?
答:软件右上方菜单【系统工具】—>【个性化设置】里设置平铺窗口个数,再单击页面盒子即可实现多窗口平铺。
注:双击页面盒子可以直接单窗口放大显示当前页面盒子。
2、页面盒子的模型如何删除?
答:如下图所示,是将页面盒子删除的方法。
3、页面盒子是否可以同时显示报价窗口?
答:可以,在【系统工具】—>【个性化设置】—>【程序化交易】—>【页面盒子平铺带报价窗口】处进行设置即可。
4、量能周期如何加载到盒子中?
答:在盒子中添加合约后,在窗口里切换成量能周期,然后点击右键 ->保存页块即可。
5、模组状态列表中各项代表的含义?
下单信号:模组运行过程中最后确认、下单的信号(包括信号消失),不显示没有确认的可能变化的信号。
信号手数:最后信号用户设置或模型写入的手数。
下单手数:模组运行过程中实际的下单手数。
理论持仓:BKVOL=根据信号下单手数计算的理论持仓,完全根据信号计算不受手动干预影响。
初始权益:模组本次运行开始时实际资金曲线的权益值。
当前权益:模组运行过程中实际资金曲线的权益值。
可用资金:根据实际资金曲线计算的实际的可用资金,可实时查看模组的实际可用资金情况。
实际资金曲线: =(初始权益 – 初始权益包含的浮动盈亏)+ 平仓盈亏(累计值)+ 当前浮动盈亏– 手续费(累计值)。
6、运行模组分区的使用技巧
创建复本:登录多账号状态下,可为不同的交易账号,创建相同的运行模组。
设置该模组为闲置状态:将该模组设置为退出运行状态,可一次退出分区内的所有模组。设置为闲置状态的模组不占用模组运行数量。
设置该模组为激活状态:将闲置状态的模组恢复为运行状态,可一次打开分区内的所有模组。
7、如果我不在电脑前,但想知道模型的运行情况怎么办?
答:可以使用【设置日志邮件】功能,该功能可以帮助您接收到模型运行动态的邮件,人不在电脑前一样可以监控自己的程序。在软件右上方【系统工具】->【个性化设置】中按下图的操作步骤勾选启用后,盒子和模组的交易动态会直接发送至绑定的邮箱中。
8、怎样实现手动打开模组时自动加载运行?
答:在软件右上方菜单【系统工具】->个性化设置->程序化交易,勾选【打开模组自动加载】项,再次打开模组时就会自动加载运行。
9、复核状态为什么显示为 –?
答:显示为–,表示最后信号不需要复核。
注:K线走完确认信号下单/不进行信号复核的信号执行方式,为不需要复核的信号。