麦语言自编策略模型函数列表.docx
《麦语言自编策略模型函数列表.docx》由会员分享,可在线阅读,更多相关《麦语言自编策略模型函数列表.docx(63页珍藏版)》请在冰豆网上搜索。
麦语言自编策略模型函数列表
麦语言自编策略模型函数列表
文华财经资讯有限公司
“麦语言”源于2004年文华推出的国内第一套程序化函数库,经过8年的发展,吸收几十万用户的意见反馈,一点一点完善起来的,是一套成熟稳定的模型开发平台。
麦语言,是国内使用人数最多的程序化模型开发平台。
麦语言倡导的是积木式的编程理念,把复杂算法封装到一个个的函数里,采用“小语法,大函数”的构建模式。
语法虽然简单,但是配合专门的程序化数据结构,配合丰富的金融统计函数库,同样可以支持逻辑复杂的金融应用。
麦语言的函数库,是经常更新的,根据客户的新要求随时添加新函数,来支持编程者的交易新思想和新应用
自编策略模型支持的函数
1.数学运算(24)
ABS(X)
求X的绝对值
注:
1、正数的绝对值是它本身;
2、负数的绝对值是它的相反数;
3、0的绝对值还是0;
例1:
ABS(-10);
例2:
LOG(0)返回空值。
MAX(A,B)
取最大值。
取A,B中较大者。
注:
若A=B,返回值为A或者B的值。
例1:
MAX(CLOSE,OPEN);
融统计函数(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);
.+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);
.+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);
...+XN
MMA=SUM1/N
例1:
SMMA(C,5);
.+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)
理统计函数(8)
AVEDEV(X,N)
返回X在N周期内的平均绝对偏差。
注:
1、N为有效值,但当前的k线数不足N根,该函数返回空值;
2、N为0时,该函数返回空值;
3、N为空值,该函数返回空值;
4、N不能为变量
例:
AVEDEV(C,5);
数理统计举例说明:
设一个数列,数列中数据的总个数为N,以今天(2005-10-14)五天内的A0605收盘价为例,N就为5。
数列的内容为:
{2766,2805,2814,2886,2885}。
1、算术平均值MA(CLOSE,5):
数据总和除以总个数N。
(2766+2805+2814+2886+2885)/5=。
可以用公式MA(CLOSE,5),从今天的值上看出。
2、偏差:
每个数据,减去算术平均值的结果。
=,=,=,=,=,各偏差相加,应该是等于0的。
3、平均绝对偏差AVEDEV(X,N):
将偏差的绝对值相加,除以总个数N。
++++/5=
4、数据偏差平方和DEVSQ(X,N):
将偏差的平方相加。
2+2+2+2+2=
5、总体样本方差VARP(X,N):
将偏差的平方相加,总和除以总个数N。
用公式可以这样算:
2+2+2+2+2/5=
6、样本方差VAR(X,N):
是总体方差的N/(N-1)倍。
*5/(5-1)=估算样本方差,总比总体样本方差大一点,当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);
例2:
N:
=BARSLAST(DATE<>REF(DATE,1))+1;
EXIST(C>MA(C,5),N);
注:
1、N为空值,返回空值。
2、N不能为变量
3、不能与BKPRICE,BARSBK,SKPRICE,BARSSK一起使用
例1:
FILTER(CLOSE>OPEN,3);
LONGCROSS(A,B,N)
表示A在N个周期内都小于B,本周期A从下向上穿越B
注:
1、当N为有效值,但当前的k线数不足N根,
2、N为空值的情况下,代表不成立,函数返回0
例1:
LONGCROSS(CLOSE,MA(CLOSE,10),20);
间函数(15)
BARPOS
返回从第一根K线开始到当前的周期数。
注:
1:
BARPOS返回本地已有的K线根数,从本机上存在的数据开始算起。
2:
本机已有的第一根K线上返回值为1。
例1:
LLV(L,BARPOS);
离收盘的时间仍然以15:
00为基准计算(即使中间遇到正常的周六周日休息,仍然返回值为1080,不计算周六周日的时间)
例1:
CLOSEMINUTE<1,CLOSEOUT;
HOUR
返回某周期的小时数。
注:
HOUR的取值范围为0—23
例1:
DRAWTRENDLINE(HOUR=9,H,HOUR=15,H,COLORGREEN);
例1:
VALUEWHEN(MONTH=3&&DAY=1,C);
2:
该函数应加载在可交易合约上,在夜盘仿真合约上返回值为0,在主力合约上把主力切换时间默认为交割时间来进行计算。
例1:
当NEXTDELIVERYDAY加载在沪铜1309上时,返回值为130923.
例2:
DATE=NEXTDELIVERYDAY&&CLOSEMINUTE=5,CLOSEOUT;
3:
返回数字为1—11分别表示,1分钟,3分钟,5分钟,10分钟,15分钟,30分钟,1小时,1天,1周,1月,1年。
例:
N:
=BARSLAST(DATE<>REF(DATE,1))+1;
OO:
VALUEWHEN(N=1,O);
IFELSE(PERIOD=1,OO,NULL);
4:
TIME函数只能加载在日周期以下的周期中,在日周期及日周期以上的周期中该函数返回值始终未1500。
5:
使用TIME函数进行尾盘平仓的操作需要注意
(1)尾盘平仓设置的时间建议设置为K线返回值中实际可以取到的时间(如:
螺纹指数5分钟周期最后一根K线返回时间为1455,如果尾盘平仓设置为TIME>=1458,CLOSEOUT;则效果测试中不能出现尾盘平仓的信号)
(2)使用TIME函数作为尾盘平仓的条件的,建议开仓条件也要做相应的时间限制(如设置尾盘平仓条件为TIME>=1458,CLOSEOUT;则相应的开仓条件中需要添加条件TIME<1458;避免平仓后再次开仓的情况)
例1:
C>O&&TIME<1450,BK;
CTIME>=1450,SP;
TIME>=1450,BP;
AUTOFILTER;
图函数(26)
BACKGROUNDSTYLE(i)
设置背景的样式。
用法:
BACKGROUNDSTYLE(i)设置背景的样式。
i=0或1或2。
注:
1.
0是保持本身坐标不变。
1是将坐标固定在0到100之间。
2是将坐标以0为中轴的坐标系。
2、参数i的选择根据想要显示的指标数据范围而定。
例1:
MA5:
MA(C,5);
MA10:
MA(C,10);
BACKGROUNDSTYLE(0);
例2:
DIFF:
EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:
EMA(DIFF,9);
2*(DIFF-DEA),COLORSTICK;
BACKGROUNDSTYLE
(2)
CROSSDOT
小圆圈线。
用法:
CROSSDOT画小圆圈线。
例:
MA5:
MA(C,5),CROSSDOT;用小圆圈线画5日均线。
CIRCLEDOT
画小圆点线。
用法:
CIRCLEDOT画小圆点线。
例:
MA5:
MA(C,5),CIRCLEDOT;用小圆点线画5日均线。
DRAWCOLORLINE(COND,DATA,COLOR1,COLOR2)
根据条件画相应颜色的线
用法:
当满足COND时,DATA为COLOR1颜色的线,不满足COND时,DATA为COLOR2颜色的线
例1:
MA1:
=MA(C,5);
DRAWCOLORLINE(MA1>REF(MA1,1),MA1,COLORRED,COLORGREEN);
例1:
DRAWICON(CLOSEMA5:
=MA(C,5);
DRAWICON(C>MA5,MA5,'ICO2');
ICON
在k线图上,显示小图标。
用法:
ICON(TYPE,ICON);
当TYPE为1,则在K线最高价位置显示图标ICON,当TYPE为0,则在最低价位置显示
图标ICON。
注:
1、该函数与判断条件连用,如:
COND,ICON(TYPE,ICON);
例1:
CLOSE>OPEN,ICON(1,'ICO1');
线函数(10)
ANGLELING
角度返回值。
用法:
ANGLELINE(COND1,DATA1,COND2,DATA2,RATIO);
从本地起始K线开始计算,以相距最近两根分别满足条件COND1的DATA1值和COND2的DATA2值构成起止点,在角度线段高度比例为RATIO处形成角度线,该函数返回K线对应的角度值。
注:
1.角度值并非角度,而是角度线上当前k线对应的价格。
2.角度线段是指2个点的纵坐标价格差值
3.角度线是以DATA1和角度线段高度比例为RATIO处的2个点连线而成。
4.以当前k线向前先找满足COND1的k线DATA1值,再找满足COND2的k线DATA2值。
例1:
ANGLELINE(C>O,H,O>C,L,1);
势值是k线所在趋势线上对应的价格(此价格可能不在k线上)。
2.以当前k线向前先找满足COND1的k线DATA1值,再找满足COND2的k线DATA2值。
例1:
TRENDLINES(O>C,H,C>O,H);
浪尺值计算公式:
波浪尺值-DATA3=RATIO*(DATA2-DATA1)。
2.以当前k线向前先找满足COND1的k线DATA1值,再找满足COND2的k线DATA2值,最后查找满足COND3的k线DATA3的值。
例1:
WAVERULER(C>O,H,C>O,H,C>O,H,;
度值并非角度,而是角度线上当前k线对应的价格。
2.角度线段是指2个点的纵坐标价格差值
3.角度线是以DATA1和角度线段高度比例为RATIO处的2个点连线而成。
4.以当前k线向前先找满足COND1的k线DATA1值,再找满足COND2的k线DATA2值。
例1:
MA5:
MA(C,5);
MA10:
MA(C,10);
DRAWANGLELINE(CROSS(MA5,MA10),H,CROSS(MA10,MA5),L,,COLORRED);
当前k线向前先找COND1满足的k线DATA1值,再找COND2满足的k线DATA2值。
例1:
DRAWGOLDENLINE(O>C,H,C>O,H,,COLORGREEN);
势值是k线所在趋势线上对应的价格(此价格可能不在k线上)。
2.以当前k线向前先找满足COND1的k线DATA1值,再找满足COND2的k线DATA2值。
例1:
DRAWTRENDLINE(O>C,H,C>O,H,COLORGREEN);
浪尺值计算公式:
波浪尺值-DATA3=RATIO*(DATA2-DATA1)。
2.波浪尺线是以波浪尺值为点画水平线而成。
3.以当前k线向前先找满足COND1的k线DATA1值,再找满足COND2的k线DATA2值,最后查找满足COND3的k线DATA3的值。
例1:
DRAWWAVERULER(C>O,H,C>O,H,C>O,H,,COLORGREEN);
峰波谷统计函数(7)
PEAK
取之子转向的前M个波峰的值。
用法:
PEAK(X,P,M,C)X满足条件P形成之子转向的前M个波峰的值。
C是标记量,取1表示P是百分比数值;取0表示P是绝对数值。
例1:
PEAK(HIGH,10,1,1);表示最高价的10%的之字转向的上一个波峰的数值;PEAK(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰的数值。
例2:
10%的之字转向的上一个波峰波谷的位置标注相应的值(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T2:
=TROUGH(L,10,1,1);
N2:
=TROUGHBARS(L,10,1,1);
DRAWNUMBER(N1=0,H,P1,2,COLORYELLOW);
DRAWNUMBER(N2=0,L,T2,2,COLORYELLOW);
例3:
根据10%的之字转向的上一个波峰波谷位置,确定价格形态(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T1:
=TROUGH(L,10,1,1);
M1:
=TROUGHBARS(L,10,1,1);
DRAWTRENDLINE(N1=0,P1,N1=0,P1,COLORRED);
DRAWTRENDLINE(M1=0,T1,M1=0,T1,COLORGREEN);
本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
PEAKBARS
取之子转向的前M个波峰的位置。
用法:
PEAKBARS(X,P,M,C)取得X满足条件P形成之子转向的前M个波峰的位置。
C是标记量,取1表示P是百分比数值;取0表示P是绝对数值。
注:
本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
例1:
PEAKBARS(HIGH,10,1,1);表示最高价的10%的之字转向的上一个波峰到当前的周期数;
PEAKBARS(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰到当前的周期数
例2:
10%的之字转向的上一个波峰波谷的位置标注相应的值(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T2:
=TROUGH(L,10,1,1);
N2:
=TROUGHBARS(L,10,1,1);
DRAWNUMBER(N1=0,H,P1,2,COLORYELLOW);
DRAWNUMBER(N2=0,L,T2,2,COLORYELLOW);
例3:
根据10%的之字转向的上一个波峰波谷位置,确定价格形态(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T1:
=TROUGH(L,10,1,1);
M1:
=TROUGHBARS(L,10,1,1);
DRAWTRENDLINE(N1=0,P1,N1=0,P1,COLORRED);
DRAWTRENDLINE(M1=0,T1,M1=0,T1,COLORGREEN);
TROUGH
求之子转向的前M个波谷的值。
用法:
TROUGH(X,P,M,C)X满足条件P形成之子转向的前M个波谷的值。
C是标记量,取1表示P是
百分比数值;取0表示P是绝对数值。
注:
本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
例1:
TROUGH(LOW,10,1,1);表示最低价的10%的之字转向的上一个波谷的数值;
TROUGH(MA(LOW,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个
波谷的数值
例2:
10%的之字转向的上一个波峰波谷的位置标注相应的值(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T2:
=TROUGH(L,10,1,1);
N2:
=TROUGHBARS(L,10,1,1);
DRAWNUMBER(N1=0,H,P1,2,COLORYELLOW);
DRAWNUMBER(N2=0,L,T2,2,COLORYELLOW);
例3:
根据10%的之字转向的上一个波峰波谷位置,确定价格形态(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T1:
=TROUGH(L,10,1,1);
M1:
=TROUGHBARS(L,10,1,1);
DRAWTRENDLINE(N1=0,P1,N1=0,P1,COLORRED);
DRAWTRENDLINE(M1=0,T1,M1=0,T1,COLORGREEN);
TROUGHBARS
求之子转向的前M个波谷的位置。
用法:
TROUGHBARS(X,P,M,C)求X满足条件P形成之子转向的前M个波谷的位置。
C是标记量,取
1表示P是百分比数值;取0表示P是绝对数值。
注:
本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
例1:
TROUGHBARS(LOW,10,1,1);表示最低价的10%的之字转向的上一个波谷到当前的周期数;
TROUGHBARS(MA(LOW,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的
上一个波谷到当前的周期数
例2:
10%的之字转向的上一个波峰波谷的位置标注相应的值(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T2:
=TROUGH(L,10,1,1);
N2:
=TROUGHBARS(L,10,1,1);
DRAWNUMBER(N1=0,H,P1,2,COLORYELLOW);
DRAWNUMBER(N2=0,L,T2,2,COLORYELLOW);
例3:
根据10%的之字转向的上一个波峰波谷位置,确定价格形态(日线周期)。
P1:
=PEAK(H,10,1,1);
N1:
=PEAKBARS(H,10,1,1);
T1:
=TROUGH(L,10,1,1);
M1:
=TROUGHBARS(L,10,1,1);
DRAWTRENDLINE(N1=0,P1,N1=0,P1,COLORRED);
DRAWTRENDLINE(M1=0,T1,M1=0,T1,COLORGREEN);
WAVEPEAK
返回K线图波峰位置。
用法:
WAVEPEAK(N)如果当前K线最高价大于前后N根K线的最高价返回1,否则返回0。
N
支持变量。
注:
1、当N为有效值,但当前的k线数不足N根,或者N为空值的情况下,代表不成立,该函数返回0。
2、本函数有未来函数性质。
例1:
WAVEPEAK(10);
来函数
(2)
BACKSET(X,N)
将当前位置到若干周期前的数据设为1。
用法:
BACKSET(X,N),若X非0,则将包含当前位置在内的一共N周期的数值设为1。
注:
1、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;
2、N为0或空值的情况下,返回空值。
3、N可以为变量
4、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!
例:
BACKSET(CLOSE>OPEN,2);表示当K线收阳时,将该周期及前一周期数值设为1,否则为0
该函数参数支持变量计算如BACKSET(CLOSE>OPEN,VAR1);
寸函数(47)
AUTOCLEARSIG
一根K线上信号满60个时,自动对前面的信号进行删除。
清除规则:
1、仅作用于信号执行方式选择为不复核的模型
2.仅作用于模组运行过程中,效果测试及模组加载的历史信号不受该关键字影响。
例:
CLOSE>OPEN,BK;
CLOSEAUTOFILTER;
AUTOCLEARSIG;
加入了AUTOCLEARSIG关键字,在大周期上一根K线上反复出现信号,满60个时删掉历史所有信号只保留最后的60个信号;
若不加入AUTOCLEARSIG关键字,当信号满60个时,模组自动停止运行
A