公式系统技术白皮书.docx

上传人:b****6 文档编号:6383972 上传时间:2023-01-05 格式:DOCX 页数:37 大小:47.70KB
下载 相关 举报
公式系统技术白皮书.docx_第1页
第1页 / 共37页
公式系统技术白皮书.docx_第2页
第2页 / 共37页
公式系统技术白皮书.docx_第3页
第3页 / 共37页
公式系统技术白皮书.docx_第4页
第4页 / 共37页
公式系统技术白皮书.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

公式系统技术白皮书.docx

《公式系统技术白皮书.docx》由会员分享,可在线阅读,更多相关《公式系统技术白皮书.docx(37页珍藏版)》请在冰豆网上搜索。

公式系统技术白皮书.docx

公式系统技术白皮书

公式系统

技术白皮书

1、概述2

2、公式基础2

2.1、自定义公式编写规则2

2.2.1语言规范2

2.2.2关于标识符3

2.2.3关于在一条语句后加上线形描述符4

2.2.4关于“空”的问题5

2.2、现在我们以MACD公式为例说明公式的基本要素和规则5

3、函数参考7

3.1、行情函数7

3.2、日期函数9

3.3、引用函数10

3.4、逻辑函数13

3.5、算术运算14

3.6、统计函数15

3.7、指标函数17

3.8、之字转向类函数18

3.9、大盘函数19

3.10、三角函数20

3.11、成本分布函数20

3.12、常数函数22

3.13、绘图函数23

4、公式举例24

4.1、指标举例24

4.2、函数使用技巧27

 

1、概述

公式系统是一套功能强大、使用简单的计算机描述系统。

公式系统有以下特点:

1、公式系统可以用来设计技术指标、交易系统、条件选股和五彩K线公式。

2、技术指标公式描述一个或多个数据的计算方法,公式系统将所有数据计算出来,并以曲线的形式显示;条件选股公式描述了满足什么样条件的股票才是我们需要的,它是一个逻辑表达式,但可以有1-4个表达式分别描述多头、空头的买入和买出四种条件;五彩K线描述了在什么样的条件下K线下添加特定的指示,用以表示某种含义提示用户。

3、公式系统可以以时间序列为基础,其计算对象是一组跟时间递增的数据序列,每一个时间周期包含一组数据,公式系统能对其中任何数据进行操作,每组数据包括开盘价、最高价、最低价、收盘价、成交量和成交额六个数据,如果是在分笔成交分析周期上还有上下三档买卖盘的价和量等数据。

4、数据分析周期就是相临两组数据间的时间间隔,可以是从1分钟到1000天间的某个特定时间间隔不定,还可以是分笔成交分析周期,这种情况下时间间隔不定,每组数据表示一笔成交量。

5、公式系统所有函数中除ZIG之字转向类和BACKSET函数外,其余函数均满足时间不变性,即时间靠后的数据不对时间靠前的结果产生影响。

只有满足时间不变性才能满足因果关系,才不会出现当天并没有出现交易信号,但过后因为股价上扬而冒出买入信号的情况。

ZIG函数主要用于前期形态判断,而BACKSET主要用于五彩K线指示。

因此一般情况下请不要使用这俩类函数。

6、如果本公式系统使用于非股票类分析,请参照其他说明书。

2、公式基础

2.1、自定义公式编写规则

在自定义公式里面如果有多数据项输出,则调用此函数的时候返回值默认为最后一个输出。

如果希望确定某项输出则将函数名指定为其中一项输出。

在自定义公式里面的各种符号(如,“;”)只能用半角不能用全角。

2.2.1语言规范

公式体所有语句

无大小写之分

常数

浮点数、整数、字符串

分隔符

“”,();注释/**/或//

标识符

由字母和数字组成,由字母开头,不分大小写

运算符(优先级从高到低排列,同级同行)

*/

+-

==<>><>=<=

And&&

Or||

赋值语句

赋值a:

=b

