【转】同花顺系统公式编写教程及函数用法基础(一)语言规范: 在自定义公式里面的各种符号(如,“;” )只能用半角不能用全角。 关键字 if else while break continue return (无大小写之分) 赋值语句: 其一般形式为: 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的加权移动平均。 17、求和:向前累加到指定值到现在的周期数。 用法:SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数。例如:SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数。 时间函数: 1、总开盘分钟:求当前代码类型的开市交易时间。 用法:TRADETIME。返回交易时间,单位为分钟。目前一般市场都返回242,与日期或具体的股票无关。 2、距开盘分钟:求当前时刻距开盘有多长时间。 用法:FROMOPEN。返回当前时刻距开盘有多长时间,单位为分钟。例如:当前时刻为早上十点,则返回31。 3、距午夜秒:求当前时刻距开盘有多长时间。 用法:FROMNIGHT。返回当前时刻距午夜有多长时间,单位为秒。例如:当前时刻为早上十点,则返回36000。 4、时间格式:转换时间格式。 用法:FORMATTIME(N)。目前只支持 N=1 把当前时间转换成距开盘分钟数返回。例如:分时中的量比曲线公式:(VOL*(TRADETIME+1)*5)/(FORMATTIME(1)*FIVEDAYVOL)。 5、时间差:计算两个时间之间的差。 用法:COUNTTIME(N,L,K)。N、L为时间,其格式为YYYYMMDD。K为1、2或者3。当K为1时返回第二个之间比第一个时间晚多少年。当K为2时返回第二个之间比第一个时间晚多少月。当K为3时返回第二个之间比第一个时间晚多少日。例如:COUNTTIME(20000808,19990606,2)其返回值为-2。注意:这里返回值有正负号。 算术函数: 1、绝对值:求绝对值。 用法:ABS(X)返回X的绝对值。例如:ABS(-34)返回34。 2、介于:介于两个数之间。 用法:BETWEEN(A,B,C)表示A处于B和C之间时返回1,否则返回0 例如:BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间。 3、最大值:求最大值。 用法:MAX(A,B)返回A和B中的较大值。例如:MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0。 4、最小值:求最小值。 用法:MIN(A,B)返回A和B中的较小值。例如:MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值。 5、求模运算:求模运算。 用法:MOD(A,B)返回A对B求模。例如:MOD(26,10)返回6。 6、求逻辑非:求逻辑非。 用法:NOT(X)返回非X,即当X=0时返回1,否则返回0。例如:NOT(5>3)返回0。 7、范围:介于某个范围之间。 用法:RANGE(A,B,C)表示A大于B同时小于C时返回1,否则返回0。例如:RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10))表示收盘价大于5日均线并且小于10日均线。 8、求相反数:求相反数。 用法:REVERSE(X)返回-X。 例如REVERSE(CLOSE)返回-CLOSE。 9、余弦值:求余弦值。 用法:COS(X)返回X的余弦值。 10、正弦值:求正弦值。 用法:SIN(X)返回X的正弦值。 11、平方根:开平方。 用法:SQRT(X)为X的平方根。例如:SQRT(CLOSE)收盘价的平方根。 12、上穿:两条线交叉。 用法:CROSS(A,B)表示当A从下方向上穿过B时返回1,否则返回0。例如:CROSS(MA(CLOSE,5),MA(CLOSE,10))表示5日均线与10日均线交金叉。 13、维持:两条线维持一定周期后交叉。 用法:LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返回1,否则返回0。例如:LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示5日均线维持5周期后与10日均线交金叉。 14、空:判断是否为空。 用法:ISNULL(A)表示如果A为空(即没有数据)则返回1,否则返回0。 15、幂:求幂。 用法:POW(X,Y)。求X的Y次幂。例如:POW(2,3)为8。 绘图函数 位图 含义:在图形上绘制位图。 填充背景 含义:根据条件填充背景区域。 画图标 含义:在图形上绘制小图标。 显示文字 含义:在图形上显示文字。 RGB颜色 含义:指定颜色。 画柱线 用法: 提示文字 TIPTEXT(COND,PRICE,TEXT),当COND条件满足时,在PRICE位置显示图标,若PRICE为0,则在图形底部显示图标。 画垂直线 含义:在图形上绘制垂直线。 画水平线 含义:在图形上绘制水平线。
这里举一些最简单的例子,有些只有一条语句且函数简单,较复杂的公式中函数复杂且语句较多。
CLOSE 均线的画法 计算N日内收盘价的算术平均值,公式为:MA(X,N)表示X的N日平均。 例如: MA1: MA (CLOSE,5) , coloryellow ; 表示为: 参数名 画一条5日收盘价的均线 设置该线为黄色 换手率 换手率指当期的成交量占流通股本的比例。 乖离率 当前股价与均线的偏差的程度 量比 当期成交量与5日均量的比
创新高 创新高指当日最高价是最近一段时间的最高价: HIGH=HHV(HIGH,N) 其中的HIGH为当期最高价,HHV(X,N)是求N周期内X最高值。因此该公式的含义是当日最高价创N日新高时返回值为1,否则为0。
放量、缩量(成交量函数为VOL) 上涨、下跌 上涨 今天的涨幅达到5%以上,表示如下: close>ref(close,1)>1.05; 下跌 今天的跌幅达到5%以上,表示如下: close/ref(close,1)<0.95; 描述K线 阳线 close>open; 阴线 close< open; 高开 open>ref(close,1); 低开 open< ref(close,1); 跳空高开(high为最高价) open>ref(high,1); 跳空低开(low为最低价) open< ref(low,1); 引用大盘数据 INDEXDATA(“N”,&X,K) INDEXDATA 求某商品相关的数据 个股于大盘的比较 股价在N日线附近--这可是反映股价调整幅度的好公式(选股) 只显示数值不显示曲线 在曲线属性-输出线形的勾去掉,在公式语句使用输出符出“:” |
|