为什么DLL能加速通达信选股?

01

通达信数据背后的本质

 

没错,如果你看过吸星大法的DLL文章《深入理解通达信“即时函数”》,你就能够了解,每一个通达信的数据背后,全都是对应于一组数据向量。

当然,从上面那篇文章,你也能看到,通达信这种数据体系也造成了巨大浪费,因为它把一个数字也当作一组数据向量。

总之,“每一个变量,都对应于一组向量”这就是通达信每一个数据公式背后的意义。

了解了这个,你才能够理解通达信公式背后的意义,也就能够自行的减少计算量。

而这,才是通达信DLL在选股时候,能够加速计算的本质。

这里,用两个公式来举例:

假如过去100天的价格是1、2、3……100,我需要求20天的EMA和MA均线,但选股的时候,我只需要关注最后一天的EMA和MA,这时候,我怎么求才靠谱呢?

首先来看通达信的做法,

EMA20:EMA(DATA,20);MA20: MA(DATA,20);

解释一下上面两个公式计算的意义,这里,通达信一上来,就把数据按照时间顺序,从第一个到最后一个,顺次计算了一个遍。

当然,我们也知道,MA均线这里需要至少20个数据,才能计算出一个有效的值;而EMA则不然,它是递推公式,只要有一个数,它也能给出一个值,即使它不是真正的EMA值。

因此,我们可以发现,MA20的前19个数据,通达信是不显示的,因为那是废弃数。而EMA20的前19个数则肯定会显示,但我们需要记住的是,这肯定也不是准确的EMA数据,因为它连基础的20个总数据都没有用到,又何谈数据的正确性呢。

了解了以上,我们心里面就有谱了。

现在我们可以提出两个问题:

1、在自己开发DLL时,我们真的有必要把全部收据从头算到尾吗?

2、在计算n天均线时,到底要算多少个数据,均线才能是准确的呢?

还以上面的1到100来举例。

计算n=20的20天均线时:

我选择最近的20个数据来计算,是什么效果呢?

图片

上面的计算结果中,红线是真实的均线结果,表示从1一直计算到最后的100,这里我只显示了最后的20个数据来作为基准。

数据图左边是EMA均线,也是仅取最后20个数据,作为计算的结果(蓝色星号),并且与真实结果(红线)进行对比;

右边是MA均线,仅取最后20个数据计算的结果,通用与真实结果(红线)进行对比。显然,因为MA20必须至少有20个数据,所以这里前19个数据都是废弃数,所以也画不出来;

现在,你看到了:

对于n天MA均线来说,只取最少n个数据计算,选股是可以的。

对于n天EMA均线来说,只取最少n个数据计算,貌似误差有点大了。

那么对于上面的均线,如果我取n=40,也就是至少用最近的40个数据来计算,结果又如何呢?

图片

看上面的结果:

显然,对EMA20来说,40个数据的准确度已经大大提高了,几乎没有误差了;

同样,MA20均线来说,则输出了21个有效数据。这也意味着,如果用这个来选股,我只需要最后一个均线数据,这里我就多余计算了20个数据,白白浪费了20个数据的计算量(当然,均线计算有计算量极小的递推计算方法,浪费的这点计算量,对现代CPU来说也不算多,在我的通达信DLL教程的大作业部分里面有详细的递推计算方法,这是后话)。

02

通达信选股DLL可加速性分析

 

所以,经过上面的例子,你就可以了解和思考通达信选股公式背后的东西了。

比如,对于官方给出的MACD买入选股公式:

图片

DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);DEA:= EMA(DIFF,M);CROSS(DIFF,DEA);

这个公式,需要计算DIFF和DEA的值会不会形成金叉,DIFFDEA又用到了EMA均线。

那么,由前面的分析,我们就一目了然了。比如,在实际选股的时候,如果通达信给了420个输入数据,那这个公式,必然就会浪费掉很大部分的算力(因为选股时,我们只需要最后那一个数据)。

浪费到哪里了呢?我们分析一下公式,就会看到上面的LONG=26,那么对应的EMA均线只需要算差不多52根数据(因为2*N个数据基本就没有误差了),就可以计算得很准了。超过了这个数据,其实算力几乎就是白白浪费了。

在DLL中,我们就可以只需要计算最后的52根数据,就可以取得与上面公式计算一样的效果。另外,DLL本身的计算性能也要比通达信普通公式性能更好。这两方面,就节约了大量的算力。

那么还有没有可能改造一下呢?

比如,都是均线,物理意义其实都差不多,那么我把EMA换成MA,数学特性其实也都是差不多的:

DIFF := MA(CLOSE,SHORT) - MA(CLOSE,LONG);DEA:= MA(DIFF,M);CROSS(DIFF,DEA);

这么一改造,DLL计算时,计算量还能够获得进一步提升,比如:这里对应于LONG=26,我只需要取最后的26个数据进行计算,就可以得到上面选股公式的计算结果。计算效率能够进一步提升。

03

结论

 

总结一下,我们看计算公式,一定要看到公式背后的本质。

只有了解了背后的本质,就能够找到进一步优化的方向。

有很多朋友问,DLL到底有什么用。

这种问题,我实在难以笼统回答,可以说有用,也可以说没用。

关键需要看你所处的不同阶段,它的作用才可能发挥出来,也可能完全没有用。

DLL的背后,是对通达信计算公式的极致掌控。

一切都是为了加速计算。

但DLL它也不是万能的,比如你要让我取一些莫名其妙的数据,我肯定是不能够的,官方DLL规范根本就不允许。

总之一句话,DLL是让你站在巨人的肩膀上,更上一层楼。但DLL绝不可能让你平地起高楼。毕竟,地基还是要先打的。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/109106
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 6小时前
下一篇 6小时前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注