条件语句IF(X,A,B)若X不为0则返回A,否则返回B。

无循环语句。

函数调用func(a,b)。

2.2.2关于标识符

标识符在表达式中只存名称,值保留在符号表。

标识符包括函数名、参数名和变量名。

函数名用来传递函数返回值;参数名用于函数调用时的参数传递;变量名在计算中存储中间计算结果。

分隔符

符号

含义

“”

引用字符串

()

控制运算的优先级

每行语句的结束标志

/**/或//

注释,无任何实际功能

赋值语句

其一般形式为:

a:

=b;含义为将b的值付给a。

几个运算符“:

=”“:

”。

其含义分别为“赋值”、“赋值并输出图形”。

 

引用函数/指标

调用函数的基本方式为:

函数名/指标名(参数,参数,…)

其返回值为函数里面的最后一个被调用的语句的值。

例如:

调用KDJ指标。

KDJ函数的名称为kdj,其参数和内容如下:

参数名

最小值

最大值

默认值

N1

1

100

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

则当您在其它函数里输入a:

=”KDJ”(8,6,6)的时候,相当于计算N1=8,M1=6,M2=6时的J值,并把这个值赋给a。

注意:

1、传递的参数数目不等于被调用函数设置的参数数目时。

a、没有传递参数。

则采用原来设置的默认参数计算。

b、传递参数少于被调用函数设置的参数数目。

则将参数传过去,依次改变前面同样数目参数的值,后面其它的参数采用原来设置的默认参数计算。

c、传递参数大于被调用函数设置的参数数目。

则将参数传过去,依次改变被调用函数的参数值,多余的参数不起作用。

2、函数名称不区分大小写。

2.2.3关于在一条语句后加上线形描述符

基本方式为:

一条语句,描述符1,描述符2,描述符3,描述符4。

共四个描述符;

四个描述符的取值如下:

名称

说明

取值

描述符1

图形绘制方式(却省为曲线)

1、STICK:

柱状线,从0到指标值间画垂直线;

2、COLORSTICK:

彩色柱状线,当值为正时显示红色,否则显示绿色;

3、VOLSTICK:

成交量柱状线,当股价上涨时显示红色空心柱,否则显示绿色空心柱;

4、LINESTICK:

同时画出柱状线和指标线;

5、CROSSDOT:

小叉线;

6、CIRCLEDOT:

小圆圈线;

7、POINTDOT:

小圆点线。

8、DRAW3D:

画3d柱状图。

9、LINEDRAW3D:

画3D曲线

描述符2

图形绘制颜色(却省为自动取)

用rgb(r,g,b)取数值

描述符3

图形绘制的线风格(却省为线)

0实线

1破折号式线/*-------*/

2点线/*.......*/

3破折号+点线/*_._._._*/

4破折号+双点线/*_.._.._*/

描述符4

图形绘制的线宽度(却省为自动取)

大于零的常数

2.2.4关于“空”的问题

所谓“空”即指没有数据。

在某些情况下,一些数据项可能取不到数据,这时返回值为“空”。

例如,ref(close,4),其含义为取前四天的收盘价。

如果前四天数据没有,则其值为“空”。

1、“空”与任何数据作计算时,相应计算结果为”空”。

例如:

7×NULL(即“空”)得到的结果为NULL。

2、“空”与任何数据比较大小时,相应结果为“空”。

例如:

-7>NULL(即“空”)得到的结果为NULL。

2.2、现在我们以MACD公式为例说明公式的基本要素和规则

1、一个公式包括公式名称、参数、公式体、注释、参数精灵等部分组成。

2、每一个公式必须有一个名称,这个名称由字母或数字组成。

公式名称在同类公式中必须是唯一的,例如不能同时存在俩个MACD技术指标,但可以存在一个MACD技术指标一个MACD条件选股公式。

公式名称没有字符限制。

3、计算参数:

