wh9 期货自动化交易/程序化交易的基本流程

学习资料 08-16 10:32发布

wh9 可以实现期货自动化、期权自动化、套利自动化交易。

自动化或程序化交易者的最终极的理想,就是实现无人值守自动买卖、充分执行力交易者的思想

在wh9 中,期货交易实现自动化的基本流程主要是:

1、编写模型

2、回测与优化

3、加载自动运行


注意:

应期货监管部门要求,交易者必须确认上一交易日结算单后,才能进行当日交易。所以对于自动化交易者必须到:

文华软件交易界面->参数设置->交易安全->勾选“自动确认结算单”,否则将影响你的交易无法下单。手动交易者登录交易界面后可手动每日确认结算单,无需必须勾选“自动确认结算单”项。


(一)整理思路,编写模型

1、宽语言模型构建方法

库安算法交易软件使用宽语言编程,类C语言语法,支持各类复杂策略的开发,支持个性化的信号管理和精细化下单方案。公式属于编译型,编译后直接运行可执行文件,大大提高了公式的执行效率。


(1)基于K线数据的公式结构

“基于K线数据”类型,指根据K线图表数据构建趋势策略,写入算法交易接管信号对下单精细化管理的模型。

公式由定义数据区、定义环境设置、设置跨合约跨周期引用关键字、定义参数、定义变量和主程序构成,如下图所示。除主程序外,其余部分可针对具体思路缺省。

(2)独立算法交易模型的公式结构

“独立的算法交易模型”类型,指不调用K线图表数据,仅以盘口和账户数据构建的算法模型。

公式由调用数据区Data、定义变量Vars和主函数Begin—End三部分组成,如下图所示:

(3)编写公式:

如下图,点击软件右上方角菜单【公式】->【编写公式】进行编写。


2、查找函数
(1)系统函数

Wh9支持丰富的WFC开源函数类库,提供近200个开源函数,共700余个系统函数,支持金融统计类函数、循环执行函数、基本面函数、头寸类函数、手动下单辅助函数、期权类函数等交易建模所需的各类函数,支持用户自由实现各类量化交易思路

(2)自定义函数

如果要在模型中调用比较复杂的计算,而现有的函数又无法满足需要,则可以通过创建自定义函数来实现。

①自定义函数的结构:

一个自定义函数由参数定义、变量定义、主程序三部分构成,如下图所示:

②编写自定义函数:

如下图所示,是如何编写用户自定义函数。

③ 编写规则:

自定义函数不能直接加载在图表上,只能在其他自定义函数或公式应用中调用;
·未经过编译保存的自定义函数不能在其他公式中被引用;


3、信号指令和下单委托函数
(1)六种信号指令:BK、SK、SP、BP、BPK、SPK

. 信号指令根据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);

(2)下单委托函数:A_SendOrder

. 不计算信号,根据条件直接发委托单,只能用于实时行情,不能历史回测;

. 可用于K线图公式/独立算法交易模型;

. 常见思路:获取账户信息、盘口高频数据等实现精细化下单;

. 函数用法如下,更多使用方法请在软件右上方菜单【公式】->“函数列表”中查看:

注:
1、两种指令可同时用于一个公式中;
2、交易需写入下单委托函数A_SendOrder,信号指令只在图表上显示信号标识,不能下单委托。


(二)模型测试和优化

1、测试模型在历史K线上的效果(查看信号回测报告)

当有了模型后,我们通常是不敢马上进行实盘交易的,因为我们不了解模型,不知道它与我们的交易思路是否相符,盈利率是多少、胜率是多少、多久会出一次交易信号等等。只有了解了模型才能信任模型并放心的在实盘中应用它,所以在实盘交易前需要先检验模型在历史k线上的效果,了解模型的运行效果和局限性。

如下图所示,是如何将公式策略加载到合约主图上进行信号回测。模型回测后可查看详细的模型分析报告,通过分析报告中提供的各个参考指标,投资者可360度检验模型好坏。



如下图点击【资金曲线】,可直观查看资金曲线的变动情况,检验模型效果是否符合预期要求。

2、了解模型(查看模型信号明细)

资金最大回撤发生在哪一根K线?出现资金最大回撤时的几笔交易的盈亏都是多少?模型测试的每笔交易的时间和价格具体是多少?这一系列问题都可在“信号明细”中找到答案。点击下图红框位置的【信号明细】,可查看到以表格形式展示的全部信号明细。


3、测试模型敏感度

