文华程序化指令.docx
《文华程序化指令.docx》由会员分享,可在线阅读,更多相关《文华程序化指令.docx(26页珍藏版)》请在冰豆网上搜索。
![文华程序化指令.docx](https://file1.bdocx.com/fileroot1/2022-10/24/80225be8-4ce9-4fa6-9417-f94cf7561c52/80225be8-4ce9-4fa6-9417-f94cf7561c521.gif)
文华程序化指令
自编公式支持的操作符
操作符
意义
例
+
加法
CLOSE+OPEN表示求收盘价及开盘价的和。
CLOSE-OPEN表示求收盘价及开盘价的差。
CLOSE*OPEN表示求收盘价及开盘价的积。
CLOSE/OPEN表示求收盘价及开盘价的商。
-
减法
*
乘法
/
除法
&&
与(并且),也可简写为AND
||
或(或者),也可简写为OR
>
大于
CLOSE>OPEN表示判断当前周期是否收阳。
<
小于
CLOSE=OPEN表示判断当前周期是否平盘。
>=
大于等于
<=
小于等于
<>
不等于
=
等于操作符
:
=
只定义一个局部变量
(这个变量在画图时是不画的)
TMP1:
=(OPEN+CLOSE)/2;
MA(TMP1,10);
上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句所求出的结果。
相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为AVP,第二条线是均价的简单移动平均线。
AVP:
(OPEN+CLOSE)/2;
MA(AVP,10);
:
声明了一个变量,
在画图时画出它并且按这个名字显示。
编辑平台的语法
1.关于公式名称:
公式的名称不可以和已经存在的公式重复。
2.关于参数:
每个自编公式最多可以定义四个参数,参数的定义如下,首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值。
在定义参数时要注意的是参数名称不可以重复。
3.关于变量名称:
变量名称不可以互相重复,不可以和参数名重复,不可以和函数名称重复。
4.关于公式内容:
公式的每个语句应该以分号结束,包括最后一条语句。
在数据公式的时候请您注意一定要使用半角输入。
在编写公式的过程中,如果您不记得某个函数的确切写法,可以选择插入函数来插入函数。
5.如果您在编写公式之后,想给这个公式加上注释、说明,可以点击公式名称后面的“公式说明”,在弹出窗口中输入。
6.IFELSE(C,A,B)
如果条件C成立则返回A值,否则返回B值
例:
IFELSE(CLOSE>REF(CLOSE,1),1,0);表示若今日收盘价高于前一日收盘价,则返回1,否则返回0
自编公式支持的函数
1.引用数据
AVPRICE
引用均价(在盘后对于国内三个期货交易所指结算价)
SETTLE
引用结算价(只有在日线周期盘后才能引用当日的结算价)
CLOSE
引用收盘价(在盘中指最新价),也可简写为C
HIGH
引用最高价,也可简写为H。
LOW
引用最低价,也可简写为L。
OPEN
引用开盘价,也可简写为O。
OPI
引用持仓量
REF(X,N)
引用X在N个周期前的值
例:
REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价
REFX(X,N)
引用N个周期后的数据。
(N为大于等于1的整数)『未来函数』
例:
REFX(CLOSE,5);表示引用自当前周期后第5个周期的收盘价
VOL
引用成交量,也可简写为V。
GETPRICE(N)
根据文华码取出某一品种的最新价。
例:
GETPRICE(1209);返回文华码为1209的合约品种的最新价。
PARAM
[参数名称,最小值,最大值,缺省值]
在源码中定义参数。
例:
PARAM[N,1,100,12]
MAN:
MA(CLOSE,N);
表示参数为N,最小值为1,最大值为100,缺省值为12.
#IMPORT[CODE,PERIOD,FORMULA]ASVAR(Mytrader2009和Myadvisor(赢智)支持)
#IMPORT[CODE,PERIOD,FORMULA]ASVAR;
CODE文华码PERIOD周期FORMULA引用模型名
VAR 定义变量名
例子:
#IMPORT[1205,MIN5,TEST]ASM1005
意思是引用[豆粕1005]五分钟图上指标[TEST.FML]的数据
使用的方法:
如当前存在一个指标TEST.FML
//TEST.FML
CL:
=CLOSE;
OP:
=OPEN;
我想在新建的指标TEST1中引用[豆粕1005]五分钟周期上指标[TEST.FML]的数据
可以如下编写TEST1指标
//TEST1.FML
#IMPORT[1205,MIN5,TEST]ASVARTEST
DD:
VARTEST.CL;
DF:
VARTEST.OP;
引用的约束
1.只能引用.FML文件
2.只能引用如下周期MIN1MIN3MIN5MIN10MIN15MIN30HOUR1HOUR3HOUR8DAYWEEKMONTH
3.只能短周期引用长周期比如不能日线周期上加载引用了分钟数据的指标。
4.被引用的指标中不能存在引用
5.如果不写文华码,默认引用当前合约
2.金融统计
BACKSET(X,N)
若X条件成立,则将当前位置到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(X,(N-1))]/(N+1)其中EMA(X,(N-1))为第(N-1)天的EMA值
EMA2(X,N)
表示求X在N周期内的加权平均。
(线性加权)
计算方法:
EMA2(X,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,N)
之字转向,当X变化量超过P时转向,当N取1,P为百分比数;当N取0,P为价位差值绝对值。
『未来函数』
例:
ZIGZAG(HIGH,10,1);表示最高价的10%的之字转向
ZIGZAG(MA(HIGH,34),100,0);表示34个周期内最高价均线的100个价位的之字转向
PEAK(X,P,M,N)
取得ZIGZAG前M个波峰的值。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
例:
PEAK(HIGH,10,1,1);表示最高价的10%的之字转向的上一个波峰的数值;
PEAK(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰的数值
PEAKBARS(X,P,M,N)
取得ZIGZAG前M个波峰到当前周期的周期数。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
例:
PEAKBARS(HIGH,10,1,1);表示最高价的10%的之字转向的上一个波峰到当前的周期数
PEAKBARS(MA(HIGH,34),100,1,0);表示34个周期内最高价均线的100个价位的之字转向的上一个波峰到当前的周期数
TROUGH(X,P,M,N)
取得ZIGZAG前M个波谷的值。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
例:
TROUGH(LOW,10,1,1);表示最低价的10%的之字转向的上一个波谷的数值
TROUGH(MA(LOW,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个波谷的数值
TROUGHBARS(X,P,M,N)
取得ZIGZAG前M个波谷到当前周期的周期数。
其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。
『未来函数』
TROUGHBARS(LOW,10,1,1);表示最低价的10%的之字转向的上一个波谷到当前的周期数
TROUGHBARS(MA(LOW,34),100,1,0);表示34个周期内最低价均线的100个价位的之字转向的上一个波谷到当前的周期数
SAR(N,Step,Max)
得到抛物转向值。
N为计算周期,Step为步长,Max为极值。
(系统函数,计算步骤后台自动完成)
例:
SAR(17,0.03,0.3);表示计算17个周期抛物转向,步长为3%,极限值为30%
SMA(X,N,M)
得到X在N个周期内的移动平均,M为权重(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)=FORCAST(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)