每个公式可以有0-100个计算参数,计算参数用来替代公式中所需的常数,在使用时可以方便地调节参数,不必修改公式就可以对计算方法进行调节。

计算参数包括参数名称、最小值、最大值、缺省值四个部分。

参数名称用于标识参数,一般情况下计算公式时采用缺省值计算,而最小值和最大值是参数的调整范围。

对于交易系统公式,每个参数还包括一个测试步长,在优化参数时系统从最小值到最大值逐一调整参数,每次调整量就是测试步长。

例如最小值是1,最大值是10,步长是2,则系统将测试参数1,3,5,7,9。

在实际设置时,请注意步长的选择,过大会漏掉一些数据,过小会延长计算时间,每个公式的最大测试步数为10000次,即所有参数变化量的乘积必须小于10000。

例如某公式有俩个参数,参数一最小、最大和步长分别为1、100、1,参数二分别为1、100、2,则参数一变化量为100,参数二变化量为50,总的测试次数为100*50=5000次。

4、公式体由若干语句组成,每一个语句描述一个算法。

关于公式体的具体定义方法见下一小节。

5、公式描述是一段文字,用来简单描述该公式的含义,在公式列表时显示这段文字。

这段文字不宜过长。

6、公式注释是一段文字,相对于公式描述而言它可以更长,主要用来描述一个公式如何使用、注意事项、计算方法等,在使用公式时为用户提供一定的参考。

7、参数精灵用于方便用户设置参数。

对于不熟悉的指标,用户使用时设置参数比较困难,使用参数精灵可以解决这个问题。

例如均线选股系统用于选出短期均线与长期均线发生金叉的股票,用参数精灵可以让用户界面出现“买入条件为□日均线与□日均线发生金叉”,其中‘□’符号表示输入筐,用户可以输入需要的数字,则计算就按照指定的参数运行。

参数精灵的写法是用‘param#1’表示第一个参数。

用‘param#2’表示第二个参数,系统在显示参数精灵时使用输入框代替param#x.例如上面文字在参数精灵设置中应写为“买入条件param#1日均线与param#2日均线发生金叉”。

8、禁用周期表示该公式不能在指定周期进行计算,同时还可以指定默认周期,这样在进行选股、排序等功能时自动使用默认周期。

9、技术指标公式还可以强制设定坐标位置,例如KD指标我们需要在0,20,50,80,100画5条坐标线,可以在坐标线位置输入框中写入0;20;50;80;100。

公式体:

1、公式体由若干语句组成。

每个语句表示一个计算结果,在技术指标上就是一条指标线,语句间用‘;’割开。

每个语句可以有一个名称,该名称写在语句的最前面,并用一个冒号将它和语句分割开。

例如:

DEA:

MA(CLOSE,5);该语句表示求收盘价的的五日均线,语句的名称为DEA。

在后面的语句中可以直接用DEA来替代五日均价,例如:

MA(DEA,5)表示对收盘价的五日均线在求五日平均,相当于MA(MA(CLOSE,5),5)。

2、一个语句如果不需要显示,可以将它定义为中间语句,中间语句必须有名称,用“:

=”替代冒号表示名称,其他与一般语句完全一样。

使用中间语句可以有效降低公式的书写难度,还可以将需要重复使用的语句定义成中间语句以减少计算量,例如我们需要多次使用五日均价,则可以将它定义为中间语句,下面的例子可以看出他的优点:

MA(CLOSE,5)+MA(MA(CLOSE,5),10)+MA(MA(CLSOE,5),20)可以写为

MM:

=MA(CLSOE,5);

MM+MA(MM,10)+MA(MM,20);

3、每个公式最多语句没有限制,中间公式数量也没有限制。

也就是说每个指标可以最多画n条指标线。

4、对于技术指标公式可以在语句后加上线形描述符,用来描述如何画该语句的指标线。

5、每个语句有若干函数通过四则运算或逻辑运算而组成。

