文华语法简介

以前用CTP和TB,mt4,应群友要求贡献一个文华策略,只能看下文华麦语言的语法。

编辑平台支持的操作符
操作符
意义
加法
CLOSE+OPEN 表示求收盘价及开盘价的和。
CLOSE-OPEN 表示求收盘价及开盘价的差。
CLOSE*OPEN 表示求收盘价及开盘价的积。
CLOSE/OPEN 表示求收盘价及开盘价的商。
减法
*
乘法
/
除法
&&
与(并且)
CLOSE>OPEN 表示判断当前周期是否收阳。
CLOSE=OPEN 表示判断当前周期是否平盘。
||
或(或者)
>
大于
<
小于
>=
大于等于
<=
小于等于
<> 
不等于
=
等于操作符
:=
只定义一个局部变量
(这个变量在画图时是不画的)
TMP1:=(OPEN+CLOSE)/2;
MA(TMP1,10);

上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句所求出的结果。
相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为AVP,第二条线是均价的简单移动平均线。
AVP:(OPEN+CLOSE)/2;
MA(AVP,10);
声明了一个变量,在画图时画出它并且按这个名字显示。
 
 
编辑平台支持的函数
1.引用数据
AVPRICE
引用均价(在盘后对于国内三个期货交易所指结算价)
CLOSE
引用收盘价(在盘中指最新价)
HIGH
引用最高价
LOW
引用最低价
OPEN
引用开盘价
OPI
引用持仓量
REF(X,N)
引用X在N个周期前的值
例:REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
REFX(X,N)
引用N个周期后的数据。(N为大于等于1的整数)(未来函数)
例:REFX(CLOSE,5);表示引用自当前周期后第5个周期的收盘价
SETTLE
引用结算价(只有盘后才能引用当日的结算价)
VOL
引用成交量

