文华财经程序化交易应用指南
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、WH8(8.1.203)程序化交易应用指南
我们把程序化应用,从初级应用到高级应用,分成6个级别来介绍wh8的程序化功能。
(一)一级:信号预警盒子
信号预警盒子是一种为程序化半自动下单的用户提供的功能,客户可以在信号预警盒子自己设定预警的模型,在条件满足的时候,系统能够会弹出弹出预警窗口,确认就可以直接下单了。
这个功能类似以前版本的半自动,但是增加了显示加载模型运行情况的列表,我们叫做盒子。
盒子还可以后台运行,加载了信号预警以后,可以做看盘等其他操作,不影响模型出信号的。
信号预警盒子的主要功能:
1、点击盒子列表中的一行,可以打开k线图上查看设定预警模型的信号。
2、支持设置信号持续时间和信号消失确认时间
(二)二级:公式条件单
公式条件单是为只按照某种特定条件进行交易的用户,提供的一种灵活的程序化执行方式。
公式条件单让条件单不再停留在简单的价格条件和时间条件上,可以利用文华麦语言编写出思路更广的条件。
客户可以在组群中加载条件单模组,系统根据写入的条件进行自动交易。
公式条件单的主要功能:
1、只写开仓条件,按照条件自动开仓;
2、只写平仓条件,将初始化带入模组的持仓自动平掉;
3、信号独立,没有过滤机制。
4、可以随意进行主观干预。
5、可以后台运行。
公式条件单在WH8中的运行规则,请参考下面链接
/popwin/tiaojiandan-sm.htm
(三)三级:趋势跟踪策略(过滤模型)
为有完整交易策略的投资者提供的全自动程序化交易。
交易策略中一开一平,且交易手数开平对应,不会出现锁仓和加仓的情况。
客户自己在组群中加载模组后,出现信号按照信号执行方式确认后自动下单交易。
趋势跟踪策略的主要功能:
1、可以通过麦语言,编写各类技术分析指标、形态、止损止盈等策略;
2、模型中必须加入AUTOFILTER函数以实现交易指令的开平对应;
3、可以主观干预。
4、可以后台运行。
不加仓模型在WH8中的运行规则,请参考下面链接
/popwin/guolvmx.htm
(四)四级:加仓资金管理策略(非过滤模型)
为资金量较大,且交易周期跨度较大的投资者提供的全自动程序化交易。
在制定交易策略的时候,可以对资金进行合理规划,确定首次开仓手数和后续加仓手数,在策略中实现更灵活资金管理。
客户自己在组群中加载模组后,出现信号按照信号执行方式确认后自动下单交易。
加仓资金管理策略的主要功能:
1、除趋势跟踪策略可以实现的策略外,还可以实现带有资金管理的策略。
2、编写时可以利用头寸函数进行过滤,避免锁仓;
3、可以主观干预;
4、可以后台运行。
加仓模型在WH8中的运行规则,请参考下面链接
/popwin/feiguolvmx.htm
(五)五级:模型组合
程序化交易是一项系统工程,工程就是要通过各个环节的配合,达到结果的最优。
程序化交易想实现稳定盈利,就需要模型组合,可以把各种不同策略类型的模型,合理分配每一个模型的资金量,行情不好的时候模型之间盈亏互抵,行情好的时候共同盈利,即可以平滑资金曲线,又可以达得稳定盈利的效果。
Wh8的模组,为用户提供一个合约上加载多个模型,每一个模型分配不同的资金,每一个模型在分配的资金内运行的功能。
WH8也提供组合测试功能,可以将一篮子模型组合到一起测试,查看模型组合的测试结果。
确定好模型组合后,可以将这些组合加载到模组中一起运行,达到组合交易的目的。
其中任何模型出现信号都会按照信号执行方式确认后自动下单。
模组组合的主要功能:
1、组合测试可以提供组合内各模型的资金曲线和组合后的总资金曲线
2、组合测试可以提供组合后的详细测试数据,如:总的盈亏、总的最大回撤、总的胜率等
3、组合测试可以提供组合后的阶段总结,可以按年或者按月统计盈利率、胜率等。
4、模型组合在模组中运行时,相互独立,互不干扰。
5、模型组合的模组,可以后台运行。
(六)六级:高频交易
日内高频是为以研究市场微观结构为主要交易基础的投资者提供的全自动程序化交易。
在日内高频平台中,客户可以使用日内高频函数,取得盘口的多档挂单,及逐笔成交数据,编写资金流或者其他市场微观结构策略的交易模型,一些国内的炒单思路,也可以编写成高频模型。
客户可以自己将高频模型加载在某一合约上,出现信号按照信号执行方式确认后自动下单。
此外,客户还可以使用下单组件编写日内高频模型,利用下单组件独立运行的方式实现高频交易。
日内高频的主要功能:
1、可以切换到各级秒周期;
2、可以进行高频模型的TICK逐笔回放测试;
3、具有独特的量能周期功能,更好的实现价量策略;
4、可以自己定义大单,将成交数据按类取出大单数据,如取主动买大单成交次数。
3、可以后台运行。
二、WH8模组信号执行方式说明
1、k线走完,确认信号后下单
下一根K线的第一笔数据出现之后,判断上一根K线是否有信号,有信号就下单。
注:遇到小节休市,中午休市,下午闭市,如果选择了休市前最后一根提前M秒判断k线走完,在M秒开始如果收到行情数据,就认为k线结束,提前确认信号下单;如果这期间没有收到新的行情数据,也是等到下一根k线的第一笔确认信号下单。
2 出信号立即下单,K线走完进行信号复核
当根K线满足条件立即下单,当下一根K线的第一笔数据出现之后判断上一根K线条件是否满足,不满足做信号消失处理,满足信号确认固定。
注:遇到小节休市,中午休市,下午闭市,如果选择了休市前最后一根提前M秒判断k线走完,在M秒开始如果收到行情数据,就认为k线结束,提前复核;如果这期间没有收到新的行情数据,也是等到下一根k线的第一笔再复核。
3 出信号立即下单,不进行信号复核
当根K线满足条件立即下单,信号确认固定。
注:
①这种信号执行方式会造成盘中和盘后信号不一致,原因盘中信号是按照指令价位判断,盘后信号是按
照收盘价判断。
②遇到小节休市,中午休市,下午闭市,如果用户选择了休市前最后一根提前M秒判断k线走完,在M
秒开始如果收到行情数据,就认为k线结束,不再出信号,也不在下单。
4 出信号N秒后确认下单,K线走完进行信号复核
当根K线出现以后,第N秒再次判断一下是否都满足,满足条件就下单。
当下一根K线的第一笔数据出现之后判断上一根K线条件是否满足,不满足做信号消失处理,满足信号确认固定。
注:
①当K线走完,信号持续时间不足N秒,提前确认下单,信号固定。
②遇到小节休市,中午休市,下午闭市,如果用户选择了休市前最后一根提前M秒判断k线走完,在M
秒开始如果收到行情数据,就认为k线结束,提前复核;如果着期间没有收到新的行情数据,也是等到下一根k线的第一笔再复核。
5 出信号N秒后确认下单,不进行信号复核
当根K线出现以后,第N秒再判断一次,满足条件后下单,信号确认固定。
注:
①这种信号执行方式会造成盘中和盘后信号不一致,原因盘中信号是按照指令价位判断,盘后信号是按
照收盘价判断。
②当K线走完,信号持续时间不足N秒,提前确认下单,信号固定。
○3遇到小节休市,中午休市,下午闭市,如果用户选择了休市前最后一根提前M秒判断k线走完,在M 秒开始,虽然没有N秒,如果收到行情数据,就认为k线已经结束,就信号确认下单,信号固定
6 K线走完前N秒开始确认下单,K线走完进行信号复核
当临K线走完前N秒开始持续判断是否满足条件,只要满足条件就下单。
当下一根K线的第一笔数据出现之后判断上一根K线条件是否满足,不满足做信号消失处理,满足信号确认固定。
注:遇到小节休市,中午休市,下午闭市,如果用户选择了休市前最后一根提前M秒判断k线走完,在提前M+N秒开始持续判断,只要有信号就下单。
到提前M秒以后,如果收到数据就进行提前复核;如果这期间没有收到新的行情数据,也是等到下一根k线的第一笔再复核。
7 K线走完前N秒开始确认下单,不进行信号复核
当临K线走完N秒开始持续判断是否满足条件,只要满足条件就下单,信号确认固定。
注:
①这种信号执行方式会造成盘中和盘后信号不一致,原因盘中信号是按照指令价位判断,盘后信号是按照收盘价判断。
②遇到小节休市,中午休市,下午闭市,如果用户选择了休市前最后一根提前M秒判断k线走完,在提前M+N秒开始持续判断,只要有信号就下单,信号确认固定。
8 下单组件接管所有原信号
此执行方式需要绑定下单组件才可以完成下单。
信号的执行方式是:当根K线满足条件,
信号立即发出,下单情况按照下单组件执行;信号消失立即发出,信号消失处理按照下单组件执行。
三、关于效果测试的收益率
效果测试是整个程序化交易过程中非常重要的一部分,它用历史的行情,帮助我们了解模型是否可以盈利,甚至帮助我们了解更多的模型的综合表现能力。
Wh8效果预览中提供两种不同的信号执行方式为用户进行模型的历史回测:
1、K线走完,确认信号后下单(即收盘价测试)
2、出信号立即下单,不进行信号复核
我们回测中会发现,同样的模型,选择这二种信号执行方式,也就是选择不同的信号执行价格,测试结果却相差甚远。
实盘的模组中,又有七种信号执行方式,这七种与模型回测中的二种怎么对应呢?实盘的信号,与回测是否会完全一致?收益率会高于回测结果还是会低于回测结果呢?
以下是详细的分析说明:
(一)回测方式:K线走完,确认信号后下单
原理:如果K线走完信号仍然存在,则将这根k线的收盘价作为成交价计算盈亏。
这个选项,与实盘模组中以下4种信号执行方式相对应(排序不分优劣)
1、K线走完,确认信号后下单。
原理:这是在下一根K线的第一笔数据出现的时候,判断上一根K线是否有信号,有信号就下单。
委托价为下一跟K线的开盘价。
我们对比可以看出,实盘委托价格与回测的成交价就差一笔,效果测试和实盘效果会十分接近,就差一笔的价差。
结果:信号一致;收益率接近。
2、出信号立即下单,k线走完进行信号复核
原理:当根K线满足条件立即下单,当下一根K线的第一笔数据出现之后判断上一根K 线条件是否满足,不满足做信号消失处理,满足信号确认固定。
由于出信号立即下单,下单以后到k线结束期间,信号可能出现忽闪(信号消失了,到k线走完前又出现)。
如果没有出现忽闪,下单的价格比k线走完下单跟有利,盈利会比回测更多;如果信号出现了忽闪,导致系统做信号消失处理,你会损失价差和手续费。
根据我们的统计分析,忽闪的概率与模型本身的胜率指标是负相关的,胜率越高的模型,出现忽闪的概率越低。
结果:信号一致;胜率高于50%的的模型实盘收益率高于回测,胜率小于50%的模型实盘收益率会低于回测。
3、出信号N秒后确认下单,k线走完进行信号复核
原理:当根K线出现信号以后,第N秒再判断一次,满足条件后下单,当下一根K线的第一笔数据出现之后判断上一根K线条件是否满足,不满足做信号消失处理,满足信号确认固定。
这个选项是“出信号立即下单,k线走完复核”的改进版,由于N秒的时间过滤,信号忽闪的概率会降低,收益率会得到改善。
结果:信号一致;胜率高于50%的的模型实盘收益率高于回测,胜率小于50%的模型实盘收益率会低于回测。
4、K线走完前N秒确认下单,K线走完进行信号复核
原理:当临K线走完前N秒开始持续判断是否满足条件,只要满足条件就下单。
当下一根K线的第一笔数据出现之后判断上一根K线条件是否满足,不满足做信号消失处理,满足信号确认固定。
这个选项是“出信号立即下单,k线走完复核”的另外一个改进版,由于采用了接近k线结束才下单,出现忽闪的时间变短了,信号忽闪的次数会降低,收益率会得到改善。
结果:信号一致;胜率高于50%的的模型实盘收益率高于回测,胜率小于50%的模型收益率会低于回测。
(二)回测方式:出信号立即下单,不进行信号复核
计算原理:K线中有满足条件的价格即出现信号下单,一根k线只出一个信号。
对应的模组中应该选择的信号执行方式为(排序不分优劣)
1、出信号立即下单,不进行信号复核
原理:当根K线满足条件立即下单,信号确认固定。
虽然原理上与回测完全一样,但是实盘是支持一个k线多个信号的,模型会比回测的表现的更好。
分为以下二种情况:
(1)一根k线上先满足bp然后又满足bk,会比回测的bk提前一根k线发出信号,b k的时机会更好,成交价位更有利。
(2)一根k线上先满足bk,然后又满足bp,会比回测的bp提前一根k线发出信号,当根k线就平仓了,bp的时机会更好,成交价格更有有利。
当然,实盘提升收益的程度仍然取决与模型的胜率,胜率越高的模型,实盘收益率改进就更大。
结果:信号不一致;实盘收益率高于回测效果。
2、出信号N秒后确认下单,不进行信号复核
原理:当根K线出现信号以后,第N秒再判断一次,满足条件后下单。
这个方式就是“出信号立即下单,不进行复核”的改进版,加了N秒时间的过滤,会过滤一些虚假信号,提高模型的实际胜率表现。
一根k线多信号会实盘表现的提升,与”出信号立即下单,不进行复核“一样
结果:信号不一致;实盘收益率高于回测效果。
3、K线走完前N秒确认下单,不进行信号复核
原理:当临K线走完N秒开始持续判断是否满足条件,只要满足条件就下单。
这个方式就是“出信号立即下单,不进行复核”的另外一个改进版,通过临近k线走完才下单,来提高模型的实际胜率表现,但是会贻误战机,可能会错失好的入市点。
一根k线多信号会实盘表现的提升,与”出信号立即下单,不进行复核“一样
结果:信号不一致;实盘收益率高于回测效果。
另外,老版本的“出信号立即下单,K线走完进行复核” 的选项,因为对信号忽闪无法考虑全面,会造成回测结果的收益率偏高的问题,从而误导客户。
wh8最后定版的时候删
除了这个选项。
文华正在开发能考虑到所有忽闪情况的新算法,新算法开发好以后会重新开放这个功能。