函数是公式系统的基本单位,它描述了用户的基本要求、每个函数都由函数名称和参数组成,参数放在函数后的括号内,若干参数量为0个则可以不写括号。

例如CLOSE()函数没有参数,所以在公式中写成CLOSE和CLOSE()都可以。

6、公式系统使用计算符将函数连接成为公式。

计算符号分为算术运算符和逻辑计算符。

算术计算符包括+、-、*、/、他们分别对计算符号两边的数据进行加减乘除计算;逻辑计算符包括>、<、<>、>=、<=、=、AND、OR八种,如果条件成立计算结果就等于1,否则等于0。

例如3+4就等于7,4>3就等于1,4>3AND12>=4的结果等于1,4>3OR3>12的结果等于1.

7、公式系统可以处理的数据分为两类:

变量和常量。

所谓常量就是一个永远不变的数据,变量就是一个随着时间变化而变化的数据,例如成交量,每个函数需要的参数可能是变量也可能是常量,不能随便乱用,函数计算的结果一般是一个变量。

例如计算收盘价均线MA(CLSOE,5),MA函数要求第一个参数为变量,而CLSOE函数返回的正是变量;MA函数要求第一个函数为变量,而CLSOE函数返回的正是一个变量;MA函数要求第二个参数是常量,5可以满足要求。

我们不能这样书写:

MA(5,CLOSE)。

8、除技术指标公式外,其他公式均需逻辑语句表达式,即当语句返回0时表示否,返回非0时表示是。

例如CLOSE>OPEN语句,当条件满足时返回0。

如果用CLOSE-OPEN语句,则只有当平盘时返回0,其他情况下均表示条件满足。

条件选股公式只能有一条语句,用来表示条件是否成立;交易系统公式需要1-4条语句表示多头和空头的买入买出条件;五彩K线公式可以有n条语句,描述最多n种不同的情况。

9、交易系统公式需要设定买入和买出条件语句,分别用ENTERLONG,ENITLONG,ENTERSHORT,EXITSHORT作为表达式名称表示多头买入和多头买出、空头买入和空头买出条件,当这些语句返回非0时,表示需要进行相应的操作。

10、指标引用。

在某公式中若需计算另一指标的值,可以引用指标,格式为:

“指标.指标线”(参数),指标与指标线之间用小数点割开。

例如:

“MACD.DEA”(26,12,9)表示计算MACD指标的DEA指标线,计算参数用26,12,9。

指标线可以省略,这样表示该指标的最后一条指标线;参数可以省略,表示使用缺省参数,因此“MACD”就表示MACD指标线的最后一条指数线,并且计算时用缺省参数26,12,9。

11、跨周期引用。

利用本功能可以引用某指标在另外一个分析周期的数值。

跨周期引用只能引用更长周期的数值,例如日线分析时只能引用周线或月线的数值。

跨周期引用格式为:

“指标。

指标线#周期”(参数)和“指标。

指标线##周期”(参数),其中#周期表示所引用的分析周期,其他定义与指标引用相同。

引用周期有可以是MIN1、MIN5、MIN15、MIN30、MIN60、DAY、WEEK、MONTH,分别表示引用1分钟、5分钟、15分钟、30分钟、60分钟、日线、周线或月线的数值。

使用#和##表示不同的对齐方式,#表示引用本周期数值,##表示引用上周期数值。

假如7月1日是星期一,则使用#WEEK表示引用本周数据,使用的是7月1日—7月5日之间的周线数据;而##WEEK则表示引用上周数据,使用的是6月24日—6月28日间的周线数据。

由此可见,使用#引用本周期数据会发生引用未来数据的问题,它不能保证时间不变性,因此应当尽量避免使用,但使用##时没问题。

12、其他股票数据引用:

引用大盘数据可以用INDEXC等函数,引用其他股票可以写为:

“股票代码$数据”,$数据可以是$OPNE、$HIGH、$LOW、$CLOSE、$VOL、$AMOUNT,分别表示引用开盘价、最高价、最低价、收盘价、成交量和成交金额。