2.金融统计
BACKSET(X,N)
若X非0,则将当前位置到N周期前的数值设为1。
例:BACKSET(CLOSE>OPEN,3);表示当K线收阳时,自当前位置到3周期前的数值设为1
BARSLAST(X)
求上一次条件成立到当前的周期数。
COUNT(X,N)
表示统计在N周期内满足X条件的周期数。如果N为0则表示从第一天开始算起。
例:WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N)); COUNT(WR>80,5);表示统计在5个周期内满足WR>80的次数
DMA(X,A)
返回X的动态移动平均,其中A必须介于0及1之间。
计算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)为第(N-1)天的DMA值
EMA(X,N)
表示求X在N周期内的平滑移动平均。(指数加权)
计算方法:EMA(X,N)=[2*X+(N-1)*EMA(N-1)]/(N+1) 其中EMA(N-1)为第(N-1)天的EMA值
EMA2(X,N)
表示求X在N周期内的加权平均。(线性加权)
计算方法:EMA2(N)=(N*X0+(N-1)*X1+(N-2)*X2+...+1*XN)/(N+(N-1)+(N-2)+...+1),X0表示本周期值,X1表示上一周期值...
HHV(X,N)
得到X在N周期内的最高值,如果N=0,则从第一个有效周期开始算起。
例:HHV(HIGH,13);求13个周期内的最高价的最大值。
HHVBARS(X,N)
得到X在N周期内的最高值位置到当前的周期数。如果N=0,则从第一个有效周期开始算起。
例:HHVBARS(VOL,0); 求历史成交量最大的周期到当前的周期数
LLV(X,N)
得到X在N周期内的最小值,如果N=0,则从第一个有效周期开始算起。
例:LLV(LOW,25);表示求25个周期内最低价的最小值
LLVBARS(X,N)
得到X在N周期内的最小值的位置到当前的周期数。如果N=0则从第一个有效周期开始算起。
例:LLVBARS(VOL,0); 求历史成交量最小的周期到当前的周期数
MA(X,N)
求X在N周期内的简单移动平均。
计算方法:MA=(A1+A2+A3+A4+A5)/5 求A在5个周期内的简单移动平均
ZIGZAG(X,P,C)
之字转向(未来函数),当C取1,P为百分比数;当C取0,P为价位差值。
例:ZIGZAG(HIGH,10,1);表示最高价的10%的之字转向
ZIGZAG(MA(HIGH,34),100,0);表示34个周期内最高价均线的100个价位的之字转向
PEAK(X,P,M,C)
取得ZIGZAG前M个波峰的值。其中X为数据,P为转折值(如果C为1的话,这个值为百分比,否则为绝对值),M为大于等于1的整数。(未来函数)
例:PEAK(HIGH,10,1,1);表示最高价的10%的之字转向的上一个波峰的数值 PEAK(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰的数值
PEAKBARS(X,P,M,C)
取得ZIGZAG前M个波峰到当前周期的周期数。(未来函数)
例:PEAKBARS(HIGH,10,1,1);表示最高价的10%的之字转向的上一个波峰到当前的周期数
PEAKBARS(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰到当前的周期数
TROUGH(X,P,M,C)
取得ZIGZAG前M个波谷的值。(未来函数)
例:TROUGH(LOW,10,1,1);表示最低价的10%的之字转向的上一个波谷的数值
TROUGH (MA(LOW,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个波谷的数值
TROUGHBARS(X,P,M,C)
取得ZIGZAG前M个波谷到当前周期的周期数 (未来函数)
TROUGHBARS(LOW,10,1,1);表示最低价的10%的之字转向的上一个波谷到当前的周期数
TROUGHBARS(MA(LOW,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个波谷到当前的周期数
SAR(N, Step, Max)
得到抛物转向值。N为计算周期,Step为步长,Max为极值。
例: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
SUM(X,N)
得到X在N周期内的总和,如果N=0,则从第一个有效周期开始算起。
例: SUM(VOL,10);表示统计10周期内的成交量总和
SUMBARS(X,A)
得到X向前累加直到大于A时的周期数。
TRMA(X,N)
求X在N周期内的三角移动平均。
TSMA(X,N)
求X在N周期内的时间序列移动平均。
计算方法:TSMA(X,N)= FOCAST(X,N)+SLOPE(X,N)

3.数理统计
AVEDEV(X,N)
求X在N周期内的平均绝对偏差。
DEVSQ(X,N)
数据偏差平方和。
FORCAST(X,N)
得到X的N周期线性回归预测值。
例:FORCAST(CLOSE,5);表示求5周期线性回归预测
SLOPE(X,N)
得到X在N周期内的线性回归的斜率。
例:SLOPE(CLOSE,5);表示求5周期线性回归线的斜率
STD(X,N)
得到X在N周期内的标准差。
STDP(X,N)
得到X在N周期内的总体标准差。
VAR(X,N)
得到X在N周期内的样本方差。
VARP(X,N)
得到X在N周期内的总体样本方差。
数理统计举例说明:
设一个数列,数列中数据的总个数为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)²+ (-26.2)²+ (-17.2)²+ (54.8)²+ (53.8)²=11130.80
5、总体样本方差VARP(X,N):将偏差的平方相加,总和除以总个数N。用公式可以这样算: (-65.2)²+ (-26.2)²+ (-17.2)²+ (54.8)²+ (53.8)²/5=2226.16
6、样本方差VAR(X,N):是总体方差的N/(N-1)倍。 2226.16*5/(5-1)=2782.70 估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。
7、总体标准差STDP(X,N):方差的开方。 [(-65.2)²+ (-26.2)²+ (-17.2)²+ (54.8)²+ (53.8)²/5]½=47.18
8、标准差STD(X,N):估算样本方差的开方。 [2226.16*5/(5-1)]½=52.75 同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。

4.逻辑判断
BETWEEN(A,B,C)
判断A是否位于B及C之间,如果A介于B,C之间则返回1,否则返回0。
例:BETWEEN(CLOSE,MA5,MA40); 表示收盘价介于5日均线与40日均线之间
CROSS(X,Y)
如果X上穿Y则返回1(yes),否则返回0(no)。
例:CROSS(CLOSE,MA(CLOSE,5));表示收盘线从下方向上穿过5日均线
EXIST(COND,N)
判断过去N个周期内是否有满足条件COND。
例:EXIST(CLOSE>REF(HIGH,1),10);表示10个周期中是否存在收盘价大于前一个周期的最高价
EVERY(COND,N)
判断过去N个周期内是否一直满足条件COND。
例:EVERY(CLOSE>OPEN,5);表示5个周期内一直是阳线
LAST(COND,N1,N2)
判断过去N1到N2周期内是否一直满足条件COND。
例:LAST(CLOSE>OPEN,10,5);表示从过去第10个周期到第5个周期内一直是阳线
LONGCROSS(A,B,N)
如果A在前N个周期内都小于B,本周期上穿B,则返回1。否则返回0。
例:LONGCROSS(CLOSE,MA(CLOSE,10),20);表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线
NOFILTER
信号过滤函数。
公式后加“NOFILTER;”是指不需要过滤,出现任何交易指令都会执行。公式后不加“NOFILTER;”是指当连续出现同方向的交易指令时,系统只显示出第一个交易指令,其他交易指令自动被过滤。
IF(C,A,B)
如果C成立返回A,否则返回B。
例:IF(CLOSE>REF(CLOSE,1),1,0);表示若今日收盘价高于前一日收盘价,则返回1,否则返回0
ISDOWN
如果该周期收阴则返回1,否则返回0。
ISEQUAL
如果该周期平盘则返回1,否则返回0。
ISUP
如果该周期收阳则返回1,否则返回0。
ISLASTBAR
取得当前周期是否为最后一根K线。最后一个周期返回值为1,其余为0。
VALUEWHEN(COND,DATA)
当条件COND满足时,取当时的DATA的值,否则取得VALUEWHEN的前一个值。
例:VALUEWHEN(HIGH>REF(HIGH,5),HIGH);表示当前最高价大于前五个周期最高价的最大值时返回当前最高价

5.数学运算
ABS(X)
求X的绝对值。
例:ABS(CLOSE-10) 返回收盘价和10的价差的绝对值
ACOS(X)
求X的反余弦值。
ASIN(X)
求X的反正弦值。
ATAN(X)
求X的反正切值。
CEILING(X)
向上舍入。返回沿X数值增大方向最接近的整数。
COS(X)
返回X的余弦值。
EXP(X)
表示求e的X次幂。
FLOOR(X)
向下舍入。返回沿X数值减小方向最接近的整数。
INTPART(X)
取X的整数部分。INTPART(X)返回沿X绝对值减小方向最接近的整数。
LN(X)
得到X的自然对数。以e为底的对数。
例:LN(OPEN);求开盘价的自然对数。
LOG(X)
得到X的常用对数。取得X的以10为底的对数。
例:LOG(OPEN);求开盘价的以10为底的对数。
MAX(A,B)
求A,B中的较大者。
例:MAX(CLOSE-OPEN,0);表示若收盘价大于开盘价返回它们的差值,否则返回0
MIN(A,B)
求A,B中的较小者。
例:MIN(OPEN,CLOSE);返回开盘价和收盘价中的较小值
MOD(A,B)
返回A对B得到模。
例:MOD(CLOSE,OPEN);收盘价除以开盘价所得余数
NOT(X)
当X为0时返回1,否则返回0。
例:NOT(TIME=0905);表示该周期对应的时间不是9:05AM
POW(A,B)
得到A的B次幂。
例:POW(CLOSE,2);求得收盘价的2次方
REVERSE(X)
取反。
例:REVERSE(LOW);返回-LOW
SGN(X)
得到X的符号,如果X>0则返回1,如果X<0则返回-1,否则返回0。
SIN(X)
得到X的正弦值。
SQRT(X)
得到X的平方根。
例:SQRT(CLOSE);收盘价的平方根
SQUARE(X)
得到X的平方。
例:SQUARE(CLOSE);收盘价的平方
TAN(X)
得到X的正切值。

6.时间函数
BARPOS
取得当前K线的位置。
DATE
取得当前周期的日期数(700101-341231)。
DAY
取得当前周期的日数(1-31)。
HOUR
取得当前周期的小时数(0-23)。
MINUTE
取得当前周期的分钟数(0-59)。
MONTH
取得当前周期的月数(1-12)。
TIME
取得当前周期的时间数(0-2359)。
WEEKDAY
取得当前周期的星期数(0-6)。
YEAR
取得当前周期的年数(1970-2034)。

7.绘图
DRAWLINE
(C1,P1,C2,P2, COLOR)
当条件C1及C2均满足时,从P1画直线到P2,颜色为COLOR。
例:DRAWLINE(MA18< CLOSE,OPEN,MA5 >CLOSE,CLOSE,COLORCYAN); 表示当收盘价大于18日均线并且小于5日均线时,从开盘价画青色直线到收盘价。
DRAWTEXT(C,P,TEXT)
表示当条件C满足时在P上写TEXT文字。
例:DRAWTEXT(CLOSE< OPEN&&REF(CLOSE,1)< REF(OPEN,1) &&REF(VOL,1)*1.1< VOL,LOW,'注'); 表示连续两日收阴并且成交量比前一日至少多10%时,在最低价上写“注”字。
DRAWSL(COND,DATA,
SLOPE,LEN,EXPAND,
COLOR)
画斜线,当条件COND满足时,从DATA开始以每个周期相差SLOPE个点的斜率画斜线,划线长度为LEN个周期,EXPAND为线段的延长方式(0:不延伸;1:向左延伸;2:向右延伸;3:双向延伸)。
例:DRAWSL(LOW=LLV(LOW,50),LOW,5,3,2,COLORRED); 表示当前最低价等于50周期内的最小值时,从当前最小值开始以每隔5个点的斜率画长度为3个周期向右延伸的斜线,颜色为红色
DRAWNUMBER
(COND,DATA,NUMBER,PRECISION,COLOR)
画数字。当条件COND满足时,在DATA位置写数字NUMBER(为数组),精度为PRECISION(小数点后有几位数字)。
例:DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2,COLORRED); 表示当日涨幅大于8%时在最高价位置显示涨幅(相对开盘价的百分比)。
FILLRGN
(COND,DATA1,DATA2,COLOR)
填充区域,当条件COND满足时,填充DATA1及DATA2包围的区域。
例:FILLRGN(MA5>MA10,MA5,MA10,COLORRED); 表示MA5>MA10时以红色填充MA5和MA10之间的区域。
POLYLINE
(COND,DATA,COLOR)
画折线,当条件COND满足时,连接各个DATA点。
例:POLYLINE(CLOSE>=HHV(CLOSE,100),CLOSE,COLORRED); 表示在收盘价创100天新高点之间画折线。
PARTLINE
(COND,DATA,COLOR)
同POLYLINE。
例:PARTLINE(HIGH>REF(HIGH,1),HIGH,COLORRED); 表示当期最高价大于前期最高价用红色绘制最高价连线。
STICKLINE
(C,P1,P2,Color,Empty)
如果条件C满足时,从P1到P2画柱线,颜色为Color,如果Empty不为0,则为空心柱,否则为实心柱。
例:STICKLINE(OPEN-CLOSE>0,OPEN,CLOSE,COLORCYAN,0); 表示当开盘价大于收盘价时,从开盘价到收盘价画青色的实心柱,即K线阴线的实体部分。
VERTLINE
(COND,COLOR)
画垂直线,当条件COND满足时,画垂直线。
例:VERTLINE(HIGH>=HHV(HIGH,30),COLORRED); 表示在价格创30天新高时画垂直线。
 
 
编辑平台可以使用的常数
常数
意义
COLORRED
红色
COLORGREEN
绿色
COLORBLUE
蓝色
COLORMAGENTA
红紫色
COLORYELLOW
黄色
COLORLIGHTGREY
浅灰色
COLORLIGHTRED
浅红色
COLORLIGHTGREEN
浅绿色
COLORLIGHTBLUE
浅蓝色
COLORBLACK
黑色
COLORWHITE
白色
COLORCYAN
青色
COLORSTICK
画彩色柱线
VOLUMESTICK
画成交量线
BAMBOOLINE
画竹线
CIRCLEDOT
画圆
OPISTICK
画持仓量柱线
注意:在公式内即使你定义了某种颜色,在显示的时候也未必是此种颜色,取决于背景颜色当前页面里是否保了该指标的颜色及您是否在显示的时候改变了该指标的颜色设置。
 
 
编辑平台的语法
 
1.关于公式名称:
公式的名称不可以和已经存在的公式重复。

2.关于参数:
每个自编公式最多可以定义四个参数,参数的定义如下,首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值。在定义参数时要注意的是参数名称不可以重复。

3.关于变量名称:
变量名称不可以互相重复,不可以和参数名重复,不可以和函数名称重复。

4.关于公式内容:
公式的每个语句应该以分号结束,包括最后一条语句。在数据公式的时候请您注意一定要使用半角输入。在编写公式的过程中,如果您不记得某个函数的确切写法,可以选择插入函数来插入函数。

5.如果您在编写公式之后,想给这个公式加上注释,说明之类的东西,可以使用公式说明来输入

发布了1 篇原创文章 · 获赞 1 · 访问量 3581
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览