模型对于参数变动的敏感程度,反映了它对市场变化的适应能力,参数稍有风吹草动,收益率就大幅变动的模型显然是不稳定的。敏感性测试图以滑点、手续费等作为横坐标,以平均盈利/平均亏损、收益率等参数为纵坐标,用线型形态直观展现出参数变化对平均盈亏、胜率等指标的影响,测试模型的敏感程度,帮助我们找到更好的模型。

如下图红框位置所示,选择横坐标和纵坐标要考量的变量后,点击【计算】按钮可查看敏感性测试图。


4、优化模型参数

我们会发现在一段时间内表现很好的模型,过了一段时间就好像失效了一样,这种情况可能是由于模型参数不再适应当前市场行情引起的,我们需要统计历史数据寻找新的最优参数,但单凭人工计算几乎是不可能的。利用“参数优化”功能,可在指定的范围内让计算机筛选出最适合当前行情的参数。

如下图所示,通过①【枚举】按钮,进行大范围海选抽样;通过②【遗传】按钮,在已经筛选的优质参数附近寻找更优的参数。参数优化原理参考“参数优化让模型达到最优”。


(三)运行模型自动交易

通过历史回测和参数优化,模型的执行效果得到了大幅提升。但是仅有模型是不能自动交易的,还需要借助量化平台运行,自动下单。

Wh9针对不同的期货程序化策略提供不同的运行平台,趋势策略里写算法交易的模型需要在期货合约运行模组和期货账号交易池上基于图表数据运行,独立的算法交易模型则需要在算法交易模型运行池中后台运行。


1、添加模型到运行模组全自动运行

对每个策略多带带分配资金,进行独立的资金管理、风险控制,这样的需求可以在运行模组中实现。

如下图,是如何建立运行模组的操作:

完成上面的设置后,按照下图所示方法打开运行模组界面。

点击后会弹出如下图界面,不同的页面区域分别显示分区模组、资金、信号、监控K线图和运行日志信息。

(1)建立模组时交易合约的指定方式(如下图)

数据合约是指加载模型计算理论信号的合约,交易合约是模型出信号后实际交易的合约,可自己设置。

注:
模型中写入Trade_Other指定交易合约函数,此处会自动抓取模型中编写的交易合约,不可设置;
数据合约为指数或主连合约时,写入Trade_Other:Auto;可实现自动换月移仓。

(2)模组的运行方式选择(如下图)


① 延续回测信号运行方式:模组历史k线图显示回测的信号,后续以历史信号为基础,根据实时数据计算新信号。
模组重新启动影响:
如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,并且对这部分数据进行历史回测。回测信号与历史信号同时保留,加载成功之后,延续这些信号继续运行。
② 忽略回测信号运行方式:模组历史k线图不显示信号,从模组加载时开始重新计算信号,不以任何历史信号为基础。
模组重新启动影响:
如果本次启动与前一次退出之间没有产生新数据,由于没有缺失数据,所以历史信号保留,加载完成之后,延续历史信号运行。
如果本次启动与前一次退出之间产生新数据,缺失的数据会自动申请,但不会进行历史回测,并且清空所有的历史信号。加载成功之后,模组资金复原为初始资金,持仓清零,相当于重新开始运行。
注:选择忽略回测信号的运行方式,模组加载成功后,第一个有效信号必须是开仓信号。



2、添加模型到期货账号交易池全自动运行

一些投资者会同时监控多个趋势策略的信号来制定下单方案,例如,当所有模组都是同向开仓信号时再下单、一个合约建立多个模组进行锁仓、加减仓等头寸控制,wh9为这类用一个算法交易模型同时调用多个趋势模组信号下单的策略提供专门的期货账号交易池运行,可按策略组合分区运行管理。

如下图所示,是如何将多个模组绑定一个算法交易运行的方法:

第一步:加载多个模组到交易池:

第二步:对交易池加载算法交易模型:

加载后,算法模型可以自动读取同一交易池中的模组信号,统计信号并按照写好的下单方案自动执行下单,如下图所示。

3、独立算法交易模型运行池

独立的算法交易策略需要在专门的算法交易模型运行池中后台运行。如下图,是如何建立算法交易运行池:


建立好算法交易模型运行池后,可按照下图所示方法打开运行界面查看。

赞赏支持

免责声明:本站言论版权归原创作者所有,其原创性及文中陈述文字和内容仅代表作者个人观点,仅作参考;如果您对原创归属或转载有异议,请 举报文章 我们将补齐出处或者删除;转载本站内容请注明出处。