例如“000001$CLOSE”表示000001的收盘价。

3、函数参考

3.1、行情函数

行情函数是最基本的函数,它为我们提供计算所需的数据,而其它多数函数所需的计算数据一般也是由行情函数产生的。

例如:

OPNE返回开盘价;(OPNE+CLOSE)/2返回中介价等。

OPEN

开盘价,取得本周期开盘价,单位:

元。

参数:

HIGH

最高价,取得本周期最高价,单位:

元。

参数:

LOW

最低价,取得本周期最低价,单位:

参数:

AMOUNT

成交额,取得本周期成交额,单位:

参数:

ADVANCE

上涨家数,取得本周期上涨家数

限制:

仅对大盘有效,其它股票返回0

参数:

DECLINE

下跌家数,取得本周期下跌家数

限制:

仅对大盘有效,其它股票返回0

参数:

BUYVOL

主动性买盘成交量,取得本笔成交主动性买盘成交量。

当本笔成交为主动性买盘时,其数值等于成交量,否则为0

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

BUYVOL

主动性卖盘成交量,取得本笔成交主动性卖盘成交量。

当本笔成交为主动性卖盘时,其数值等于成交量,否则为0

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

ISBUYORDER

测试是否以主动性买盘成交,取得本笔成交是否为主动性买单。

当本笔成交为主动性买盘时,其数值等于1,否则为0。

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

BIDPRICE(N)

委买价,返回三档买盘价格,N取值范围1—3,分别取得买1、买2和买3的价格。

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

例:

BIDPRICE

(1)-BIDPRICE

(2)>0.1表示买一价与买二相差1毛钱以上

BIDVOL(N)

委买量,返回三档买盘量,N取值范围1—3,分别取得买1、买2和买3的委买量。

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

例:

BIDVOL

(1)+BIDVOL

(2)+BIDVOL(3)表示三档买盘总委买量

ASKPRICE(N)

委卖价,返回三档卖盘价格,N取值范围1—3,分别取得卖1、卖2和卖3的委卖量。

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

例:

ASKPRICE

(1)-CLOSE表示买一价与成交价之差

ASKVOL(N)

委卖量,返回三档卖盘量,N取值范围1—3,分别取得卖1、卖2和卖3的量。

限制:

仅在分笔成交分析周期中对个股分析时有效,否则返回0。

参数:

例:

ASKVOL

(1)>1000表示卖一量大于1000手

ISUP

测试本周期是否收阳,若本周期收盘价>开盘价,返回值为1,否则为0

参数:

ISEQUAL

测试本周期是否平盘,若本周期收盘价=开盘价,返回值为1,否则为0

参数:

ISDOWN

测试本周期是否收阴,若本周期收盘价<开盘价,返回值为1,否则为0

参数:

EXTDATA(N)

扩展数据,取得第N号扩展数据,扩展数据是用户自定义的超出基本日线数据以外的数据。

限制:

仅在日线分析周期有效

参数:

常量,取值范围是1—11。

3.2、日期函数

日用函数返回本周期的时间特性,使用他们可以得到数据的年、月、日、时、分钟特性。

例如:

YEAR>=1998表示若数据日期在1998年1月1日之后返回1,否则返回0。

DAY

日期,取得本周期的日期,其有效返回值为1—31,分别代表本周期在当月中的日期。

参数:

例:

DAY<=15,表示当天处于上半月

WEEKDAY

星期,取得本周期的日期,其有效返回值为0—6,代表星期日、星期一。

星期六。

参数:

例如:

WEEKDAY=1表示当天是星期一

MONTH

月份,取得本周期的月份,其有效返回值为1—12,分别代表1—12月。

参数:

YEAR

年份,取得本周期的年份,其有效返回值1970—2038,分别代表1970年、1971年、。

2038年

参数:

例:

YEAR>1998OR(YEAR=1998ANDMONTH>=6)表示是在1998年6月以后

