同花顺公式编写及函数
周期:
由于证券市场里的各项数据都与代码、时间密切相关,所以在这里的各项数据都只能用于特定的一类或几类代码及相应的一个或几个周期。(注意:同一个数据项可能适用于多类代码及多个周期,其具体的数值也将不同。)
代码的分类:个股(含债券)。沪深指数(仅1A0001(统计上海A、B股基金)、1A0002(统计上海A股)、1A0003(统计上海B股)、399001(统计深圳A、B股基金)、399002(统计深圳A股)、399003(统计深圳B股)六个指数)。期货。
周期分类:实时(记录当前传过来的数据)、成交明细(记录每一笔成交的数据)、分时(记录每分钟成交的数据)、分钟K线(以1分钟为单位的K线数据)、日K线(以1个交易日为单位的K线数据)。
注意: 基本数据项自身并不带周期,也就是说编写公式的时候,如果所选用的周期不在此数据项的适用范围内,测试公式的时候系统是不会报错的,但这个数据项的数值将为“空”,即取
不到任何数据。
注意: 所有的基本数据项都可以直接拖到表格里,它将依照表格的代码、周期而显示相应的数值。也都可以直接拖到窗口里作为一个曲线输出,但一般不推荐这样做,如果要画曲线最好新编写一个“曲线公式”。
其返回值为函数里面的return语句规定的返回值。若无return语句,则返回被调用函数里,以函数名命名的变量的值。若无以函数名命名的变量,则返回最后一个输出的值。若无输出的值,则返回最后一个被调用的语句的值。
例如:调用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、函数名称不区分大小写。
3、新建的函数,其函数名可能与其它已存在的函数里面的内部变量重名。这样在调用那个函数时,那个内部变量将变成对这个新建函数的函数调用,从而产生错误。所以,在新建函数起名时要注意。
返回值:自定义公式里面如果有多数据项输出,则调用此函数的时候返回值默认为最后一个输出。如果希望确定某项输出则可用return,或者将函数名指定为其中一项输出。
循环语句:
while循环的一般形式为:
while(条件) 语句;
while循环表示当条件为真时, 便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。
注意:
1、可以有多层循环嵌套。
2、语句可以是语句体, 此时必须用"{"和"}"括起来。
break语句
break语句通常用在循环语句中。当break语句用while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起。即满足条件时便跳出循环。
注意:
1、break语句对if-else的条件语句不起作用。
2、在多层循环中, 一个break语句只向外跳一层。
continue 语句
continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。
continue语句只用在while循环体中, 常与if条件语句一起使用, 用来加速循环。
关于“空”
所谓“空”即指没有数据。在某些情况下,一些数据项可能取不到数据,这时返回值为“空”。例如,yearrep(&jlr,4),其含义为取该公司3年前年报的净利润。如果某家公司上市时间较短,而无三年前的年报数据,则其值为“空”。
1、“空”与任何数据作计算时,相应计算被取消。
例如:7×NULL(即“空”)得到的结果为7。
2、“空”与任何数据比较大小时,“空”较小。
例如:-7>NULL(即“空”)得到的结果为1(即条件满足)。
这样的结果可能与您原来希望得到的数值不符,如果您想避免这种情况可以用ISNULL函数来判断某个数据是否为“空”(相关说明见后面的系统函数说明部分)。
调用函数的基本方式为:函数名(参数,参数,…)
同花顺系统公式编写教程及函数用法基础(一)
在自定义公式里面的各种符号(如,“;” )只能用半角不能用全角。
常数  浮点数、整数、字符串
分隔符 “ ” ‘ ’ ( ) ; { } 注释/* */
标识符    由字母和数字组成,由字母开头,不分大小写
运算符(优先级从高到低排列,同级同行)
* /    + -    != > < >= <=    And  Or
语句赋值    a = b
条件    IF (a==b) c=d;
循环    while a==b c=d;
函数调用    func(a,b)
赋值语句:
其一般形式为:
a=b;        含义为将b的值付给a。
几个运算符“=”赋值、 “:=” 赋值“:”赋值并输出数值或字符串“:>”赋值并输出图形。
注意:“=”和“:=”两个运算符的意义、用法完全相同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。
同花顺公式函数注释(常用部分)
逻辑函数:
1、条件函数:根据条件求不同的值。
用法:IF(X,A,B)若X不为0则返回A,否则返回B。 例如:(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值。
引用函数:
1、满足条件的周期数:统计满足条件的周期数。
用法:COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。例如:COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数。
2、第一个条件成立到当前的周期数:统计第一个条件成立到当前的周期数。
用法:BARSSINCE(X):第一次X不为0到现在的天数。例如:BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数。
3、上一次条件成立到当前的周期数:上一次条件成立到当前的周期数。渐变颜代码大全
用法:BARSLAST(X),上一次X不为0到现在的天数。例如:BARSLAST(CLOSE/REF(CLOSE,1)>=1,1)表示上一个涨停板到当前的周期数。
4、有效周期数:求总的周期数。
用法:BARSCOUNT(X),第一个有效数据到当前的天数。
5、向前赋值:将当前位置到若干周期前的数据设为1。
用法:BACKSET(X,N),若X非0,则将当前位置到N周期前的数值设为1。例如:BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0。
6、求和:求总和。
用法:SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始。例如:SUM(VOL,5)周期设为日线时,表示最近5个交易日的成交量之和。SUM(VOL,0)表示从传数据过来第一天起的成交量总和,具体如在区间统计里统计“总手” SUM(VOL,0)即是指全区间的成交量之和。
7、移动平均:求移动平均。
用法:SMA(X,N,M),求X的N日移动平均,M为权重。算法:若Y=SMA(X,N,M)则 Y=[M*X+(N-M)*Y']/N,其中Y'表示上一周期Y值,N必须大于M。例如:SMA(CLOSE,30,1)表示求30日移动平均价。
8、向前引用:引用若干周期前的数据。
用法:REF(X,A),引用A周期前的X值。例如:REF(CLOSE,1)表示上一周期的收盘价,在日线上就是昨收。
9、简单移动平均:求简单移动平均。
用法:MA(X,N),求X的N日移动平均值。算法:(X1+X2+X3+,,,+Xn)/N。例如:MA(CLOSE,10)表示求10日均价。
10、最低值:求最低值。
用法:LLV(X,N),求N周期内X最低值,N=0则从第一个有效值开始。例如:LLV(LOW,0)表示
求历史最低价。
11、最高值:求最高值。
用法:HHV(X,N),求N周期内X最高值,N=0则从第一个有效值开始。例如:HHV(HIGH,30)表示求30日最高价。
12、指数平滑移动平均:求指数平滑移动平均。
用法:EMA(X,N),求X的N日指数平滑移动平均。算法:若Y=EMA(X,N)则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。例如:EMA(CLOSE,30)表示求30日指数平滑均价。
13、动态移动平均:求动态移动平均。
用法:DMA(X,A),求X的动态移动平均。算法: 若Y=DMA(X,A)则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1。例如:DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价。
14、最高值周期数:求上一高点到当前的周期数。
用法:HHVBARS(X,N):求N周期内X最高值到当前周期数,N=0表示从第一个有效值开始统计。例如:HHVBARS(HIGH,0)求得历史新高到到当前的周期数。
15、最低值周期数:求上一低点到当前的周期数。
用法:LLVBARS(X,N):求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计。例如:LLVBARS(HIGH,10)求得10日最低点到当前的周期数。
16、加权移动平均:求加权移动平均。
用法:WMA(X,A),求X的加权移动平均。
算法:若Y=WMA(X,A) 则Y=(N*X0+(N-1)*X1+(N-2)*X2)+...+1*XN)/(N+(N-1)+(N-2)+...+1) X0表示本周期值,X1表示上一周期值...。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。