-- 利用金字塔的自定义数据横向排名统计功能实现策略回测的方法和步骤
金字塔的横向统计功能是一个十分强大的功能,尤其是针对股票市场品种数据大的特点,更是在我们的量化交易统计过程中发挥巨大的优势。举例来说:
我们的策略实现如下功能:寻找涨幅排名在30名之前,并且MA均线处于金叉位置的股票,实现买进,出现死叉的持仓股票,卖出。
为了实现上述策略,我们要将策略分成2个部分来完成,第一要完成股票在市场当中的涨跌幅排名,第二就是要判断是否金叉和死叉。
排名统计就需要借助横向统计功能,先为我们统计出来个股在整个市场的涨跌幅排名情况。虽然我们可以在公式中自行完成统计工作,但是计算量是十分巨大的,这样的公式编写出来也几乎是没法正常使用的,幸好金字塔为我们提供了非常有价值的横向统计自定义数据的功能,有了这个功能,再复杂的统计工作,我们都可以非常轻松的来完成,而且是效率非常高的。并且自定义数据不仅仅可以用来做统计,像类似跨周期数据引用这样的工作,我们也都可以用他来帮我们完成,喜欢使用跨周期引用的朋友可以自定尝试,使用自定义数据和你自己在公式中使用STKINDI他们的效率差别。好了言归正传,下面来介绍统计横向排名的步骤:
第一步,建立一个技术指标公式,用来统计涨跌幅,名称为 Formula2,代码为:
此主题相关图片如下:qq截图20160718205359.jpg
第二步,我们进行横向排名统计,分析菜单->自定义数据,打开自定义数据窗口,本例中我们以日线数据做统计,用户使用前请务必补充好上海证券交易所的所有品种的历史日线数据。
此主题相关图片如下:qq截图20160718205359.jpg
新建一个“证券相关序列”,名称为“涨幅排”的自定义数据序列,选择我们前面建立的公式指标,统计周期选择日线,如果你除了测评外还需要盘中做后台程序化交易,那么你还需要勾选“自动更新”这个选项,这里的重点选项是需要你勾选“生成横向排名数据”,只有你勾选了这个选项后,才可以对涨跌幅这个数据做排名的哦。最后确认你的计算范围,要选择对“上海A股”整个市场板块进行统计。
设置完毕后,我们需要点“刷新”按钮进行刷新,
此主题相关图片如下:qq截图20160718205359.jpg
这里重点提醒的是,如果你需要测评,那么你应该选择刷新指定数量的数据,如果你是做实盘程序化使用,那么这个数量应该尽可能设小,以加快横向统计的处理速度。
刷新完毕后,我们可以人工打开一个品种看一下刷新的数据是否正确,比如我们以浦发银行为例:
此主题相关图片如下:qq截图20160718205359.jpg
接下来最后一步就是进行程序化交易测评的公式编写部分了,按照上述的要求编写的程序化交易的代码如下:
此主题相关图片如下:qq截图20160718205359.jpg
这里重点介绍的函数SELFDATA,用这个函数可以直接读取我们之前设定的自定义数据。用法非常简单,我想通过上述的代码用户应该不难理解他的使用。
上述代码编写完毕后,我们就可以进行我们的测试工作啦,下面是测试报告。
此主题相关图片如下:qq截图20160718205359.jpg
==========================================================================
有关自定义数据的属性类型的说明:
此主题相关图片如下:qq截图20160718205359.jpg
单值数据 : 每个统计的品种仅有一个最新的统计数据,例如上述的涨跌幅排名统计需求,如果我们需要在后台程序化中使用,不需要历史测评,就可以选择这个选项,加快统计速度。
证券相关序列:每个统计的品种有历史的统计数据,例如上述的的涨跌幅排名统计需求,我们需要历史数据进行测评,因此需要这样的数据类型。
横向统计序列:将所有的品种进行统计,统计结果拟合到一个结果中,例如我们可以统计沪深A股的上涨,下跌家数,以及指标值的累加,例如统计沪深A股出现MA均线金叉的家数等等。