HOUR

小时,取得该周期的小时数,其有效返回值0—23,分别代表0点、1点、。

23点。

限制:

对于日线及更长的分析周期该函数返回值恒为0。

参数:

MINUTE

分钟,取得该周期的分钟数,其有效返回值0—59,分别代表0分、1分、。

59分。

限制:

对于日线及更长的分析周期该函数返回值恒为0。

参数:

DATE

时间,取得该周期的日期,格式为YYYMMDD,表示以1900年为基期的日期,注意2000年表示100年而不是2000年。

参数:

例:

DATE=990103表示当天为1999年1月3日;

DATE=1000505表示2000年5月5日

TIME

时间,表示本周期的时分秒数,格式为HHMMSS,有效范围000000—235959,采用24小时制。

限制:

对于日线及更长的分析周期该函数返回值恒为0。

参数:

例:

TIME>93000表示时间大于09:

30:

00

3.3、引用函数

引用函数主要用于对前后相邻数据进行操作。

例如:

REF(CLOSE,12)表示12天前的收盘价。

Count(x,n)

统计满足条件的周期数。

该函数统计本周期及以前总共N周期中满足条件X的周期数:

若N=0则表示统计所有数据。

参数:

X,变量,表示统计条件,是逻辑值

N,常量或变量,表示统计时间的长度

例:

COUNT(CLOSE>OPEN,20):

统计20周期内收阳的周期数。

COUNT(CLOSE>12。

5,0):

统计历史上所有价格高于12。

5元的周期数

SUM(X,N)

求总和。

该函数统计本周期及以前共N周期中X的总和,若N=0则统计所有数据。

参数:

X:

变量,表示被统计时间长度。

N:

常量或变量,表示统计时间长度

例:

SUM(VOL,0):

统计上市以来的成效量总和

SUM(VOL,HHVBARS(HIGH,40)):

统计创40日新高以来的成交量总和。

REF(X,N)

引用若干周期前的数据,该函数返回N周期前的X值。

参数:

X:

变量,表示需要引用的数据

N:

常量或变量,表示向前引用的周期数,必须大于等于1

例:

REF(CLOSE,1):

表示上一周期的收盘价,在日线上就是昨天收盘价。

REF(LOW,LLVBARS(LOW,40)):

取得创40天新低的最低价格。

BSCKSET(X,N)

向前赋值,如果X条件成立,则将当前周期及以前共N个周期的返回值设为1。

参数:

X:

变量,表示赋值条件,是逻辑值,

N:

变量或常量,表示赋值天数,不能为负数。

例:

BACKSET(CLOSE>OPEN,2)表示若收阳则本周期及前一周期的返回值为1。

注意:

本函数是少数几个不满足时间不变性的函数之一,它主要在五彩K线中用于设定需要彩色的周期数,一般情况下请不要随便使用。

HHV(X,N)

历史最大值,求本周期及以前共N周期内X的最大值,N=O则求全部数据的最大值。

参数:

X:

变量,需要求最大值的数据

N:

常量或变量,统计时间长度,必须大于等于1。

例:

HHV(HIGH,30):

求30周期内的最高价。

LLV(X,N)

求历史最小值,求本周期及以前共N周期内X的最小值,N=0则求全部数据的最小值,

参数:

X:

变量,需要求最小值的数据

N:

常量或变量,统计时间长度,必须大于毛等于1。

例:

LLV(LOW,0):

求上市以来的最低价。

MA(X,N)

简单移动平均,求X的N周期简单移动平均值。

算法:

(X0+X2+。

XN-1)/n,其中XI表示X表示X从本周期向前数的第I个数据。

参数:

X:

变量,待统计数据

N:

常量,计算时间长度

例:

MA(CLOSE,10)表示求10日均价。

以下是几种指数平滑移动平均,所谓指数平滑就是一种迭代算法,其原理均为:

Y=Y,*(1-a)+x*a

其中X表示待求平均数据,Y

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1