条件选股编程教程真正实现股票程序化交易之欧阳理创编.docx
《条件选股编程教程真正实现股票程序化交易之欧阳理创编.docx》由会员分享,可在线阅读,更多相关《条件选股编程教程真正实现股票程序化交易之欧阳理创编.docx(46页珍藏版)》请在冰豆网上搜索。
![条件选股编程教程真正实现股票程序化交易之欧阳理创编.docx](https://file1.bdocx.com/fileroot1/2023-6/29/6b62b678-b670-4d1b-bb4f-da20d47a7273/6b62b678-b670-4d1b-bb4f-da20d47a72731.gif)
条件选股编程教程真正实现股票程序化交易之欧阳理创编
大智慧公式编写教程
时间:
2021.03.05
创作:
欧阳理
大智慧公式编写教程
第一节公式入门
我们大多数的用户并不是完全了解“公式编辑器”的意义,简单地,我们可以从以下几个角度进行理解:
一、指标分析:
“公式编辑器”好比是一个工作母床,通过这个工作母床可以制造出所需要的各式各样的零件,同样,在指标分析的工作中,利用编辑器可以编写出相应的分析条件,这种方法是在技术分析当中最为常用的方法之一。
例如,指标KD、指标MA等等,通过对这些指标的观察、分析,找出一些合适的条件作为买入卖出点。
当然,我们也许需要的是一些自己的指标,一些自己的准确的指标,更多的MB、MC、MD等等,这一切我们通过“公式编辑器”可以实现。
二、条件选股:
编写公式都要用到什么东西?
我们留下了许多问题都是公式编写的基础问题,所以我们这节课来解决这些基础的问题。
什么是技术指标?
MA均线就是一种技术指标,我们在炒股的时候,经常会将一些行情数据进行数学计算得出一些曲线等等,方便我们掌握股市的变动情况。
什么是条件选股?
简单讲,就是按照您的设定的条件用电脑帮助您完成一些太多太复杂的挑选比如您有一些好的心得和方法,可使有1000多只股票,您就是有100双眼睛有时也不一定可以看得过来,这时电脑就派上用场了!
什么是参数?
比如讲:
10日均线,您可以把10日当作参数,好处在于,您觉得需要修改成5日的时候,就可以使用一些简单的方法,例如参数精灵来很方便的修改和调整。
参数需要名字,例如M就不错。
还要规定参数的范围,例如1日至260日。
这样我们就可以在1到260之间任意调节M的值了,M最常用的数填在“缺省”一栏,例如你最喜欢用10日均线,那就填10吧。
什么是周期?
这么解释吧!
我们有的投资者喜欢使用日线图作技术分析;有的喜欢用5分钟的K线;有的喜欢使用长一点时间的,例如周线。
所以在公式设计中,允许不同喜好的使用者选择不同的分析时间就是可以选择不同的周期。
什么是函数?
函数在公式编写非常重要,如果作个比喻,我们用一种语言去告诉电脑我的想法,并且让它去帮我做,那么函数就是这种语言的单词。
我们在公式编辑器中选择插入函数,就可以看到里面有许多的函数,我们在附录中有一个简表,大家可以到那里去检索!
例一:
一根K线有四个价格组成:
最高价:
HIGH
收盘价:
CLOSE
最低价:
LOW
开盘价:
OPEN
成交量:
VOL
成交额:
AMO
例二:
两条均线不断地交叉,就专门设定了一条函数来描述两条线交叉:
CROSS(X,Y)
假如下图中的两条均线一条名叫X,另外一条叫Y
CROSS(X,Y)表示X向上穿过了Y
CROSS(Y,X)表示Y向上穿过了X
例三:
前面的CLOSE,还是VOL,都表示当天,或者您使用的不是日线,那就表示本周期的数据,那么前几天的怎么表示呢?
REF(X,M)
例如:
REF(Close,5)表示5天前的收盘;
REF(Vol,10)表示10天前的成交量;
这里的M就是参数,您现在明白了什么是参数了吗?
例四:
如果我想把两个条件并列在一起怎么办?
AND
XANDY就表示条件X和条件Y
好了!
本课结束吧有点稍慢,下面会好一些!
编写一条最简单的指标线
通过前几课的学习,我们今天开始使用软件的公式编辑功能编写我们自己的第一条指标线。
其实不难,你应该对自己有信心!
按照主菜单工具公式**选择“技术指标”点击“新建”,然后在公式编辑器中留下你的第一行脚印吧!
点击:
“确认”,现在看一下我们第一条指标线。
这条指标线与你的想法相符吗?
总结与补充:
1、如果选择:
“主图叠加”,我们的指标线会与K线图显示在同一个图形框中,现在我们的指标线显示在其下方,即“副图”中;
2、参数可以有,也可以没有,但是鼓励大家设置参数,这是非常好的习惯;
3、一个句子完了,别忘了以分号结尾;
你的公式写得对不对,可以通过“测试公式”来检查,如果错了,它会告诉你错在哪里。
第二节编写最常用的均量和均价线
均价线,不就是那个“移动平均线MA”什么的吗?
不过,话说回来,听说10个人里面有11个人都在使用,我可得学习学习!
原理是?
?
5日平均线=(今天收盘价+昨天收盘价+.....5天前的收盘价)/5;
10日平均线=(今天收盘价+昨天收盘价+......+10天前的收盘价)/10;
150日平均线=(今天收盘价+昨天收盘价+......+150天前的收盘价)/150;
200日平均线......不是这么麻烦吧?
难道我每天都要写这么多得数才得到一条平均线?
?
?
?
你有什么办法?
MA1=MA(CLOSE,5);
MA2=MA(CLOSE,10);
MA3=MA(CLOSE,50);
......
当然是有简单的方法了!
你把我在上面说过的话写下来,按照前面几课讲的,写在公式的编辑栏当中就可以了!
注意:
“MA”表示的就是计算平均值。
在括号内写上计算的对象和计算的时间长度。
MA1,MA2,MA3......是好几条指标线,别忘记了用分号把它们分开。
最后呢?
电脑自己会把它们一起画出来。
均量线?
?
?
均价线都有了,照着葫芦画瓢,把收盘价CLOSE换成成交量VOL就行了!
MA1:
MA(VOL,5);
MA2:
MA(VOL,10);
MA3:
MA(VOL,150);
MA4:
MA(VOL,200);
今天有几只发生MA金叉?
我们学习了编写MA移动平均线,关于这几条指标线如何使用?
我想大家可能都比我清楚。
例如短期均线和长期均线发生了金叉或者死叉,......等等,葛兰维尔的八项法则......如果说如何用分析家软件编写一个条件,让电脑把今天两个市场的股票中所有发生了黄金交叉的股票选出来呢?
想知道吗?
这就是“条件选股”,按照“条件”电脑自动“选择股票”出来,可以供您分析,要不然的话,技术分析的投资者都会累死了!
跟我学!
第一步:
“工具”栏中选中“公式**器”
第二步:
我们现在选择“新建”一个“条件选股”公式,结果出现了下面的编辑栏!
然后在里面写上您的条件!
第三步:
按照说明书上的步骤选股就行了!
注意:
1、在条件选股中点击“新建”;
2、原来MA5:
MA(CLOSE,5);
表示的是一条指标线,可是现在我们在条件选股当中只要引用它,不需要把它画出来。
所以我们在冒号的后面加一个符号,表示等会要引用它:
MA5:
=MA(CLOSE,5);
这个在分析家的公式编辑中,叫做“中间表达式”。
X=1;
Y=X+1;
Y=?
我们学过上面的数学,都知道把X=1代入到Y的计算中去,“X=1;”就是一个中间表达式,您明白了吗?
如何汇编自己的公式?
好多人只会引入或拆解别人的公式组装一下但终归不是自己的原装,自己也想动手编制但苦于不会,这里就教你学会如何由浅至深的编制公式的技能.满世界找开琐钥匙(寻找破解指标),不如自己做个造锁专家(编写公式指标专家),您说呢?
怎样编写大智慧指标公式?
目前大多数证券分析软件都具有指标分析和条件选股的功能,但只有用户可以自己编制算法公式的系统才是真正实用的,因为:
许多软件的指标和选股功能是黑箱操作,也就是说,其内部算法是不公开的。
这样用户并不知道其指标和选股到底是如何运作的、可靠性有多高、前提条件是什么,因而也难以决定是否采用指标或选股的结果。
这样的指标和选股只有宣传上的意义而没有任何实际意义。
许多软件的选股功能都不够强大和灵活。
例如有些软件的条件选股功能只能让用户按照特定的模式进行设定,适用面很窄。
公式系统类似于一种编程语言,用户可以数学公式的形式实现任何自己期望的技术指标和选股条件等。
可编制的公式可以完全公开算法,用户可以自行分析、评价和修改,做到心中有数。
公式系统的作用是什么呢?
公式系统其实就是对一系列随时间变化的原始数据组序列进行代数和逻辑计算。
为什么是数据组序列呢?
因为每一个时间周期(即相邻两组数据间的时间间隔)都包含了一组原始数据,如开高低收量额,公式系统能对其中的任何原始数据进行操作。
使用者定义出如何对原始数据进行处理得到一个新的数据,公式系统读出原始数据并按要求计算出使用者定制的数据,并以曲线、图形、指示等形式显示出来。
公式系统可以编辑四种类型的公式,分别是技术指标、交易系统、条件选股和五彩K线公式。
技术指标公式是最基本的公式,它用于指标图形的绘制。
技术指标公式结合选股条件逻辑判断表达式,即得到条件选股公式,用于条件选股。
技术指标公式结合买卖逻辑判断表达式,得到交易系统公式,用于交易系统指示。
技术指标公式结合色彩逻辑判断表达式,即得到K线模式公式,用于描述特定的K线模式。
公式的编辑在公式编辑器中完成。
公式系统处理的原始数据的分析周期(即相邻两组数据间的时间间隔)可以从1分钟到1000天间的任意值,也可以是分笔成交数据,我们用鼠标把一个公式拖到某只证券的某个周期的图形分析窗口,则该公式处理这个周期的原始数据,如开高低收量额,改变分析窗口显示的分析周期,则公式处理新的分析周期的数据。
公式系统对数据的运算是基于一系列函数,函数中除ZIG之字转向函数类和BACKSET函数外,其余函数均满足时间不变性,即时间靠后的数据不对时间靠前的结果产生影响。
公式设定步骤
1.设定公式名称:
每个公式都有自己的名称,它由字母或数字组成,最多可以有9个字符。
请注意,公式名称在同类公式中不能重复。
2.描述公式:
用于简单描述该公式的含义,若输入,则在公式列表中会显示这段文帧?
3.注释公式:
用于描述一个公式如何使用、计算方法等内容。
输入后,在有关窗口按“用法注释”按钮可以查看公式注释。
4.设计技术指标公式语句:
公式的形式由若干语句组成。
每个语句得到一个计算结果,对于技术指标,就是一条指标线,语句间用分号隔开。
一个语句由若干函数通过四则运算或逻辑运算而组成。
函数是公式系统的基本成分,它是对数据做某种操作,如CLOSE()函数表示调用该分析周期的收盘价。
函数由函数名称和参数组成,参数用函数名后的括号括起来,每个函数调用的参数可以是变量或常量,变量是一个随着时间变化而变化的数据,例如收盘价;常量是一个不随时间变化而变的数据。
例如函数REF(X,N)用于引用N周期前的X值,X是一个变量,N是一个常量,REF(close(),1)表示计算上一周期的收盘价。
函数若需调用几个参数,则它们在括号内是有顺序的。
若没有参数则可以省去括号,例如CLOSE()函数没有参数,所以写成CLOSE和CLOSE()都可以。
函数计算得到的结果是一个变量。
计算符将函数连接成为语句。
计算符分为算术计算符和逻辑计算符。
算术计算符有+、、*、/,分别是对计算符两边的数值进行加减乘除计算;逻辑计算符有>、<、<>、>=、<=、=、AND、OR,分别是对计算符两边的数值做大于、小于、不等于、大于等于、小于等于、等于、逻辑与、逻辑或的逻辑运算,如果逻辑条件成立返回的计算结果为1,否则为0。
例如:
2>1的逻辑运算结果等于1,1>2的逻辑运算结果就等于0。
语句得到的计算结果连成线就是所谓的指标线,不同的语句就得到不同的线,为了在指标图形中互相区分,不同的线有不同的颜色,而且语句还可以有自己的名称,在指标图形中显示在左上角位置。
语句名写在语句的前面,用一个冒号将它与语句隔开。
语句“上日收盘价:
REF(close,1)”就表示该语句REF(close,1)的名称为“上日收盘价”。
该语句后而的语句若需引用它,则写公式名即可,如MA(上日收盘价,20)意思是对上日收盘价求20日平均。
5、设计中间语句:
一个语句将显示一条指标线,一个复杂的公式往往有很多语句,而且有些语句没必要显示出来。
这时我们可以把不需要显示语句定义为中间语句,中间语句的写法只需在一般语句的名称与语句之间的冒号后加个等号,即“:
=”即可。
例如,语句“上日收盘价:
=REF(close,1)”就表示该语句为中间语句。
重复使用的语句也可以定义成中间语句。
6、设计其他公式语句:
其他类型的公式显示的不是指标线,而是相应的操作,如条件选股公式显示的是选股结果,交易系统公式显示的是交易指示,五彩K线公式显示的是K线颜色。
这些公式需要有一条或几条逻辑表达式表示这些操作的语句,当语句返回0时表示不需要进行相应的操作,当返回非0时表示需要进行相应的操作。
其他的语句都应设定为中间语句。
条件选股公式只有一条逻辑表达式语句,用来表示选股条件是否成立,例如CLOSE>REF(close,1)语句,表示选出当期收盘价高于上日收盘价的股票。
其他的语句必须设定为中间语句,否则编辑器出现“只能有一个输出结果”的警示。
交易系统公式需要1-4条逻辑表达式语句,分别为多头和空头的切入切出条件语句,分别用ENTERLONG,EXITLONG,ENTERSHORT,EXITSHORT表示多头买入、多头卖出、空头切入、空头切出条件,当这些语句返回非0时,表示需要进行相应的操作。
其他的语句必须设定为中间语句,否则编辑器出现“非交易信号变量只能用:
=赋值”的警示。
这四个条件中必须至少设定一个条件。
五彩K线公式可以有16条逻辑表达式语句,最多描述6种不同的颜色。
7、设计计算参数:
我们有时需要调节公式中的常数来看公式的表现,可以直接进入公式修改,更方便的方法是用计算参数来指代公式中的常数,需要调节公式时不需进公式只需调节参数就可以了。
比如,经常要修改REF(close,1)中的第二个参数1,这时可以把它设为一个计算参数N,公式写成REF(close,N),到时调节N即可。
计算参数包括参数名称、最小值、最大值、缺省值四个部分。
参数名称用于标识参数,本例我们将参数名定位N,计算公式时采用缺省值计算,而最小值和最大值是参数的调整范围。
设定参数后,在图形分析窗口显示该指标时,指标名跟着有参数,右键点击参数即可对它进行修改。
对于交易系统公式,每个参数还包括一个测试步长,在优化参数时系统从最小值到最大值逐一调整参数,每次调整的增量就是测试步长。
例如最小值1,最大值30,步长10,则系统将测试参数1,11,21。
最大测试步数为10000次。
每个公式可以带有最多16个计算参数。
8、其他语句:
有时我们想指定技术指标线的画法,这时我们可以在语句后加上线形描述符,描述该语句对应的指标线画法。
线形描述符包括STICK:
柱状线;COLORSTICK:
彩色柱状线,当语句结果为正时显示红色,否则显示绿色;VOLSTICK:
成交量柱状线,股价上涨时显示红色空心柱,下跌时显示绿色实心柱;LINESTICK:
同时画出柱状线和指标线;CROSSDOT:
小叉线;CIRCLEDOT:
小圆圈线;POINTDOT:
小圆点线。
五彩K线公式有用来描述显示K线颜色的语句,其实就是在语句后加上色彩描述符,之间用逗号隔开,表示当该句返回非0时K线的颜色。
色彩描述符有:
COLORRED:
红色;COLORGREEN:
绿色;COLORBLUE:
蓝色;COLORBLACK:
黑色:
COLORWHITE:
白色;COLORYELLOW:
黄色:
COLORYELLOW:
青色;COLORF0F000:
晶红色;COLORBROWN:
棕色。
技术指标公式还可以主动设定欲显示的坐标线,例如我们在坐标线位置输入框中写入10;O;10,则显示该指标时出现10,0,10三条坐标线。
特殊数据引用
(1)、指标数据引用
在编制公式过程中,有时需要使用另外一个指标的值,如果按照通常的做法,重新编制这个指标就显得很麻烦,因此很有必要学习使用如何调用别的指标公式。
调用其他指标的基本格式:
”指标.指标线”(参数)
A、指标与指标线之间用点“.”分开,一个指标不一定只有一条指标线,所以有必要在指标后标注指标线的名称,但是如果缺失则表示引用最后一条指标线。
B、参数在表达式的末尾,必须用括号括起来,参数之间用“,”号分开,通过参数设置可选择设定该指标的参数,如果参数缺失则表示使用该指标的默认参数设置(不过我在使用过程中发现,如不写参数,测试就通不过)。
C、整个表达式用引号引在其中,除参数以外。
例如:
”MACD.DEF”(26,12,9)表示计算MACD指标的DEA指标线,计算参数为26、12、9,”MACD”(26,12,9)表示该指标的最后一条指标线,计算参数是26、12、9,”MACD”表示该指标的最后一条指标线,并且使用公式的默认参数。
(2)、其他股票数据引用
使用以下的格式可以在当前的分析界面下引用大盘的数据或者其他个股的数据实现横向上的对比。
A、引用大盘数据
引用大盘数据时使用下列函数:
INDEXC、INDEXV等等。
B、引用个股数据
引用个股数据时使用下列格式:
”股票代码$数据”,在以上格式当中调用CLOSE、VOL、AMOUNT等等,例如,”Z000002$VOL”表示000002该股本周期的成交量。
同时大盘也可视为一只个股来引用,例如,上证”H000001$CLOSE”表示为大盘本周期的收盘价,深市”Z399001$CLOSE”同样表法大盘本周期的收盘价。
(3)、注意事项
在编公式中所运用的标点符号均是在英语状态下的符号。
在编制公式中,有要显示的句子和不显示的句子,要显示用“:
”不要显示用“:
=”,
一个源码中最多只能有16个可显示的句子,并且每句结束后要加分号“;”。
另外,开盘价、收盘价、最高价、最低价,在公式中可用该函数的第一个字母代替。
因此在编公式时不要单独用这几个字母,请要注意。
9、引用其他公式、周期或股票的数据:
(注意:
本点只作为参考,因大智慧未设有引用其它周期的数据功能)
可以在一个公式中引用其他公式、周期或股票的数据,具体做法如下。
1)引用指标公式/交易系统/条件选股公式
可以引用其他技术指标的指标线,写法是"公式名称.指标线名称"(参数表),请注意,参数表中的参数个数应该与该公式的实际参数数量一致,若不写参数表,则表示使用缺省参数。
例如:
"KDJ.K(9,6,6)",表示引用根据(9,6,6)参数计算出KDJ指标中的K指标线数值。
可以引用交易系统公式,写法为"SYSTEM.公式名称.交易类型"(参数表),交易类型包括ENTERLONG、EXITLONG、ENTERSHORT、EXITSHORT,分别表示引用多头买入、多头卖出、空头买入、空头卖出条件。
例如:
"SYSTEM.KDJ.ENTERLONG",表示引用根据缺省参数计算的KDJ交易系统的多头买入条件。
可以引用条件选股公式,写法为"EXPLORER.公式名称"(参数表),例如:
"EXPLORER.KDJ",表示引用根据缺省参数计算的KDJ买入条件选股条件。
2)跨周期引用公式(大智慧不支持)
可以引用其他周期的数据,写法为"公式名称.指标线名称#周期"(参数表),跨周期引用只能从较短周期引用较长周期,反方向的引用不允许。
例如"KDJ.K#WEEK"(9,6,6),表示引用根据(9,6,6)参数计算周线周期的KDJ指标公式K指标线的数值。
其中周期包括MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,分别表示1、5、15、30、60分钟线,以及日线、周线、月线。
3)引用任意股票的数据
可以引用其它股票的数据,写法为:
"股票代码$数据名称",其中数据名称包括OPEN、HIGH、LOW、CLOSE、VOL、AMOUNT,分别表示开盘价、最高价、最低价、收盘价、成交量、成交额。
公式编制
这里举一些最简单的公式例子,有些只有一条语句且函数简单,较复杂的公式中函数复杂且语句较多。
收盘价线
这是最简单的公式:
CLOSE
均线的画法
计算N日内收盘价的算术平均值,它是最常用的指标之一,公式为:
MA(X,N)表示X的N日平均。
例如:
MA1:
MA(CLOSE,5) , coloryellow;
表示为:
参数名 画一条5日收盘价的均线 设置该线为黄色
涨幅
涨幅指今日收盘价相对于昨日收盘价的变动幅度,即(今日收盘价-昨日收盘价)/昨日收盘价*100%, 昨日收盘价的公式为:
REF(CLOSE,1),因此涨幅的公式:
(CLOSEREF(CLOSE,1))/REF(CLOSE,1)
换手率
换手率指当期的成交量占流通股本的比例。
公式:
VOL/CAPITAL
VOL为当期成交量,CAPITAL为流通股本。
五彩K线与交易系统指标的编制方法
一、五彩K线
1、五彩K线简介
简单地说五彩K线,就是对于我们事先描述好的K线形态,大智慧将自动地给我们找出来,同时对满足条件的K线形态赋于颜色,以区别于其他的K线。
依据K线的形态,我们将五彩K线分为“上涨”、“下跌”、“反转”三大类。
2、五彩K线编辑时常用的函数
(1)、BACKSET(X,N)
五彩K线就是对满足条件的K线形态赋于颜色,在这里,我们就需要赋值函数BACKSET赋予满足条件的K线时段以不同的颜色,区分不满足条件的其它时段的K线。
函数BACKSET(X,N)中,X是由逻辑判断语句组合的一个综合条件,N为你意欲赋予颜色的时间长度,该时间长度的取值法为“从当前周期开始向前到N个当前周期”。
(2)、更改颜色
如果不进行任何的颜色设定,系统将以黄色显示五彩K线,目前我们在每个指标中以红色显示五彩K线。
如果要更改颜色,只需要瘵指标中“COLORRED”改为其他颜色即可。
3、五彩K线的编制方法
五彩K线的编制并没有和前面介绍的其他公式有很大的区别,一般的公式编辑是作
为特定的指标来显示,五彩K线将满足条件的连续K线形态赋予颜色,区别于其它的K线,则是把满足设定条件的个股以其们的颜色标明。
(1)阳包阴五彩K线的编制
这里的阳包阴就是说某一天的阳线将前一天的阴线全部包容起来,使得在K线组
合上出现前小后大的形态。
该动态表明前日所有价位买进而未出局者都能获利,从而大鼓舞了人气,为此后的持续上升奠定了基础,是典型的底部信号。
原理:
某一天的阳线将前一天的阴线全部包容起来。
五彩K线的编辑:
REF(OPEN,1)>REF(CLOSE,1) 上一交易日收阴线。
CLOSE>REF(OPEN,1) 收盘价高于上一交易日开盘价。
OPENHIGH>REF(HIGH,1) 最高价高于上一交易日最高价。
LOWCLOSE>OPEN 收阳线
(CLOSEOPEN)>(EMA((HIGHLOW),N))
为了避免小阴小阳的“阳包阴”,我们设定幅
度超过市场N个交易日内平均涨幅。
COLORRED 五彩K线颜色为红色。
那么,整体的公式为:
BACKSET(我们假定的条件,2),COLORRED;