
同花顺常用公式函数大全.doc
20页同花顺公式编写及函数周期:由于证券市场里的各项数据都与代码、时间密切相关,所以在这里的各项数据都只能用于特定的一类或几类代码及相应的一个或几个周期〔注意:同一个数据项可能适用于多类代码及多个周期,其具体的数值也将不同〕代码的分类:个股〔含债券〕沪深指数〔仅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 9M1 2 40 3M2 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〔即“空〞〕得到的结果为72、“空〞与任何数据比拟大小时,“空〞较小例如:-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,否那么为06、求和:求总和用法: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表示上一周期值...例如:WMA(CLOSE,20)表示求20日加权均价17、求和:向前累加到指定值到现在的周期数用法:SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数时间函数:1、总开盘分钟:求当前代码类型的开市交易时间用法:TRADETIME返回交易时间,单位为分钟目前一般市场都返回242,与日期或具体的股票无关2、距开盘分钟:求当前时刻距开盘有多长时间用法:FROMOPEN。
返回当前时刻距开盘有多长时间,单位为分钟例如:当前时刻为早上十点,那么返回313、距午夜秒:求当前时刻距开盘有多长时间用法:FROMNIGHT返回当前时刻距午夜有多长时间,单位为秒例如:当前时刻为早上十点,那么返回360004、时间格式:转换时间格式用法:FORMATTIME(N)目前只支持 N=1 把当前时间转换成距开盘分钟数返回例如:分时中的量比曲线公式:(VOL*(TRADETIME+1)*5)/(FORMATTIME(1)*FIVEDAYVOL)5、时间差:计算两个时间之间的差用法:COUNTTIME〔N,L,K〕N、L为时间,其格式为YYYYMMDDK为1、2或者3当K为1时返回第二个之间比第一个时间晚多少年当K为2时返回第二个之间比第一个时间晚多少月当K为3时返回第二个之间比第一个时间晚多少日例如:COU。
