通达信公式编写函数
(2013-11-30 09:49:26)
标签:
财经 |
分类: 选股公式 |
TDX的公式编写系统用了多类的函数,以达到快速提取数据和提高运算能力,同时简化计算过程的要求。因此在不同类型的函数我们赋予了相当精确的含 义。有的函数定义为行情数据提取函数,那么它的功能就是从静态历史上的行情数据或者动态及时盘中数据提取我们所需要的数据以方便以后的分析和计算。有的函 数定义为运算函数,是考虑到一些复杂的数学计算过程过于冗长,从而设计的简化运算函数等等。在以下的几节当中,我们将会分别介绍一共10类的函数。
一、行情函数 (OPEN、CLOSE、HIGH、LOW、VOL等)
二、大盘函数(INDEXA、INDEXC、INDEXH等)
三、常数函数(包括财务函数和动态行情函数)
四、时间函数 (DATE、DAY、TIME等)
五、引用函数(MA、HHV、COUNT、REF、SUM、SMA等)
六、逻辑算术函数(IF、CROSS、NOT等)
七、数学函数(MAX、MIN、LN、三角函数等)
八、统计函数(STD、VAR、AVEDEV等)
九、指标函数(PEAK、SAR、COSET、WINNER、ZIG等)
十、绘图函数(DRAWLINE、DRAWTEXT等)
十一、横向统计函数
引用函数
函数: |
DRAWNULL |
说明: |
当前值不画线返回无效数。 |
用法: |
DRAWNULL不画线。 |
例如: |
IF(CLOSE>REF(CLOSE,1),CLOSE,DRAWNULL)表示下跌时分析图上不画线。 |
函数: |
BACKSET (X,N) |
说明: |
向前赋值将当前位置到若干周期前的数据设为1。 |
用法: |
BACKSET(X,N),X非0,则将当前位置到N周期前的数值设为1。 |
例如: |
BACKSET(CLOSE>OPEN,2)若收阳则将该周期及前一周期数值设为1,否则为0 |
函数: |
BARSCOUNT(X) |
说明: |
有效值周期数 求总的周期数。 |
用法: |
BARSCOUNT(X)第一个有效数据到当前的天数。 |
例如: |
BARSCOUNT(CLOSE)对于日线数据取得上市以来总交易日数,对于分笔成交取得当日成交笔数,对于1分钟线取得当日交易分钟数 |
函数: |
BARSLAST(X) |
说明: |
上一次条件成立位置 上一次条件成立到当前的周期数。 |
用法: |
BARSLAST(X):上一次X不为0到现在的天数 。 |
例如: |
BARSLAST(CLOSE/REF(CLOSE,1)>=1.1)表示上一个涨停板到当前的周期数 |
函数: |
BARSSINCE(X) |
说明: |
第一个条件成立位置到当前的周期数。 |
用法: |
BARSSINCE(X):第一次X不为0到现在的天数。 |
例如: |
BARSSINCE(HIGH>10)表示股价超过10元时到当前的周期数 |
函数: |
COUNT(X,N) |
说明: |
统计总数 统计满足条件的周期数。 |
用法: |
COUNT(X,N),统计N周期中满足X条件的周期数,若N=0则从第一个有效值开始。 |
例如: |
COUNT(CLOSE>OPEN,20)表示统计20周期内收阳的周期数 |
函数: |
DMA(X,N) |
说明: |
动态移动平均 求动态移动平均。 |
用法: |
DMA(X,A),求X的动态移动平均。 |
算法: |
若Y=DMA(X,A) 则 Y=A*X+(1-A)*Y',其中Y'表示上一周期Y值,A必须小于1。 |
例如: |
DMA(CLOSE,VOL/CAPITAL)表示求以换手率作平滑因子的平均价 |
函数: |
EMA(X,N) |
说明: |
指数平滑移动平均 卖一价求指数平滑移动平均。 |
用法: |
EMA(X,N),求X的N日指数平滑移动平均。 |
算法: |
若Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1),其中Y'表示上一周期Y值。 |
例如: |
EMA(CLOSE,30)表示求30日指数平滑均价 |
函数: |
FILTER(X,N) |
说明: |
信号过滤 过滤连续出现的信号。 |
用法: |
FILTER(X,N):X满足条件后,删除其后N周期内的数据置为0 。 |
例如: |
FILTER(CLOSE>OPEN,5)查找阳线,5天内再次出现的阳线不被记录在内 |
函数: |
HHV(X,N) |
说明: |
求最高值 |
用法: |
HHV(X,N),求N周期内X最高值,N=0则从第一个有效值开始。 |
例如: |
HHV(HIGH,30)表示求30日最高价 |
函数: |
HHVBARS(X,N) |
说明: |
上一高点位置 求上一高点到当前的周期数。 |
用法: |
HHVBARS(X,N):求N周期内X最高值到当前周期数N=0表示从第一个有效值开始统计 |
例如: |
HHVBARS(HIGH,0)求得历史新高到到当前的周期数 |
函数: |
LLV(X,N) |
说明: |
求最低值 |
用法: |
LLV(X,N),求N周期内X最低值,N=0则从第一个有效值开始。 |
例如: |
LLV(LOW,0)表示求历史最低价 |
函数: |
LLVBARS(X,N) |
说明: |
上一低点位置 求上一低点到当前的周期数。 |
用法: |
LLVBARS(X,N):求N周期内X最低值到当前周期数N=0表示从第一个有效值开始统计 |
例如: |
LLVBARS(HIGH,20)求得20日最低点到当前的周期数 |
函数: |
MA(X,N) |
说明: |
简单移动平均 求简单移动平均。 |
用法: |
MA(X,N),求X的N日移动平均值。 |
算法: |
(X1+X2+X3+...+Xn)/N |
例如: |
MA(CLOSE,10)表示求10日均价 |
函数: |
REF(X,A) |
说明: |
向前引用 引用若干周期前的数据 |
用法: |
REF(X,A),引用A周期前的X值。 |
例如: |
REF(CLOSE,1)表示上一周期的收盘价,在日线上就是昨收 。 |
函数: |
REFDATE(X,A) |
说明: |
向前引用 引用指定日期的数据。 |
用法: |
REFDATE(X,A),引用A日期的X值。 |
例如: |
REF(CLOSE,20011208)表示2001年12月08日的收盘价 |
函数: |
SMA(X,N,M) |
说明: |
求移动平均 |
用法: |
若Y=SMA(X,N,M) 则 Y=[M*X+(N-M)*Y')/N,其中Y'表示上一周期Y值,N必须大于M。 |
算法: |
(X1+X2+X3+...+Xn)/N |
例如: |
SMA(CLOSE,30,1)表示求30日移动平均价 |
函数: |
SUM(X,N) |
说明: |
求总和 |
用法: |
SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始。 |
例如: |
SUM(VOL,0)表示统计从上市第一天以来的成交量总和 |
函数: |
SUMBARS(X,A) |
说明: |
累加到指定周期数 向前累加到指定值到现在的周期数 |
用法: |
SUMBARS(X,A):将X向前累加直到大于等于A,返回这个区间的周期数 |
例如: |
SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数 |
4.6
逻辑算术函数
函数: |
NOT(X) |
说明: |
求逻辑非 |
用法: |
NOT(X)求逻辑非,返回非X,即当X=0时返回1,否则返回0。 |
例如: |
NOT(ISUP):是否平盘或收阴 |
函数: |
IF(X,A,B) |
说明: |
条件函数 根据条件求不同的值 |
用法: |
IF(X,A,B)若X不为0则返回A,否则返回B |
例如: |
IF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值 |
函数: |
IFF(X,A,B) |
说明: |
根据条件求不同的值 |
用法: |
IFF(X,A,B)若X不为0则返回A,否则返回B |
例如: |
IFF(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值 |
函数: |
IFN(X,A,B) |
说明: |
根据条件求不同的值 |
用法: |
IFN(X,A,B)若X不为0则返回B,否则返回A |
例如: |
IFN(CLOSE>OPEN,HIGH,LOW)表示该周期收阳则返回最高值,否则返回最低值 |
函数: |
CROSS(A,B) |
说明: |
交叉函数 |
用法: |
A:变量或常量,判断交叉的第一条线B:变量或常量,判断交叉的第二条线 |
例如: |
CROSS(MA(CLOSE,5),MA(CLOSE,10))5日均线与10日均线金叉; CROSS(CLOSE,12):价格由下向上突破12元 |
函数: |
LONGCROSS(A,B,N) |
说明: |
两条线维持一定周期后交叉 |
用法: |
LONGCROSS(A,B,N)表示A在N周期内都小于B,本周期从下方向上穿过B时返 回1,否则返回0 |
例如: |
LONGCROSS(MA(CLOSE,5),MA(CLOSE,10),5)表示5日均线维持5周期后与10日均线交金叉 |
函数: |
UPNDAY(CLOSE,M) |
说明: |
连涨周期数 |
用法: |
UPNDAY(CLOSE,M)表示连涨M个周期 |
例如: |
UPNDAY(CLOSE>OPEN,7)表示连涨7天 |
函数: |
DOWNNDAY(CLOSE,M) |
说明: |
连跌周期 |
用法: |
DOWNNDAY(CLOSE,M)表示连跌M个周期 |
例如: |
DOWNNDAY(CLOSE,5) 表示连跌5天 |
函数: |
NDAY(X,Y,N) |
说明: |
连大 |
用法: |
NDAY(X,Y,N)表示条件X>Y持续存在N个周期 |
例如: |
NDAY(CLOSE>OPEN,3)表示连续3日收阳线 |
函数: |
EXIST(X,N) |
说明: |
存在 |
用法: |
EXIST(X,N) 表示条件X在N周期有存在 |
例如: |
EXIST(CLOSE>OPEN,10) 表示前10日内存在着阳线 |
函数: |
EVERY (X,N) |
说明: |
一直存在 |
用法: |
EVERY (X,N) 表示条件X在N周期一直存在 |
例如: |
EVERY(CLOSE>OPEN,10) 表示前10日内一直是阳线 |
函数: |
LAST (X,A,B) |
说明: |
区间存在 |
用法: |
LAST (X,A,B) 表示条件X在前M周期到前N周期存在 |
例如: |
LAST(CLOSE>OPEN,10,5) 表示从前10日到前5日内一直阳线。若A为0,表示从第一天开始,B为0,表示到最后日止。 |
4.7
数学函数
函数: |
ABS(X) |
说明: |
求绝对值 |
用法: |
ABS(X)返回X的绝对值 |
例如: |
ABS(-34)返回34 |
函数: |
BETWEEN(A,B,C) |
说明: |
介于(介于两个数之间) |
用法: |
用法: BETWEEN(A,B,C)表示A处于B和C之间时返回1,否则返回0 |
例如: |
BETWEEN(CLOSE,MA(CLOSE,10),MA(CLOSE,5))表示收盘价介于5日均线和10日均线之间 |
函数: |
MAX(A,B) |
说明: |
求最大值 |
用法: |
MAX(A,B)返回A和B中的较大值 |
例如: |
MAX(CLOSE-OPEN,0)表示若收盘价大于开盘价返回它们的差值,否则返回0 |
函数: |
MIN(A,B) |
说明: |
求最小值 |
用法: |
MIN(A,B)返回A和B中的较小值 |
例如: |
MIN(CLOSE,OPEN)返回开盘价和收盘价中的较小值 |
函数: |
MOD(A,B) |
说明: |
求模运算 |
用法: |
MOD(A,B)返回A对B求模 |
例如: |
MOD(26,10)返回6 |
函数: |
NOT(X) |
说明: |
求逻辑非 |
用法: |
NOT(X)返回非X,即当X=0时返回1,否则返回0 |
例如: |
NOT(ISUP)表示平盘或收阴 |
函数: |
RANGE(A,B,C) |
说明: |
范围(于某个范围之间) |
用法: |
RANGE(A,B,C)表示A大于B同时小于C时返回1,否则返回0 |
例如: |
RANGE(CLOSE,MA(CLOSE,5),MA(CLOSE,10))表示收盘价大于5日均线并且小于10日均线 |
函数: |
REVERSE(X) |
说明: |
求相反数 |
用法: |
REVERSE(X)返回-X |
例如: |
REVERSE(CLOSE)返回-CLOSE |
函数: |
SGN(X) |
说明: |
求符号值 |
用法: |
用法: SGN(X),当X>0,X=0,X<0分别返回1,0,-1 |
例如: |
SGN(10)返回1,SGN(0)返回0,SGN(-10)返回-1 |
函数: |
ACOS(X) |
说明: |
反余弦值 |
用法: |
ACOS(X)返回X的反余弦值 |
例如: |
ACOS(CLOSE)返回CLOSE的反余弦值 |
函数: |
ASIN(X) |
说明: |
反正弦值 |
用法: |
ASIN(X)返回X的反正弦值 |
例如: |
ASIN(CLOSE) 返回CLOSE的反正弦值 |
函数: |
CEILING(A) |
说明: |
向上舍入 (向数值增大方向舍入) |
用法: |
CEILING(A)返回沿A数值增大方向最接近的整数 |
例如: |
CEILING(12.3)求得13; CEILING(-3.5)求得-3 |
函数: |
COS(X) |
说明: |
余弦值 |
用法: |
COS(X)返回X的余弦值 |
例如: |
COS(CLOSE)返回收盘价的余弦值 |
函数: |
EXP(X) |
说明: |
指数 |
用法: |
EXP(X)为e的X次幂 |
例如: |
EXP(CLOSE)返回e的CLOSE次幂 |
函数: |
FLOOR(A) |
说明: |
向下舍入(向数值减小方向舍入) |
用法: |
FLOOR(A)返回沿A数值减小方向最接近的整数 |
例如: |
FLOOR(12.3)求得12; FLOOR(-3.5)求得-4 |
函数: |
INTPART(A) |
说明: |
取整(绝对值减小取整,即取得数据的整数部分) |
用法: |
INTPART(A)返回沿A绝对值减小方向最接近的整数 |
例如: |
INTPART(12.3)求得12,INTPART(-3.5)求得-3 |
函数: |
LN(X) |
说明: |
求自然对数 |
用法: |
LN(X)以e为底的对数 |
例如: |
LN(CLOSE)求收盘价的对数 |
函数: |
LOG(X) |
说明: |
以10为底的对数 |
用法: |
LOG(X)取得X的对数 |
例如: |
LOG(100)等于10 |
函数: |
POW(A,B) |
说明: |
乘幂 |
用法: |
POW(A,B)返回A的B次幂 |
例如: |
POW(CLOSE,3)求得收盘价的3次方 |
函数: |
SIN(X) |
说明: |
正弦值 |
用法: |
SIN(X)返回X的正弦值 |
例如: |
SIN(CLOSE)返回CLOSE的正弦值 |
函数: |
SQRT(X) |
说明: |
开平方 |
用法: |
SQRT(X)为X的平方根 |
例如: |
SQRT(CLOSE)收盘价的平方根 |
函数: |
TAN(X) |
说明: |
正切值 |
用法: |
TAN(X)返回X的正切值 |
例如: |
TAN(CLOSE)返回CLOSE的正切值 |
4.8
统计函数
函数: |
AVEDEV(X,N) |
说明: |
平均绝对偏差 |
用法: |
平均绝对偏差,求X的N日平均绝对偏差 |
例如: |
AVEDEV(CLOSE,20),求收盘价的20日平均绝对偏差 |
函数: |
DEVSQ(X,N) |
说明: |
数据偏差平方和 |
用法: |
数据偏差平方和,求X的N日数据偏差平方和 |
例如: |
DEVSQ(CLOSE,20),求收盘价的20日数据偏差平方和 |
函数: |
FORCAST(X,N) |
说明: |
线性回归预测值 |
用法: |
FORCAST(X,N)为X的N周期线性回归预测值 |
例如: |
FORCAST(CLOSE,10)表示求10周期线性回归预测本周期收盘价 |
函数: |
SLOPE(X,N) |
说明: |
线性回归斜率 |
用法: |
SLOPE(X,N)为X的N周期线性回归线的斜率 |
例如: |
SLOPE(CLOSE,10)表示求10周期线性回归线的斜率 |
函数: |
STD(X,N) |
说明: |
估算标准差 |
用法: |
STD(X,N)为X的N日估算标准差 |
例如: |
STD(CLOSE,10),求10周期收盘价的估算标准差 |
函数: |
STDP(X,N) |
说明: |
总体标准差 |
用法: |
STDP(X,N)为X的N日总体标准差 |
例如: |
STDP(CLOSE,20),求收盘价的20日总体标准差 |
函数: |
VAR(X,N) |
说明: |
估算样本方差 |
用法: |
VAR(X,N)为X的N日估算样本方差 |
例如: |
VAR(CLOSE,20),求收盘价的20日总体标准差 |
函数: |
VARP(X,N) |
说明: |
总体样本方差 |
用法: |
VARP(X,N)为X的N日总体样本方差 |
例如: |
VARP(CLOSE,20),求收盘价的20日总体样本方差 |
4.9
指标函数
函数: |
COST(X) |
说明: |
成本分布 |
用法: |
COST(X) 表示X%获利盘的价格是多少 |
例如: |
COST(10),表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘 该函数仅对日线分析周期有效 |
函数: |
PEAK(K,N,M) |
说明: |
前M个波峰值 |
用法: |
PEAK(K,N,M)表示之字转向ZIG(K,N)的前M个波峰的数值,M必须大于等于1 |
例如: |
PEAK(1,5,1)表示%5最高价ZIG转向的上一个波峰的数值. |
函数: |
PEAKBARS(K,N,M) |
说明: |
前M个波峰位置 |
用法: |
PEAKBARS(K,N,M)表示之字转向ZIG(K,N)的前M个波峰到当前的周期数,M必须大于等于1 . |
例如: |
PEAK(0,5,1)表示%5开盘价ZIG转向的上一个波峰到当前的周期数 |
函数: |
SAR(N,S,M) |
说明: |
抛物转向 |
用法: |
SAR(N,S,M),N为计算周期,S为步长,M为极值 |
例如: |
SAR(10,2,20)表示计算10日抛物转向,步长为2%,极限值为20% |
函数: |
SARTURN(N,S,M) |
说明: |
抛物转向点 |
用法: |
SARTURN(N,S,M),N为计算周期,S为步长,M为极值,若发生向上转向则返回1,若发生向下转向则返回-1,否则为0 ;其用法与SAR函数相同 。 |
例如: |
SAR(10,2,20)表示计算10日抛物转向点,步长为2%,极限值为20%,若发生向上转向则返回1,若发生向下转向则返回-1,否则为0 |
函数: |
TROUGH(K,N,M) |
说明: |
前M个波谷值(前M个ZIG转向波谷值) |
用法: |
TROUGH(K,N,M)表示之字转向ZIG(K,N)的前M个波谷的数值,M必须大于等于1 |
例如: |
TROUGH(2,5,2)表示%5最低价ZIG转向的前2个波谷的数值 |
函数: |
TROUGHBARS(K,N,M) |
说明: |
前M个波谷位置 |
用法: |
TROUGHBARS(K,N,M)表示之字转向ZIG(K,N)的前M个波谷到当前的周期数,M必须大于等于1 |
例如: |
TROUGH(2,5,2)表示%5最低价ZIG转向的前2个波谷到当前的周期数 |
函数: |
WINNER(CLOSE) |
说明: |
获利盘比例 |
用法: |
WINNER(CLOSE),表示以当前收市价卖出的获利盘比例,该函数仅对日线分析周期有效 |
例如: |
返回0.1表示10%获利盘; WINNER(10.5)表示10.5元价格的获利盘比例。 |
函数: |
ZIG(K,N) |
说明: |
之字转向 |
用法: |
ZIG(K,N),当价格变化量超过N%时转向,K表示0:开盘价,1:最高价,2:最低价,3:收盘价 |
例如: |
ZIG(3,5)表示收盘价的5%的ZIG转向 |
函数: |
COSTEX(A,B) |
说明: |
区间成本 |
用法: |
COSTEX(A,B),表示两日收盘价格间筹码的成本 |
例如: |
COSTEX(CLOSE, REF(CLOSE)),表示近两日收盘价格间筹码的成本. 返回10表示区间成本为10元. |
函数: |
PWINNER(N,X) |
说明: |
远期获利盘比例 |
用法: |
PWINNER(N,X) 表示N天前的那部分成本以当前收市价卖出的获利盘比例 |
例如: |
PWINNER(5,CLOSE),表示5天前的那部分成本以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘.该函数仅对日线分析周期有效. |
函数: |
LWINNER(N,X) |
说明: |
近期获利盘比例 |
用法: |
LWINNER(N,X) 表示最近5天的那部分成本以当前收市价卖出的获利盘比例 |
例如: |
LWINNER(5,CLOSE),表示最近5天的那部分成本以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘.该函数仅对日线分析周期有效. |
函数: |
PPART(N) |
说明: |
远期成本分布比例 |
用法: |
PPART(N) 表示N天前的成本占总成本的比例 |
例如: |
PPART(10),表示10前的成本占总成本的比例,返回0.2表示20% |