最新文华期货自动化交易模型编写教程 联系客服

发布时间 : 星期六 文章最新文华期货自动化交易模型编写教程更新完毕开始阅读

一、 程序化交易的编写

㈠、交易模型编写规范和一般原则 1、编辑平台支持的操作符

操作符 意义 例 CLOSE+OPEN 表示求收盘价及开盘价的+ 加法 和。 CLOSE-OPEN 表示求收盘价及开盘价的- 减法 差。 CLOSE*OPEN 表示求收盘价及开盘价的* 乘法 积。 CLOSE/OPEN 表示求收盘价及开盘价的/ 除法 商。 AND OR 与(并且),也可简写为&& 或(或者), 也可简写为|| CLOSE>OPEN 表示判断当前周期是否收> 大于 阳。 CLOSE=OPEN 表示判断当前周期是否平< 小于 盘。 >= <= <> = 大于等于 小于等于 不等于 等于 := 只定义一个局部变量 (这个变量在画图时是不画的) TMP1:=(OPEN+CLOSE)/2; :MA(TMP1,10); 上面的公式的第一个语句定义了一个局部变量TMP1,在下面一行中引用了这个局部变量,但是要注意的是这个公式在画图的时候只画了第二条语句MA10所求出的结果。 相反下面这个公式则需要画出两条线,第一条是自己定义的均价线,同时显示了均价的名称为AVP,第二条线是均价的简单移动平均线。 AVP:(OPEN+CLOSE)/2; MA(AVP,10); : 声明了一个变量, 在画图时画出它并且按这个名字显示。 2、编辑平台支持的函数 ⑴引用数据

AVPRICE SETTLE CLOSE HIGH LOW OPEN OPI REF(X,N) 引用均价(在盘后对于国内三个期货交易所指结算价) 引用结算价(只有在日线周期盘后才能引用当日的结算价) 引用收盘价(在盘中指最新价),也可简写为 C 引用最高价,也可简写为 H 。 引用最低价,也可简写为L 。 引用开盘价,也可简写为O 。 引用持仓量 引用X在N个周期前的值 例:REF(CLOSE,5);表示引用当前周期前第5个周期的收盘价 引用N个周期后的数据。(N为大于等于1的整数)『未来函数』 例:REFX(CLOSE,5);表示引用自当前周期后第5个周期的收盘价 REFX(X,N) 2

VOL 引用成交量,也可简写为V 。 GETPRICE(N) 根据文华码取出某一品种的最新价。 例:GETPRICE(1209);返回文华码为1209的合约品种的最新价。 PARAM 在源码中定义参数。 [参数名称,最小值,最大值,例:PARAM[N,1,100,12] 缺省值] MAN:MA(CLOSE,N); 表示参数为N,最小值为1,最大值为100,缺省值为12. #IMPORT #IMPORT[CODE,PERIOD,FORMULA]AS [CODE,PERIOD,FORMULA] VAR; AS VAR(Mytrader2009和CODE 文华码PERIOD 周期FORMULA Myadvisor(赢智)支持) 引用模型名 VAR 定义变量名 例子: #IMPORT [1205,MIN5,TEST] AS M1005 意思是引用[豆粕1005] 五分钟图上指标[TEST.FML] 的数据 使用的方法: 如当前存在一个指标TEST.FML //TEST.FML CL:=CLOSE; OP:=OPEN; 我想在新建的指标 TEST1中引用[豆粕1005] 五分钟周期上指标[TEST.FML] 的数据 可以如下编写TEST1指标 //TEST1.FML #IMPORT [1205,MIN5,TEST] AS VARTEST DD:VARTEST.CL; DF:VARTEST.OP; 引用的约束 1.只能引用 .FML文件 2.只能引用如下周期 MIN1 MIN3 MIN5 MIN10 MIN15 MIN30 HOUR1 HOUR3 HOUR8 DAY WEEK MONTH 3.只能短周期引用长周期比如不能日线周期上加载引用了分钟数据的指标。 4.被引用的指标中不能存在引用 3

⑵金融统计

BACKSET(X,N) 若X条件成立,则将当前位置到N周期前的数值设为1。『未来函数』 例:BACKSET(CLOSE>OPEN,3);表示当K线收阳时,自当前位置到3周期前的数值设为1 求上一次条件成立到当前的周期数。 表示统计在N周期内满足X条件的周期数。如果N为0则表示从已申请到的数据的第一天开始算起。 例:WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N)); COUNT(WR>80,5);表示统计在5个周期内满足WR>80的次数 返回X的动态移动平均,其中A为常数,并且必须介于0及1之间。 计算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)为第(N-1)天的DMA值。 表示求X在N周期内的平滑移动平均。(指数加权) 计算方法:EMA(X,N)=[2*X+(N-1)*EMA(X,(N-1))]/(N+1) 其中EMA(X,(N-1))为第(N-1)天的EMA值 表示求X在N周期内的加权平均。(线性加权) 计算方法:EMA2(X,N)=(N*X0+(N-1)*X1+(N-2)*X2+...+1*XN)/(N+(N-1)+(N-2)+...+1),X0表示本周期值,X1表示上一周期值... 得到X在N周期内的最高值,如果N=0,则从本地数据的第一个有效周期开始算起。 例:HHV(HIGH,13);求13个周期内的最高价的最大值。 得到X在N周期内的最高值位置到当前的周期数。如果N=0,则从本地数据的第一个有效周期开始算起。 例:HHVBARS(VOL,0); 求历史成交量最大的周期到当前的周期数 得到X在N周期内的最小值,如果N=0,则从本地数据的第一个有效周期开始算起。 例:LLV(LOW,25);表示求25个周期内最低价的最小值 得到X在N周期内的最小值的位置到当前的周期数。如果N=0则从本地数据的第一个有效周期开始算起。 例:LLVBARS(VOL,0); 求历史成交量最小的周期到当前的周期数 求X在N周期内的简单移动平均。 计算方法:MA=(A1+A2+A3+A4+A5)/5 求A在5个周期内的简单移动平均 之字转向,当X变化量超过P时转向,当N取1,P为百分比数;当N取0,P为价位差值绝对值。『未来函数』 BARSLAST(X) COUNT(X,N) DMA(X,A) EMA(X,N) EMA2(X,N) HHV(X,N) HHVBARS(X,N) LLV(X,N) LLVBARS(X,N) MA(X,N) ZIGZAG(X,P,N) 4