提示:应期货监管部门要求,交易者必须确认上一交易日结算单后,才能进行当日交易。所以对于全自动量化交易者必须到文华软件交易界面->参数设置->交易安全->勾选“自动确认结算单”,否则将影响你的交易无法下单。手动交易者登录交易界面后可手动每日确认结算单,无需必须勾选“自动确认结算单”项。
库安算法交易软件使用宽语言编程,类C语言语法,支持各类复杂策略的开发,支持个性化的信号管理和精细化下单方案。公式属于编译型,编译后直接运行可执行文件,大大提高了公式的执行效率。
“基于K线数据”类型,指根据K线图表数据构建趋势策略,写入算法交易接管信号对下单精细化管理的模型。
公式由定义数据区、定义环境设置、设置跨合约跨周期引用关键字、定义参数、定义变量和主程序构成,如下图所示。除主程序外,其余部分可针对具体思路缺省。
“独立的算法交易模型”类型,指不调用K线图表数据,仅以盘口和账户数据构建的算法模型。
公式由调用数据区Data、定义变量Vars和主函数Begin—End三部分组成,如下图所示:
如下图,点击软件右上方角菜单【量化】->【编写公式】进行编写。
① 宽语言编程语法:http://www.wenhua.com.cn/guide/myQuant_zjyfhs2.htm
② 常见编写和机制说明:https://www.wenhua.com.cn/guide/myquant_zjyfhs6.htm
③ 账户函数取交易账户的数据,不需要在Data区定义;
④ 独立的算法交易模型不支持定义参数。
Wh9支持丰富的WFC开源函数类库,提供近200个开源函数,共700余个系统函数,支持金融统计类函数、循环执行函数、基本面函数、头寸类函数、手动下单辅助函数、期权类函数等交易建模所需的各类函数,支持用户自由实现各类量化交易思路。
如下图所示,在量化菜单下点击【函数列表】,可查看函数的具体分类和使用说明。
编写时,在编写平台上双击蓝色的系统函数,单击鼠标右键【查找函数说明】可查看函数具体使用说明。
如果要在模型中调用比较复杂的计算,而现有的函数又无法满足需要,则可以通过创建自定义函数来实现。
①自定义函数的结构:
一个自定义函数由参数定义、变量定义、主程序三部分构成,如下图所示:
②编写自定义函数:
如下图所示,是如何编写用户自定义函数。
③ 编写规则:
·自定义函数语法介绍:https://www.wenhua.com.cn/guide/myQuant_zjyfhs2.htm
·自定义函数不能直接加载在图表上,只能在其他自定义函数或公式应用中调用;
·未经过编译保存的自定义函数不能在其他公式中被引用;
. 信号指令根据K线图表数据计算信号,可显示信号图标并对信号做历史回测,不支持下单委托;
. 可用于基于图表数据计算的K线图公式,不可用于独立的算法模型;
. 常见思路:通过函数获取信号的价位、距离、信号到目前的高低点等;
. 信号指令如下表,具体使用方法请在“公式编写平台”->【帮助】->“指令说明”中查看:
指令 | 指令图标 | 指令函数 |
建立多头持仓 | BK(N,Price,IsCancel); | |
建立空头持仓 | SK(N,Price,IsCancel); | |
平多头持仓 | SP(N,Price,IsCancel); | |
平空头持仓 | BP(N,Price,IsCancel); | |
买平后买开新仓 | BPK(N,Price,IsCancel); | |
卖平后卖开新仓 | SPK(N,Price,IsCancel); |
. 不计算信号,根据条件直接发委托单,只能用于实时行情,不能历史回测;
. 可用于K线图公式/独立算法交易模型;
. 常见思路:获取账户信息、盘口高频数据等实现精细化下单;
. 函数用法如下,更多使用方法请在软件右上方菜单【量化】->“函数列表”中查看:
注:
1、两种指令可同时用于一个公式中;
2、交易需写入下单委托函数A_SendOrder,信号指令只在图表上显示信号标识,不能下单委托。
当有了模型后,我们通常是不敢马上进行实盘交易的,因为我们不了解模型,不知道它与我们的交易思路是否相符,盈利率是多少、胜率是多少、多久会出一次交易信号等等。只有了解了模型才能信任模型并放心的在实盘中应用它,所以在实盘交易前需要先检验模型在历史k线上的效果,了解模型的运行效果和局限性。
如下图,将模型加载到K线图,在K线图上点击鼠标右键->【模型回测报告】,即可查看详细的分析报告。通过回测分析报告中提供的各个参考指标,投资者可360度的检验模型好坏。
在K线上点击鼠标右键,勾选【显示权益曲线】,可直观的看到资金曲线的变化情况,检查模型的效果是否符合我们的预期要求。
资金最大回撤发生在哪一根K线?出现资金最大回撤时的几笔交易的盈亏都是多少?模型测试的每笔交易的时间和价格具体是多少?这一系列问题都可在“信号明细”中找到答案。如下图,加载模型回测后,在K线图上点击鼠标右键->【信号明细】,可查看详细的信号成交明细。
模型对于参数变动的敏感程度,反映了它对市场变化的适应能力,参数稍有风吹草动,收益率就大幅变动的模型显然是不稳定的。敏感性测试图以滑点、手续费等作为横坐标,以平均盈利/平均亏损、收益率等参数为纵坐标,用线型形态直观展现出参数变化对平均盈亏、胜率等指标的影响,测试模型的敏感程度,帮助我们找到更好的模型。
如下图,加载模型回测后,在K线图右键菜单【敏感性测试】,选好横坐标和纵坐标要考量的变量后,点击计算,查看敏感性测试图。
我们会发现在一段时间内表现很好的模型,过了一段时间就好像失效了一样,这种情况可能是由于模型参数不再适应当前市场行情引起的,我们需要统计历史数据寻找新的最优参数,但单凭人工计算几乎是不可能的。利用“参数优化”功能,可在指定的范围内让计算机筛选出最适合当前行情的参数。
如下图,加载模型回测后,在K线图右键菜单选择【参数优化】,可通过①【枚举】按钮,进行大范围海选抽样;通过②【遗传】按钮,在已经筛选的优质参数附近寻找更优的参数。参数优化原理参考“参数优化让模型达到最优”。
通过历史回测和参数优化,模型的执行效果得到了大幅提升。但是仅有模型是不能自动交易的,还需要借助量化平台运行,自动下单。
Wh9针对不同的期货量化策略提供不同的运行平台,趋势策略里写算法交易的模型需要在期货合约运行模组上基于图表数据运行,独立的算法交易模型则需要在算法交易模型运行池中后台运行。
对每个策略单独分配资金,进行独立的资金管理、风险控制,这样的需求可以在运行模组中实现。
如下图,是如何将模型加载到模组运行的操作:
完成上面的设置后,按照下图所示方法打开运行模组界面。
点击后会弹出如下图界面,不同的页面区域分别显示模组分区、资金、信号、监控K线图和运行日志信息。
数据合约是指加载模型计算理论信号的合约,交易合约是模型出信号后实际交易的合约,可自己设置。
注:
模型中写入Trade_Other指定交易合约函数,此处会自动抓取模型中编写的交易合约,不可设置;
数据合约为加权合约或主连合约时,写入Trade_Other:Auto;可实现自动换月移仓。
① 延续回测信号运行方式:模组运行单元中历史k线图显示回测的信号,后续以历史信号为基础,根据实时数据计算新信号。
模组重新启动影响:
如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,并且对这部分数据进行历史回测。回测信号与历史信号同时保留,加载成功之后,延续这些信号继续运行。
② 忽略回测信号运行方式:模组运行单元中历史k线图不显示信号,从加载时开始重新计算信号,不以任何历史信号为基础。
模组重新启动影响:
如果本次启动与前一次退出之间没有产生新数据,由于没有缺失数据,所以历史信号保留,加载完成之后,延续历史信号运行。
如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,但不会进行历史回测,并且清空所有的历史信号。加载成功之后,运行单元资金复原为初始资金,持仓清零,相当于重新开始运行。
注:选择忽略回测信号的运行方式,运行单元加载成功后,第一个有效信号必须是开仓信号。
独立的算法交易策略需要在专门的算法交易模型运行池中后台运行。如下图,是如何建立算法交易运行池:
建立好算法交易模型运行池后,可按照下图所示方法打开运行界面查看。