资源描述
麦语言自编策略模型函数列表
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过8年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
目录
自编策略模型支持的函数 2
1.数学运算(24) 2
2.金融统计函数(25) 6
3.数理统计函数(8) 13
4.逻辑判断函数(22) 16
5.时间函数(15) 21
6.绘图函数(26) 25
7.画线函数(10) 32
8.波峰波谷统计函数(7) 38
9.未来函数(2) 42
10.头寸函数 (47) 43
11.历史数据引用 (18) 68
12.日内高频数据引用(46) 72
13.引用其他合约价格(1) 77
14.颜色常数 78
自编策略模型支持的函数
1.数学运算(24)
ABS(X)
求X的绝对值
注:
1、正数的绝对值是它本身;
2、负数的绝对值是它的相反数;
3、0的绝对值还是0;
例1:
ABS(-10);//返回10。
例2:
ABS(CLOSE-10);//返回收盘价和的10价差的绝对值。
例3:
ABS(C-O);//当前K线实体长度
ACOS(X)
求X的反余弦值
注:
1、X取值范围[-1,1]。
2、若X不在取值范围,返回值为空值。
例1:
ACOS(-1);//求-1的反余弦值;
例2:
ACOS(1);//求1的反余弦值;
ASIN(X)
求X的反正弦值注:
1、X取值范围[-1,1]。
2、若X不在取值范围,返回值为空值。
例1:
ASIN(-1);//求-1的反正弦值;
例2:
ASIN(1);//求1的反正弦值;
ATAN(X)
求X的反正切值注:X的取值为R(实数集)
例1:
ATAN(-1.75);//求-1.75的反正切值;
例2:ATAN(1.75);//求1.75的反正切值;
COS(X)
返回X的余弦值注:
1、X的取值为R(实数集)
2、值域为[-1,1]
例1:
COS(-1.57);//返回-1.57的余弦值
例2:
COS(1.57);//返回1.57的余弦值
EXP(X)
返回e的X次幂例1:
C*EXP(0.01);//求收盘价乘以e的0.01次幂
CUBE(X)
返回X的三次方。例1:
CUBE(4);//求4的立方。
CEILING(X)
向上舍入,返回沿A数值增大方向最接近的整数,若A为整数,则返回值为A。
例1:
CEILING(2.1);//求得3。
例2:
CEILING(-8.8);//求得-8。
例3:
CEILING(C*1.01);//求收盘价的1.01倍向上取整
例4:
IFELSE(C-INTPART(C)>=0.5,CEILING(C),FLOOR(C));//对收盘价四舍五入后取整数部分
FLOOR(X)
向下舍入,返回沿A数值减小方向最接近的整数,若A为整数,则返回值为A。
注:
FLOOR(A)返回沿A数值减小方向最接近的整数,若A为整数,则返回值为A。
例1:
FLOOR(2.1);//返回值为2;
例2:
FLOOR(-8.8);//返回值为-9;
例3:
FLOOR(5);//返回值为5;
例4:
IFELSE(C-INTPART(C)>=0.5,CEILING(C),FLOOR(C));//对收盘价四舍五入后取整数部分。
INTPART(X)
取X的整数部分。
例1:
INTPART(12.3);//返回值为12;
例2:
INTPART(-3.5);//返回值为-3;
例3:
INTPART(10);//返回值为10;
例5:
INTPART(C);//求收盘价的整数部分。
LN(X)
求X的自然对数。
注:
1、X取值范围为非0自然数,即1、2、3、4、5……
2、若X取值为0或负数,返回值为空值。
例:
LN(OPEN);//求开盘价的对数。
LOG(X)
求X的常用对数值。
注:
1、该函数中X的取值范围为X>0
2、0和负数没有对数,X为0或负数时返回值为空值。
例1:
LOG(100) 返回2.
例2:
LOG(0) 返回空值。
MAX(A,B)
取最大值。取A,B中较大者。
注:
若A=B,返回值为A或者B的值。
例1:
MAX(CLOSE,OPEN);//表示取开盘价和收盘价中较大者。
例2:
MAX(CLOSE-OPEN,0);//表示若收盘价大于开盘价返回它们的差值,否则返回0。
例3:
MAX(A,MAX(B,MAX(C,D)));//求 A B C D四者中的最大值
MIN(A,B)
取最小值。取A,B中较小者。
注:
若A=B,返回值为A或者B的值。
例1:
MIN(OPEN,CLOSE);//表示取开盘价和收盘价中的较小者。
例2:
MIN(C,MIN(O,REF(C,1)));//求当前周期的开盘价,收盘价,以及上周期的收盘价间最小的数值
MOD(A,B)
取模。返回A对B求模。
例1:
MOD(26,10);//返回6,26除以10所得余数为6,即26对10 的模为6。
例2:
DRAWICON(MOD(BARPOS,3)=0,H,'ICO1');//从数据开始第一根k线开始 分别在第3、6、9、
12等k线依次往后每隔3根k线标注一个笑脸图案
例3:
MOD(A,2)=0;//判断A为偶数。
NOT(X)
取非。当X=0时返回1,否则返回0。
例1:
NOT(ISLASTBK);如果上一个信号不是BK信号,,则NOT(ISLASTBK)返回值为1;如果上一个信号是BK信号,则NOT(ISLASTBK)返回值为0。
例2:
NOT(BARSBK>=1)=1;//BK信号发出的当根K线上满足条件。
//NOT(BARSBK>=1)=1 与 NOT(BARSBK>=1) 表达同等意义。
POW(A,B)
求X的Y次幂。
注:
当X为负数时,Y必须为整数,因为底数为负时,不能进行开方运算,返回值为空值。
例1:
POW(CLOSE,2);//求得收盘价的2次方。
例2:
POW(10,2);//返回值为100
例3:
POW(1/2,-2);//返回值为4
例4:
POW(100,1/2);//返回值为10
REVERSE(X)
取相反值,返回-X。
例1:
REVERSE(LOW);//返回-LOW。
例2:
REVERSE(-55);//返回值为55
例3:
REVERSE(0);//返回值为0
RANGE(A,B,C)
介于某个范围之内。表示A大于B同时小于C时返回1,否则返回0
例1:
RANGE(5,4,6);//返回值为1;
例2:
RANGE(8,3,6);//返回值为0;
例3:
MA5:MA(C,5);
MA10:MA(C,10);
MA20:MA(C,20);
RANGE(MA10,MA20,MA5),BK;//10周期均线在5周期均线与20周期均线之间买开仓
//RANGE(MA10,MA20,MA5)=1,BK; 与 RANGE(MA10,MA20,MA5),BK; 表达同等意义
SGN(X)
取符号。若X>0返回1,若X<0返回-1,否则返回0。
例1:
SGN(5);//返回值为1
例2:
SGN(-5);//返回值为-1
例3:
SGN(0);//返回值为0
SIN(X)
求X的正弦值。注:
1、X的取值为R(实数集);
2、值域为(-1,1)。
例1:
SIN(-1.57);//返回-1.57的正弦值
例2:
SIN(1.57);//返回1.57的正弦值
SQRT(X)
求X的平方根。
注:
X的取值为正数,X为负数时返回空值。
例1:
SQRT(CLOSE);//收盘价的平方根。
SQUARE(X)
求X的平方。
例1:
SQUARE(C);//收盘价的平方。
例2:
SQUARE(2);//2的平方。
TAN(X)
返回X的正切值。例1:
TAN(0);//返回0的正切值;
例2:
TAN(-3.14);//返回-3.14的正切值。
2.金融统计函数(25)
ADMA(X,N,P,Q)
考夫曼均值
注:
X为调用的k线数据(例如高、开、低,收)
N为调用的间隔时间
P为快线频率参数
Q为慢线频率参数
算法:
ADMA(X,N,P,Q)=REF(EMA(C,N),1)+CONSTANT*(C- REF(EMA(C,N),1));
CONSTANT根据价格方向、波动性计算得到
价格方向被表示为整个时间段中的净价格变化, 简单地计算价格的净变化,从开始点到结束点。这倾向于最保守的测量,因为它平滑了从开始到结尾之间发生的任何价格移动。
波动性是市场噪音的总数量,计算了时间段内价格变化的总和。高-低范围更好地描述了在周期内可能产生的任意极端值。所有变化总和,它是最概括的测量,因为能识别一个价格移动从高到低的次数
方向移动对噪音之比,成为效率系数ER。ER通过快慢系数转为趋势速度,达到自适应目的
BARSLAST(X)
上一次条件COND成立到当前的周期数。
注:
1、条件成立的当根k线上BARSLAST(COND)的返回值为0
2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
例1:
BARSLAST(OPEN>CLOSE); //上一根阴线到现在的周期数。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。
//由于条件成立的当根k线上BARSLAST(COND)的返回值为0,所以“+1”才是当日k线根数。
BARSLASTCOUNT(COND)
从当前周期向前计算,统计连续满足条件的周期数。
注:
1、返回值为从当前周期计算COND连续不为0的周期数
2、条件第一次成立的当根k线上BARSLASTCOUNT(COND)的返回值为1
例:
BARSLASTCOUNT(CLOSE>OPEN);
//计算当根K线在内连续为阳线的周期数
BARSSINCE(COND)
第一个条件成立到当前的周期数。
注:
1、返回值为COND第一次成立到当前的周期数
2、条件第一次成立的当根k线上BARSSINCE(COND)的返回值为0
例:
BARSSINCE(CLOSE>OPEN);
//统计第一次满足阳线这个条件的K线到现在的周期数
COUNT(X,N)
统计N周期中满足COND条件的周期数。
注:
1、若N为0则从第一个有效值算起;
2、当N为有效值,但当前的k线数不足N根,从第一根统计到当前周期。
3、N 为空值时返回值为空值 。
4、N可以为变量
例1:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。
M:COUNT(ISUP,N);//统计分钟周期上开盘以来阳线的根数。
例2:
MA5:=MA(C,5);//定义5周期均线
MA10:=MA(C,10);//定义10周期均线
M:COUNT(CROSSUP(MA5,MA10),0);//统计从申请到的行情数据以来到当前这段时间内,5周期均线上穿10周期均线的次数。
CONDBARS(A,B)
取得最近的满足A、B条件的k线间周期数
注意:
1、该函数返回周期数不包含最后满足条件的K线
2、如果距离当前K线最近的满足的条件为B条件,则该函数返回值为最后一次满足A条件的K线到满足B条件的K线的周期数(A条件满足后的第一次满足B条件的K线)
如果距离当前K线最近的满足的条件为A条件,则该函数返回值为最后一次满足B条件的K线到满足A条件的K线的周期数(B条件满足后的第一次满足A条件的K线)
例1:
MA5:=MA(C,5);//5周期均线
MA10:=MA(C,10)//;10周期均线
CONDBARS(CROSSUP(MA5,MA10),CROSSDOWN(MA5,MA10));//最近一次满足5周期均线上穿10周期均线与5周期均线下穿10周期均线之间的周期数
DMA(X,A)
求X的动态移动平均,其中A必须小于1大于0。
注:
A可以为变量
计算公式:DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)为第(N-1)天的DMA值
例1:
DMA3:=DMA(C,0.3);//计算结果为REF(DMA3,1)*(1-0.3)+C*0.3
EMA(X,N)
求N周期X值的指数移动平均(平滑移动平均)。
注:
1、对距离当前较近的k线赋予了较大的权重。
2、当N为有效值,但当前的k线数不足N根,按实际根数计算。
3、N为0或空值时返回值为空值。
4、N可以为变量
EMA==2*X/(N+1)+(N-1)*EMA(N-1)]/(N+1)
举例:X1=6 X2=7 X3=8 X4=9
则EMA(X,4)=2/5*X4+3/10*X3+3/15*X2+3/30*X1=4/10*9+3/10*8+2/10*7+1/10*6=8
例1:
EMA10:=EMA(C,10);//求收盘价10周期平滑移动平均值
EMA2(X,N)
求N周期X值的线性加权平均(也称WMA)
EMA2(X,N)=(N*X0+(N-1)*X1+(N-2)*X2)+...+1*X(N-1))/(N+(N-1)+(N-2)+...+1),X0表示本周期值,X1表示上一周期值
注:
1、当N为有效值,但当前的k线数不足N根,返回值为空值。
2、N为0或空值时返回值为空值。
3、N可以为变量
4、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
例1:
EMA2(H,5);//求最高价在5个周期的加权移动平均值。
EMAWH(C,N)
指数移动平均,也叫平滑移动平均,采用指数加权方法,对距离当前较近的K线赋予了较大的权重。
注:
1、当N为有效值,当前的k线数不足N根时,或者前面周期的取值仍作用于当前周期时,EMAWH返回值为空值
因为EMAWH计算公式中着重考虑了当周期的权重,所以当周期较长,前面的周期取值对当前的影响越小,EMAWH从前面数据对当前周期不再影响时的取值开始显示,所以即使选择的数据起始时间不同,当前已经显示的K线的EMAWH的取值也不会发生变化
2、当N为0或空值时返回值均为空值
3、N不能为变量
EMAWH==2*X/(N+1)+(N-1)*EMAWH(N-1)〕/(N+1)
HHV(X,N)
求X在N个周期内的最高值。
注:
1、若N为0则从第一个有效值开始算起;
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;
3、N为空值时,返回空值。
4、N可以是变量。
例1:
HH:HHV(H,4);//求4个周期最高价的最大值,即4周期高点(包含当前k线)。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
HH1:=HHV(H,N);//在分钟周期上,日内高点
HV(X,N)
求X在N个周期内(不包含当前k线)的最高值。
注:
1、若N为0则从第一个有效值开始算起(不包含当前K线);
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值;
3、N为空值时,返回空值。
4、N可以是变量。
例1:
HH:HV(H,10);//求前10根k线的最高点。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;
NN:=REF(N,N);
ZH:VALUEWHEN(DATE<>REF(DATE,1),HV(H,NN));//在分钟周期上,求昨天最高价。
例3:
HV(H,5) 和 REF(HHV(H,5),1) 的结果是一样的,用HV编写更加方便。
HHVBARS(X,N)
求N周期内X最高值到当前周期数
注:
1、若N为0则从第一个有效值开始算起(不包含当前K线);
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值;
3、N为空值时,返回空值。
4、N可以是变量。
例1:
HHVBARS(VOL,0); 求历史成交量最大的周期到当前的周期数(最大值那根k线上HHVBARS(VOL,0);的返回值为0,最大值后的第一根k线返回值为1,依次类推)。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
ZHBARS:REF(HHVBARS(H,N),N);//在分钟周期上,求昨天最高价所在的k线到当前k线之间的周期数。
LLV(X,N)
求X在N个周期内的最小值。
注:
1、若N为0则从第一个有效值开始算起;
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;
3、N为空值时,返回空值。
4、N可以是变量。
例1:
LL:LLV(L,5);//求5根k线最低点(包含当前k线)。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
LL1:=LLV(L,N);//在分钟周期上,求当天第一根k线到当前周期内所有k线最低价的最小值。
LV(X,N)
求X在N个周期内的最小值(不包含当前k线)
注:
1、若N为0则从第一个有效值开始算起;
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;
3、N为空值时,返回空值。
4、N可以是变量。
例1:
LL:LV(L,10);//求前面10根k线的最低点。(不包含当前k线)
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
ZL:VALUEWHEN(DATE<>REF(DATE,1),LV(L,N));//在分钟周期上,求昨天最低价。
例3:
LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。
LLVBARS(X,N)
求N周期内X最低值到当前周期数
注:
1、若N为0则从第一个有效值开始算起(不包含当前K线);
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值;
3、N为空值时,返回空值。
4、N可以是变量。
例1:
LLVBARS(VOL,0); 求历史成交量最小的周期到当前的周期数(最小值那根k线上LLVBARS(VOL,0);的返回值为0,最小值后的第一根k线返回值为1,依次类推)。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
ZLBARS:REF(LLVBARS(L,N),N);//在分钟周期上,求昨天最低价所在的k线到当前k线之间的周期数。
MA(X,N)
求X在N个周期内的简单移动平均
算法:MA(X,5)=(X1+X2+X3+X4+X5)/5
注:
1、简单移动平均线沿用最简单的统计学方式,将过去某特定时间内的价格取其平均值。
2、当N为有效值,但当前的k线数不足N根,函数返回空值。
3、N为0或空值的情况下,函数返回空值。
4、N可以为变量
例1:
MA5:=MA(C,5);//求5周期收盘价的简单移动平均。
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
M:=IFELSE(N>10,10,N);//如果k线超过10根,M取10,否则M取实际根数
MA10:MA(C,M);//在分钟周期上,如果当天k线不足10根,按照实际根数计算MA10,如果超过10根按照10周期计算MA10。
NUMPOW(X,N,M)
自然数幂方和
算法:
NUMPOW(x,n,m)=n^m*x+(n-1)^m*ref(x,1)+(n-2)^m*ref(x,2)+...+2^m*ref(x,n-2)+1^m*ref(x,n-1)r\n注意:
1、N为自然数,M为实数;且N与M不能为变量
2、X为基础变量
例1:r\nJZ:=NUMPOW(C,5,2)/NUMPOW(1,5,2);
SAR(N,Step,Max)
返回抛物转向值。
注:
1、参数N,Step,Max均不支持变量
例1:
SAR(17,3,30);//表示计算17个周期抛物转向,步长为3%,极限值为30%
SMA(X,N,M)
求X的N个周期内的移动平均。M为权重。
计算公式:SMA(N)=SMA(N-1)*(N-M)/N+X(N)*M/N
注:
1、当N为有效值,但当前的k线数不足N根,按实际根数计算。
2、 N为0或空值的情况下,函数返回空值。
例1:
SMA10:=SMA(C,10,3);//求的10周期收盘价的移动平均。权重为3。
SMMA(X,N)
X为变量,N为周期,SMMA(X,N)表示当前K线上X在N个周期的通畅移动平均线
算法:SMMA(X,N)=(SUM1-MMA+CLOSE)/N
其中SUM1=X1+X2+.....+XN
MMA=SUM1/N
例1:
SMMA(C,5);//收盘价的5周期通畅移动平均线
SUM(X,N)
求X在N个周期内的总和。
注:
1、若N为0则从第一个有效值开始算起。
2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。
3、N为空值时,返回空值。
4、N可以为变量。
例1:
SUM(VOL,25);表示统计25周期内的成交量总和
例2:
N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
SUM(VOL,N);//分钟周期上,取当天成交量总和。
SUMBARS(X,A)
求累加到指定值的周期数
例1:
SUMBARS(VOL,20000); 将成交量向前累加直到大于等于20000,返回这个区间的周期数。
TRMA(X,N)
求X在N个周期的三角移动平均值。
算法:三角移动平均线公式,是采用算数移动平均,并且对第一个移动平均线再一次应用算数移动平均。
TRMA(X,N) 算法如下
ma_half= MA(X,N/2)
trma=MA(ma_half,N/2)
注:
1、当N为有效值,但当前的k线数不足N根,函数返回空值。
2、N为0或空值的情况下,函数返回空值。
3、N支持使用变量
例1:
TRMA5:TRMA(CLOSE,5);//计算5个周期内收盘价的三角移动平均。(N不能被2整除)
//TRMA(CLOSE,5)=MA(MA(CLOSE,(5+1)/2)),(5+1)/2);
例2:
TRMA10:TRMA(CLOSE,10);// 计算10个周期内收盘价的三角移动平均。(N能被2整除)
TRMA(CLOSE,10)=MA(MA(CLOSE,10/2),(10/2)+1));
TSMA(X,N)
求X在N个周期内的时间序列三角移动平均
TSMA(a,n) 算法如下:
ysum=a[i]+a[i-1]+...+a[i-n+1]
xsum=i+i-1+..+i-n+1
xxsum=i*i+(i-1)*(i-1)+...+(i-n+1)*(i-n+1)
xysum=i*a[i]+(i-1)*a[i-1]+...+(i-n+1)*a[i-n+1]
k=(xysum -(ysum/n)*xsum)/(xxsum- xsum/n * xsum) //斜率
b= ysum/n - k*xsum/n
forcast[i]=k*i+b //线性回归
tsma[i] = forcast[i]+k //线性回归+斜率
注:
1、当N为有效值,但当前的k线数不足N根,函数返回空值。
2、N为0或空值的情况下,函数返回空值。
3、N支持使用变量
例1:
TSMA5:TSMA(CLOSE,5);//计算5个周期内收盘价的序列三角移动平均
3.数理统计函数(8)
AVEDEV(X,N)
返回X在N周期内的平均绝对偏差。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值;
4、N不能为变量
例:
AVEDEV(C,5);//返回收盘价在5周期内的平均绝对偏差。
//表示5个周期内每个周期的收盘价与5周期收盘价的平均值的差的绝对值的平均值,判断收盘价与其均值的偏离程度
DEVSQ(X,N)
计算数据X的N个周期的数据偏差平方和。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值;
4、N不支持为变量
例:
DEVSQ(C,5);计算数据收盘价5个周期的数据偏差平方和。
//表示平均绝对偏差分别平方之后求和,DEVSQ(C,5)表示5个周期的平均绝对偏差分别平方之后求和。
FORCAST(X,N)
为X的N周期线性回归预测值。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值;
4、N可以是变量
例:
FORCAST(CLOSE,5);//表示求5周期线性回归预测值
SLOPE(X,N)
得到X的N周期的线型回归的斜率。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值。
4、N可以为变量
例:
SLOPE(CLOSE,5);表示求收盘价5个周期线性回归线的斜率
STD(X,N)
求X在N个周期内的标准差。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值。
4、N可以为变量
例:
STD(C,10)求收盘价在10个周期内的标准差。
//标准差表示总体各单位标准值与其平均数离差平方的算术平均数的平方根,它反映一个数据集的离散程度。STD(C,10)表示收盘价与收盘价的10周期均线之差的平方和的平均数的算术平方根。标准差是样本方差的平方根。
STDP(X,N)
为X的N周期总体标准差。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值。
4、N可以为变量
例:
STDP(C,10)为收盘价的10周期总体标准差。
//总体标准差是反映研究总体内个体之间差异程度的一种统计指标,总体方差是一组资料中各数值与其算术平均数离差平方和的平均数,总体标准差则是总体方差的平方根。
VAR(X,N)
求X在N周期内的样本方差。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值;
4、N支持使用变量
例1:
VAR(C,5)求收盘价在5周期内的样本方差。
//表示总体方差的N/(N-1)倍,VAR(C,5)表示收盘价的5周期总体样本方差的5/4倍。
VARP(X,N)
为X的N周期总体样本方差
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值;
4、N支持使用变量
例:
VARP(C,5)为收盘价的5周期总体样本方差
//表示数据偏差平方和除以总周期数N,VARP(C,5)表示收盘价5个周期的数据偏差平方和除以5.
数理统计举例说明:
设一个数列,数列中数据的总个数为N,以今天(2005-10-14)五天内的A0605收盘价为例,N就为5。数列的内容为:{2766,2805,2814,2886,2885}。
1、算术平均值MA(CLOSE,5):数据总和除以总个数N。 (2766+2805+2814+2886+2885)/5=2831.20。 可以用公式MA(CLOSE,5),从今天的值上看出。
2、偏差:每个数据,减去算术平均值的结果。 2766-2831.20=-65.2, 2805-2831.20=-26.2, 2814-2831.20=-17.2, 2886-2831.20=54.8, 2885-2831.20=53.8, 各偏差相加,应该是等于0的。
3、平均绝对偏差AVEDEV(X,N):将偏差的绝对值相加,除以总个数N。 (65.2+26.2+17.2+54.8+53.8)/5=43.44
4、数据偏差平方和DEVSQ(X,N):将偏差的平方相加。 (-65.2)2+ (-26.2)2+ (-17.2)2+ (54.8)2+ (53.8)2=11130.80
5、总体样本方差VARP(X,N):将偏差的平方相加,总和除以总个数N。用公式可以这样算: (-65.2)2+ (-26.2)2+ (-17.2)2+ (54.8)2+ (53.8)2/5=2226.16
6、样本方差VAR(X,N):是总体方差的N/(N-1)倍。 2226.16*5/(5-1)=2782.70 估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。
4.逻辑判断函数(22)
BETWEEN(A,B,C)
表示A是否处于B和C之间,成立返回1(Yes),否则返回0(No)。
注:
1、其中若A=B、A=C、或A=B且B=C时函数返回值为1(Yse)。
例1:
BETWEEN(CLOSE,MA5,MA10); //表示收盘价介于5日均线与10日均线之间。
CROSS(X,Y)
表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
注:
1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。
例1:
CROSS(CLOSE,MA(CLOSE,5));//表示收盘线从下方向上穿过5周期均线
CROSSUP(A,B)
表当A从下方向上穿过B,成立返回1(Yes),否则返回0(No)
注:
1、CROSSUP(A,B)等同于CROSS(A,B),CROSSUP(A,B)编写更利于理解。
例1:
MA5:=MA(C,5);
MA10:=MA(C,10);
CROSSUP(MA5,MA10),BK;//MA5上穿MA10,买开仓。
//CROSSUP(MA5,MA10),BK; 与 CROSSUP(MA5,MA10)=1,BK;表达同等意义
CROSSDOWN(A,B)
表示当A从上方向下穿B,成立返回1(Yes),否则返回0(No)
注:
1、CROSSDOWN(A,B)等同于CROSS(B,A),CROSSDOWN(A,B)编写更利于理解
例1:
MA5:=MA(C,5);
MA10:=MA(C,10);
CROSSDOWN(MA5,MA10),SK;//MA5下穿MA10卖开仓
//CROSSDOWN(MA5,MA10),SK; 与 CROSSDOWN(MA5,MA10)=1,SK;表达同等意义
CROSS2(A,B)
表示N个周期内当A从下方向上穿B偶数次。 赢顺不支持
注:
1、若N为0,则从第一个有效的值开始算。
2、当N为有效值,但当前的k线数不足N根,或者N空值的情况下,代表不成立,该函数返回0
例1:
MA5:=MA(C,5);
CROSS2(C,MA5,10) 返回值为1(Yes),表示当前周期是10个周期内(包含当前周期)收盘价从下方向上穿过5周期均线的第偶数次;返回值为0(No),表示当前周期不是10个周期内(包含当前周期)收盘价从下方向上穿过5周期均线的第偶数次
DIVERGENCE(X1,X2,S,L,HL)
变量X1与X2在指定周期内是否发生背离
用法:
S: 设置转折点两边需要的周期数,取值应小于L的四分之一;S不可以为变量;
L: 计算的总的范围的周期数;L不可以为变量。
HL: 可以取值为1和-1
1表示根据X1的峰值判断背离情况;
X1在L周期内波峰取值创了新高,但X2在X1峰值对应的取值没有创新高,熊背离,或称顶背离
-1表示计算波谷点,
X1在L周期内波谷取值创了新低,但X2在X1波谷对应的取值没有创新低,牛背离,或称底背离;
例1:
MA10:MA(C,10);
DIVERGENCE(C,MA10,2,20,1);//在20个周期内,收盘价与5周期均线存在顶背离
说明:收盘价峰值的判断标准--收盘价大于前2个周期的收盘价,并且大于后2个周期的收盘价,认为为收盘价的峰值;
即在当根K线前面的20个周期(不包含当根K线)内,收盘价存在两个这样的峰值,且峰值创了新高,但是在两个峰值对应K线取到的10周期均线照的值未创新高
EVERY(COND,N)
判断N周期内,是否一直满足COND条件。若满足函数返回值为1,不满足函数返回值为0;
注:
1、N包含当前k线。
2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,函数返回值为0。
3、N可以是变量
例1:
EVERY(CLOSE>OPEN,5);//表示5个周期内一直是阳线
例2:
MA5:=MA(C,5);//定义5周期均线
MA10:=MA(C,10);//定义10周期均线
EVERY(MA5>MA10,4),BK;//4个周期内MA5都大于MA10,则买开仓。
//EVERY(MA5>MA10,4),BK;与EVERY(MA5>MA10,4)=1,BK;表达同等意义
EXIST(COND,N)
判断N个周期内是否有满足COND的条件(包含当前周期)
注:
1、N可以是变量。
2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,该函数返回值为0
例1:
EXIST(CLOSE>REF(HIGH,1),10);表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0.
例2:
N:=BAR
展开阅读全文