1、通达信公式编写通达信公式编写最近看到很多人说通达信编写公式很难,我突然想到了自己当时入门的情景。当时我从小白到用公式把自己的思路表达出来,大约只用了三到四天的时间,当然速度没有熟练的人这么快,但是我有明确的解决遇到问题的方向与方法。之所以能这么快入门,就是因为我发现了一些实用技巧和正确的学习方向。先说说我们自己会编写通达信公式后的好处,这样有利于促进大家学习它的动力,克服学习当中遇到困难的信心。以下是我认为的几个好处:1、它可以把我们的经验、想法量化,最后写成公式,一目了然2、它可以验证我们想法的效果。(通过通达信自带的测评系统评测)3、如果写成选股公式,可以大大节省我们选股时间4、会写公式后
2、,一般能读懂别人的公式,这样可以学习别人的思路5、当发现一个自己认为比较好的公式后,可以直接在此基础上优化6、当看到别人讲解过一个思路后,自己可以写一个公式看看效果如何7、这类编程是很简单的一类,为以后难度大一点的编程作铺垫8、当我们自己学会后,就不用寻求别人的帮助,不用等别人时间等等.方法对,事半功倍,学起来就轻松。下面以几个实例详细讲解如何把自己的想法通过公式表达出来以及当我们遇到不会时如何解决问题。(都是实用、实战的方法与经验)下面的例子由易到难例1、KDJ金叉看到这个需求,我们需要详细理解什么是KDJ金叉,换句话说就是KDJ的J线向上穿过K线当我们还是小白时脑子里是不知道用哪一个函数来
3、表示,这时有一个技巧可以快速帮助我们找到适合的函数。那就是通过通达信公式编写界面自带的函数查发功能。界面如下(也就是在 公式编写界面中 插入函数 按钮):图1如图1所示:图中标1处是所有函数的分类,比如我们要在主图中画线,那么我们就要去 绘图函数 分类中去找,当我们不知道我们所用的函数在哪个分类中时,还有一个快速的方法就是,通过图中标3处,通过关键字搜索。现在我们回到例1,首先 ,我们可以通过关键字 金叉 来查找,得到的结果如下图:通过关键字 金叉 查找,只得到了一个结果,通过查看结果说明得知,这个并不是我们要找的答案。并且它弹出了 查找完毕 对话框 ,说明查找结果就只有一个。这时我们就要改变
4、关键字来再次查找,通过金叉定义,我们可以得到一个关键词 上穿 ,我们通过这个来查找试一下。查找结果如下图所示:图2从图2几处箭头处,我们可以得知这个函数就是我们要找的函数CROSS,注意,图2并没有弹出 查找完毕 对话框,这表示有多个查找结果,我们可以点击 下一个 按钮或按F3进行下一个结果查看,所以最终公式为:XG:CROSS(KDJ.J,KDJ.K);说明:如上公式中的XG,表示一个变量的名称,冒号(:)之后的内容就是变量XG的值,如果冒号之后有等于号,表示将等号后面的值赋给变量XG,并不输出XG的值,如XG:=CROSS(KDJ.J,KDJ.K);KDJ.J 表示引用名为KDJ的副图指标
5、中输出名为J的结果值。类推 MACD.DIF,CCI.CCI等,格式为 副图指标名称.指标中的某个输出值。注意:如果公式中冒号后面带有等于号,则表示不输出任何值和任何信号。所以当我们的副图指,要输出某句公式的信号或数据值时,不应在冒号后面加等号。方法总结:当我们不知道用哪个函数来表达我们的想法时,可通过查找功能,如果一个关键字查找不到结果,那么我们就换一个关键字查找。我们可以引用已存在副图指标中的某个输出值来简化我们的公式。记住冒号后面带等于号与不带等于号的区别(不带等号表示,赋值并输出,带等号表示只赋值)。例2 上一次KDJ金叉到今天的天数分析:通过分析我们要查找的关键字可分为两个(关键字尽
6、量要总结为书面用语)1、上一次(可分为 上 一次 两个关键字)2、天数(还可理解为 周期数(比较书面化)通过 上一次 和 天数 两个关键字,我们都没有找到我们要的结果,这里我们就要学会变通,关键字的越短,被找到的可能性就越大,那们把 关键字 上一次 分为 上、一、次,三个关键字,通过关键字 上 ,我们找到了几个结果,通过查看说明我们确定为如下图的结果为BARSLAST:注意:如果通过 关键字 上 没有找到我们要的结果,那就更换 一 字,如果还没有找到就更换为 次 字,以此类推,也就是说查找结果的快慢程度是由我们总结的关键字准确度来决定的。我们总结的关键字要尽量接近书面化用语。那么怎么知道我们找
7、的函数是不是我们要的呢,有两个办法可以确定。1、看函数的说明和具体例子2、我们自己使用这个函数来检测图3从图3中几处箭头处,我们可以看出,这个函数就是我们要找的,那我们写出来放到副图中看一看结果是否正确。XG:BARSLAST(CROSS(KDJ.J,KDJ.K);将如上公式放入副图后的效果如下图所示:注意图中箭头所标之处图4图4中第一个副图中XG的输出值14就是结果,我们通过眼睛查或通过鼠标右键框选得到的结果都是14,说明我们的公式是正确的。第一个副图中有连续的折线段出现,这影响我们的视觉,那么我们如何让这些折线不显示呢,我们只需对原公式作如下修改:XG:BARSLAST(CROSS(KDJ
8、.J,KDJ.K),NODRAW;也就是加上NODRAW,这样副图中的信号就没有输出了,这个是一个非常有用的方法,比如我们在做一个副图时,最终输出的结果信号是由多个小的结果组成的,那有时我们写完公式发现最终结果不对时,我们就可以单独输出每个小结果,如果小结果多了,都输出在副图中,是不是给人一种很眼花的感觉,所以这里NODRAW就派上用场了。我用例3来更好的让大家理解上面的话。例3上一次KDJ金叉距今天数大于10通过前面的学习,我们可以写出如下公式:X1:=CROSS(KDJ.K,KDJ.J);KDJ金叉,这里其实是死叉,因为讲解需要X2:=BARSLAST(X1);上一次X1成立到今天的周期数
9、X3:X210;X2的值大于10,因为上一句将如上公式放入副图,我们发现结果不对,这时我们就需要找到错误的地方,这时就要用到我们上面讲解的方法了:1、通过冒号后面不带等号来输出我们认为可能不对的地方2、由于输出较多,会造成信号混乱,我们就用NODRAW;调试代码如下X1:CROSS(KDJ.K,KDJ.J),NODRAW;KDJ金叉,这里其实是死叉,因为讲解需要X2:BARSLAST(X1),NODRAW;上一次X1成立到今天的周期数X3:X210,NODRAW;X2的值大于10,因为上一句;我们将上面的代码放入副图,发现我们将鼠标的光标放到KDJ金叉那一天时,副图X1的输出值并没有为1,而是
10、为0(因为X1我们应该要让它表达为金叉),说明这一句我们没写对,这里我们就得检查代码,最终发现写错了应该写成X1:CROSS(KDJ.J ,KDJ.K)而不是X1:CROSS(KDJ.K,KDJ.J);通过一一排查,我们发现就只有这一处错误,最终代码如下X1:CROSS(KDJ.J ,KDJ.K),NODRAW;KDJ金叉,这里其实是死叉,因为讲解需要X2:BARSLAST(X1),NODRAW;上一次X1成立到今天的周期数X3:X210;X2的值大于10,因为上一句;为什么最后一句没有了NODRAW呢,那是因为我们要让它输出最终信号,以便我们观看。有时代码较多,如果每一个变量的值都作输出的话
11、,副图是显示不全的,这时我们只需在我们要输出值的变量一行去掉等于号就行,其他行加上等于号即可。修改如下:X1:=CROSS(KDJ.J ,KDJ.K);KDJ金叉,这里其实是死叉,因为讲解需要X2:=BARSLAST(X1);上一次X1成立到今天的周期数X3:X210;X2的值大于10,因为上一句;在代码中我们使用了大括号,这个的作用是用于代码说明,描述,有助于别人理解公式表达的意思,它还可以用于让一段代码不起作用,比如我们写了多很多代码,在调试的过程中又想不用某一段代码,但暂时又不想删掉这些代码,就可以把不用的代码用大括号括起。复杂的公式最终都是调试出来的,例3讲到的就是最好的调式方法。多练
12、习增加熟练度,这要时间久了就可以手到擒来。当我们写好一个副图指标后,我们就想把它写成选股公式,那么副图公式和选股公式的区别是什么呢?最主要的区别就是:1、选股公式有且仅有一个输出,也就是说必须有且只有一句冒号后面不带等于号。2、选股公式里不能有NODRAW;下面两个选股公式都是错误的X1:=CROSS(KDJ.J ,KDJ.K);KDJ金叉,这里其实是死叉,因为讲解需要X2:BARSLAST(X1);上一次X1成立到今天的周期数X3:X210;X2的值大于10,因为上一句;错误原因:公式中有了两个输出,X2和X3,在选股公式里只能有一个X1:=CROSS(KDJ.J ,KDJ.K);KDJ金叉,这里其实是死叉,因为讲解需要X2:=BARSLAST(X1),NODRAW;上一次X1成立到今天的周期数X3:X210;X2的值大于10,因为上一句;错误原因:公式中有NODRAW任何主图和副图公式都可以写成选股公式有一些需求我们不能通过搜索函数来完成时,我们可通过搜索引擎来解决,在找到答案之后,我们通过变量输出,来查看结果值是否正确。至此,查找我们要的函数和公试调试方法上面都已讲解完毕,每一种需求的表达可能有多种,有的人用简短的语句就能表达,有的人得用复杂的语句表达,这是熟练程序的问题,也就是我们说的算法问题,这个就要靠我们平时多练,多思考。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1