首页 › 当代文学 › 大智慧公式教程 › 第三章

第三章

大智慧公式教程 · 作者:佚名 · 字数:5,013 · 2026-10-09 13:21
支持中文男声 / 女声,可调语速
字号
背景
行距

许多软件的选股功能都不够强大和灵活。例如有些软件的条件选股功能只能让用户按照特定的模式进行设定,适用面很窄。

公式系统类似于一种编程语言,用户可以数学公式的形式实现任何自己期望的技术指标和选股条件等。可编制的公式可以完全公开算法,用户可以自行分析、评价和修改,做到心中有数。

公式系统的作用是什么呢?公式系统其实就是对一系列随时间变化的原始数据组序列进行代数和逻辑计算。为什么是数据组序列呢?因为每一个时间周期(即相邻两组数据间的时间间隔)都包含了一组原始数据,如开高低收量额,公式系统能对其中的任何原始数据进行操作。使用者定义出如何对原始数据进行处理得到一个新的数据,公式系统读出原始数据并按要求计算出使用者定制的数据,并以曲线、图形、指示等形式显示出来。

公式系统可以编辑四种类型的公式,分别是技术指标、交易系统、条件选股和五彩K线公式。技术指标公式是最基本的公式,它用于指标图形的绘制。技术指标公式结合选股条件逻辑判断表达式,即得到条件选股公式,用于条件选股。技术指标公式结合买卖逻辑判断表达式,得到交易系统公式,用于交易系统指示。技术指标公式结合色彩逻辑判断表达式,即得到K线模式公式,用于描述特定的K线模式。公式的编辑在公式编辑器中完成。

公式系统处理的原始数据的分析周期(即相邻两组数据间的时间间隔)可以从1分钟到1000天间的任意值,也可以是分笔成交数据,我们用鼠标把一个公式拖到某只证券的某个周期的图形分析窗口,则该公式处理这个周期的原始数据,如开高低收量额,改变分析窗口显示的分析周期,则公式处理新的分析周期的数据。

公式系统对数据的运算是基于一系列函数,函数中除ZIG之字转向函数类和BACKSET函数外,其余函数均满足时间不变性,即时间靠后的数据不对时间靠前的结果产生影响。

公式设定步骤

1.设定公式名称:每个公式都有自己的名称,它由字母或数字组成,最多可以有9个字符。请注意,公式名称在同类公式中不能重复。

2.描述公式:用于简单描述该公式的含义,若输入,则在公式列表中会显示这段文帧?br>

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线公式可以有1-6条逻辑表达式语句,最多描述6种不同的颜色。

7、设计计算参数:

我们有时需要调节公式中的常数来看公式的表现,可以直接进入公式修改,更方便的方法是用计算参数来指代公式中的常数,需要调节公式时不需进公式只需调节参数就可以了。比如,经常要修改REF(close,1)中的第二个参数1,这时可以把它设为一个计算参数N,公式写成REF(close,N),到时调节N即可。计算参数包括参数名称、最小值、最大值、缺省值四个部分。参数名称用于标识参数,本例我们将参数名定位N,计算公式时采用缺省值计算,而最小值和最大值是参数的调整范围。设定参数后,在图形分析窗口显示该指标时,指标名跟着有参数,右键点击参数即可对它进行修改。对于交易系统公式,每个参数还包括一个测试步长,在优化参数时系统从最小值到最大值逐一调整参数,每次调整的增量就是测试步长。例如最小值1,最大值30,步长10,则系统将测试参数1,11,21。最大测试步数为10000次。每个公式可以带有最多16个计算参数。

公式编制

这里举一些最简单的公式例子,有些只有一条语句且函数简单,较复杂的公式中函数复杂且语句较多。

收盘价线

这是最简单的公式:

CLOSE

均线的画法

计算N日内收盘价的算术平均值,它是最常用的指标之一,公式为:MA(X,N)表示X的N日平均。

例如:

MA1: MA (CLOSE,5) , coloryellow ;

表示为: 参数名 画一条5日收盘价的均线 设置该线为黄色

涨幅

涨幅指今日收盘价相对于昨日收盘价的变动幅度,即(今日收盘价-昨日收盘价)/昨日收盘价*100%, 昨日收盘价的公式为:REF(CLOSE,1),因此涨幅的公式:

(CLOSE-REF(CLOSE,1))/REF(CLOSE,1)

换手率

换手率指当期的成交量占流通股本的比例。

公式:

VOL/CAPITAL

VOL为当期成交量,CAPITAL为流通股本。

创新高

创新高指当日最高价是最近一段时间的最高价:

HIGH=HHV(HIGH,N)

其中的HIGH为当期最高价,HHV(X,N)是求N周期内X最高值。因此该公式的含义是当日最高价创N日新高时返回值为1,否则为0。

横盘整理

横盘整理指最近一段时期价格在一定幅度之内摆动:

(HHV(CLOSE,10)-LLV(CLOSE,10))/CLOSE<0.05

其中的LLV(X,N)是求N周期内X最低值。因此该公式表示10日收盘价振幅振幅在5%以内。

区间统计

例如,要取得2002年2月1日到2002年12月30日间的最低价。思考一下,一段时间的最低价必然是该段时间内每个分析周期的最低价中最小的那个。所以我们要引用的数据是该段时间各分析周期的最低价,而不需要用到开盘价、收盘价或最高价;还要将不需要的数据,即区间外的数据设为0。语句为:

LL:=IF(YEAR=2002 AND MONTH>=2 AND MONTH<=12,LOW,0)

该语句用一个条件函数来判断时间是否处于规定区间,若是则返回最低价,否则返回0。

我们再用LLV函数,就可求得该段时间最低的最低价:

LLV(LL,0)

技术指标公式

技术指标公式用于绘制技术指标线。以KDJ指标为例,右键点击KDJ,选择“编辑公式”后打开公式算法编辑器,显示出KDJ指标公式的内容。

参数名称:最小值,最大值,缺省值

N: 1 10O 9

M1: 2 40 3

M2: 2 40 3

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;

K:SMA(RSV,M1,1);

D:SMA(K,M2,1);

J:3*K-2*D

该公式绘制K、D、J两条指标线。RSV行是一个中间语句,计算当期收盘价与N天内最低价之差除以N内最高价与最低价之差的比值,再乘以系数100。K线为RSV的M1天移动平均线,D线为线K的M2天移动平均线,J线为K线与J线的差值。

(以下是引用‘wjwjc’版主对计算‘5日均线上升角度’的实例讲解

aa:=ma(c,5);{这是5日均线}

bb:=ref(ma(c,5),1);{这是昨日5日均线}

cc:/bb>n/100;{这是5日均线增长比率,比率越大,其上长的斜率就越大}

n是参数,n%是5日均线的增长比率,因此n定5以上可能其的斜率就越大,你可试试。)

(对于时间限制的问题,我们就以‘庄家进出’公式来作分析了解。

Var1:=IF(YEAR>=2034 AND MONTH>=1,0,1);

{VAR1赋值:如果年份>=2034 AND 月份>=1,返回0,否则返回1}

{点评:这个语句在配合其它语句使用的情况下可起到时间限制作用}

VarC:=MA(SUM(IF(CLOSE>REF(CLOSE,1),VOL,IF(CLOSE<REF(CLOSE,1),0-VOL,0)),0)/25000,2)*Var1;

{VARC赋值:如果收盘价>昨收,返回成交量(手),否则返回(如果收盘价<昨收,返回0-成交量(手),否则返回0)的历史累和/25000的2日简单移动平均*VAR1}

{点评:在这句用到了VAR1,当VAR1符合条件即:年份>=2034 和 月份>=1时,则VAR1=0,这样以后计算出来的结果全是0,这时该指标便毫无意义了,起到了时间限制的作用。}

分界线: EMA(VarC,26)*Var1, LINETHICK2, COLORf0f000;

{输出分界线: VARC的26日异同移动平均*VAR1, LINETHICK2, COLORF0F000}

庄家线1: EMA(VarC,1)*Var1, COLORRED;

{输出庄家线1: VARC的1日异同移动平均*VAR1, 画红色}

庄家线2: EMA(VarC,6)*Var1, COLORYELLOW;

{输出庄家线2: VARC的6日异同移动平均*VAR1, 画黄色}

庄家线3: EMA(VarC,12)*Var1, COLOR00ff00 ;

{输出庄家线3: VARC的12日异同移动平均*VAR1, COLOR00FF00 })

颜色代码

如:colorred{红}

colormagenta{品红} coloryellow{黄} colorgray{灰} colorffff00{兰} colorblue{青} colorwhite{白} colorgreen{绿} colorbrown{棕}

linethick{0--7指标线粗细} linethick{同时显示柱状线和指标线}

circledot{空心园点} pointdot{小点} pointdot,linethick2{实心方点}

crossdot{X点状线} cmcledot{0点状线} stick{显示} colorstick{显示}

目录 推荐给好友

书友评论 (0 条)

游客也可评论,登录后可享更多权益
还没有评论,快来抢沙发~