为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

文华程序交易编程指南家函数大全

2019-04-26 50页 doc 116KB 71阅读

用户头像

is_531654

暂无简介

举报
文华程序交易编程指南家函数大全在15分钟图内,突破开盘后15分钟高低点的交易系统 HH:=VALUEWHEN(TIME=0900,HIGH);//每天第一根15分钟K线的高点 LL:=VALUEWHEN(TIME=0900,LOW); //每天第一根15分钟K线的低点 CROSS(CLOSE,HH),BK; //只要价格上穿15分钟的高点,买进开仓; CROSS(LL,CLOSE),SK; //只要价格下穿15分钟的低点,卖出开仓; CROSS(CLOSE,HH)||CROSS(TIME,1444),BP; //只要价格上穿15分钟的高点,买入...
文华程序交易编程指南家函数大全
在15分钟图内,突破开盘后15分钟高低点的交易系统 HH:=VALUEWHEN(TIME=0900,HIGH);//每天第一根15分钟K线的高点 LL:=VALUEWHEN(TIME=0900,LOW); //每天第一根15分钟K线的低点 CROSS(CLOSE,HH),BK; //只要价格上穿15分钟的高点,买进开仓; CROSS(LL,CLOSE),SK; //只要价格下穿15分钟的低点,卖出开仓; CROSS(CLOSE,HH)||CROSS(TIME,1444),BP; //只要价格上穿15分钟的高点,买入平仓;或时间在14:44之后平仓 CROSS(LL,CLOSE)||CROSS(TIME,1444),SP; //只要价格下穿15分钟的低点,卖出平仓;或时间在14:44之后平仓 在3分钟图内,突破开盘后15分钟的高低点的交易系统 首先先建立一个指标就是HL.fml,然后用引用的方法 #IMPORT[,MIN15,HL] AS VARHL HH1:=VARHL.HH; LL1:=VARHL.LL; CROSS(CLOSE,HH1),BK; CROSS(LL1,CLOSE),SK; CROSS(CLOSE,HH1)||CROSS(TIME,1456),BP; CROSS(LL1,CLOSE)||CROSS(TIME,1456),SP; 一天只交易一次的编写方法 NN:=BARSLAST(DATE<>REF(DATE,1))+1; 买入开仓条件&&REF(EXIST(BB,NN),1)<1,BK; BS,SP; 卖出开仓条件&&REF(EXIST(BB,NN)<1,1),SK; SS,BP; 开盘交易,收盘退出 DATE<>REF(DATE,1),BK; TIME>=1455,SP; 周间日模型(固定金额止损) NN:=BARSLAST(DATE<>REF(DATE,1))+1; #IMPORT[,MIN15,HL] AS VARHL HH1:=VARHL.HH; LL1:=VARHL.LL; COB:=(WEEKDAY=1); CS:=(WEEKDAY=2||WEEKDAY=4); COB&&REF(EXIST(COB,NN),1)<1&&DATE<>REF(DATE,1),BK; CS&&REF(EXIST(CS,NN),1)<1&&DATE<>REF(DATE,1),SK; CROSS(TIME,1456)||CROSS(CLOSE,VALUEWHEN(TIME=0900,OPEN)+22),BP; CROSS(VALUEWHEN(TIME=0900,OPEN)-22,CLOSE)||CROSS(TIME,1456),SP; 低点判断的程序编写方法 RIBAO1:=(REF(LOW,1)>REF(LOW,2)&&REF(HIGH,1)REF(LO W,1)&&HIGHREF(HIGH,2))||(LOWREF(HIGH,1)); 前第二根K线被前第一个K线所包含; LL:VALUEWHEN(NOT(WAIBAO1)&&NOT(RIBAO1)&&LOW>REF(LOW,1)&&REF(LOW,2)>RE F(LOW,1),REF(LOW,1)); 既非内孕线,也非外孕线,同时已经出现低点拐点,作为最近低点 高点判断的程序编写方法 RIBAO2:=(REF(LOW,1)>REF(LOW,2)&&REF(HIGH,1)REF(LO W,1)&&HIGHREF(HIGH,2))||(LOWREF(HIGH,1)); 前第二根K线被前第一个K线所包含; HH:VALUEWHEN(NOT(WAIBAO2)&&NOT(RIBAO2)&&H20*MD&&AA-BKPRICE<50*MD&&C<=BKPRICE+(AA-BKPRICE)*0.7),SP; 岛形反转形态突破(做空形态) TRGE:=ABS(REF(C-L,1)/REF(H-L,1));//顶步岛形反转 AA:=REF(L,1)>REF(H,2)&&REF(C,1)>REF(H,2); BB:=OREF(H,2)&&REF(C,1)>REF(H,2)&&OREF(DATE,1),SK; NN:=BARSLAST(CC=1)+2; HH:=HHV(H,NN); JSGX:=IFELSE(HH<>REF(HH,1),REF(HH,1),HH); CROSS(C,JSGX)||C<=4*SKPRICE-3*JSGX-1,BP; 文华财经函数模型 1、引用数据 A VPRICE 引用均价(在盘后对于国内三个期货交易所指结算价) SETTLE 引用结算价(如果用在周期小于'日'的K线上如5分钟K线,一小时k线,每根k 线返回的值示这根k线当日开盘时到这根k线的为止的结算价(均价) 如果用在周期大于等于'日'的K线上,返回当根K线结束时间所在日的结算价.) 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的合约品种的最新价。 2、金融统计 BACKSET(X,N) 若X条件成立,则将当前位置到N周期前的数值设为1。『未来函数』例:BACKSET(CLOSE>OPEN,3);表示当K线收阳时,自当前位置到3周期前的数值设为1 该函数参数支持变量计算如BACKSET(CLOSE>OPEN,V AR1);//V AR1是变量 BARSLAST(X) 求上一次条件成立到当前的周期数。 例: BARSLAST(X):上一次满足X条件到现在的K线根数。如果本根K线满足X条件,则BARSLAST(X)返回0. 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,N) 返回X的动态移动平均,其中N必须介于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的整数。『未来函数』 TROUGH(LOW,10,1,1); 表示最低价的10%的之字转向的上一个波谷到当前的周期数。 TROUGH (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)= FOCAST(X,N)+SLOPE(X,N)。 3、数理统计 A VEDEV(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周期内的总体标准差 V AR(X,N) 得到X在N周期内的样本方差 V ARP(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、平均绝对偏差A VEDEV(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、总体样本方差V ARP(X,N):将偏差的平方相加,总和除以总个数N。用公式可以这样算: (-65.2)2+ (-26.2)2+ (-17.2)2+ (54.8)2+ (53.8)2/5=2226.16。 6、样本方差V AR(X,N):是总体方差的N/(N-1)倍。2226.16*5/(5-1)=2782.70 估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。 7、总体标准差STDP(X,N):方差的开方。[(-65.2)2+ (-26.2)2+ (-17.2)2+ (54.8)2+ (53.8)2/5]?=47.18。 8、标准差STD(X,N):估算样本方差的开方。[2226.16*5/(5-1)]?=52.75 同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。 4、逻辑判断 BETWEEN(A,B,C)判断条件“A位于B及C之间”是否成立,如果条件成立则返回1(yes),否则返回0(no)。 例:BETWEEN(CLOSE,MA5,MA40); 表示收盘价介于5日均线与40日均线之间。 CROSS(X,Y) 表示X上穿Y。 例: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 交易模型买卖指令信号过滤函数。(仅适用于交易模型的过滤) 设置模型对产生的交易指令不过滤,则出现的任何交易指令都会执行,如果没有设置“不过滤”,则产生的指令将按照如下规则过滤: 1.连续的同方向指令只有第一个有效,其他的将被过滤; 2.交易指令必须配对出现(例如:前面已经有了买开指令,则后面只允许出现卖平指令,其他的指令都被滤掉。这也就意味着,第一个指令只能是买开或者卖开指令,其他的都被过滤); 3.但是在进行模型效果测试及优化时,无论设置过滤与否,都按照前面的规则对指令进行了过滤。 IFELSE(C,A,B) (08版等以前版本里用IF函数表示)。 如果条件C成立则返回A值,否则返回B值. 例:IFELSE(CLOSE>REF(CLOSE,1),1,0); 表示若今日收盘价高于前一日收盘价,则返回1,否则返回0 ISDOWN判断该周期是否收阴。 ISEQUAL 判断该周期是否平盘。 ISUP 判断该周期是否收阳。 ISLASTBAR 判断当前周期是否为最后一根K线。 例:ISLASTBAR; 如果是最后一个K线返回1(Yes),否则返回0(No)。 V ALUEWHEN(COND,DATA) 当条件COND满足时,取当时的DATA的值,否则取得前面一个满足条件COND的值。 例:V ALUEWHEN(HIGH>REF(HIGH,5),HIGH); 表示当前最高价大于前五个周期最高价的最大值时返回当前最高价。 5、数学运算 ABS(X) 求X的绝对值 例:ABS(SAR(17,0.03,0.3));返回抛物转向SAR(17,0.03,0.3)的绝对值。 ACOS(X) 求X的反余弦值 ASIN(X) 求X的反正弦值 ATAN(X) 求X的反正切值 COS(X) 返回X的余弦值 EXP(X) 返回e的X次幂 CEILING(X) 向上舍入,返回沿X数值增大方向最接近的整数。 FLOOR(X) 向下舍入,返回沿X数值减小方向最接近的整数。 INTPART(X) 取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=090530);表示该周期对应的时间不是9:05:30AM。 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线的位置。 DA TE 取得当前周期的日数(70)。 DAY 取得当前周期的日数(1-31)。 HOUR 取得当前周期的小时数(0-23)。 MINUTE 取得当前周期的分钟数(0-59)。 MONTH 取得当前周期的月数(1-12)。 TIME 取得当前周期的时间数(0-2359), 秒级周期返回值范围为:0-235959。 WEEKDAY 取得当前周期的星期数(0-6)。 YEAR 取得当前周期的年数(1970-2034)。 7、绘图 DRAWLINE(C1,P1,C2,P2,COLOR) 当条件C1及C2均满足时,从P1画直线到P2,颜色为COLOR。 例: DRAWLINE(MA18CLOSE,CLOSE,COLORCY AN); 表示当收盘价大于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,DA TA2,COLOR) 填充区域,当条件COND满足时,填充DATA1及DATA2 包围的区域。 例:FILLRGN(MA5>MA10,MA5,MA10,COLORRED); 表示MA5>MA10时以红色填充MA5和MA10之间的区域。 POL YLINE (COND,DATA,COLOR) 画折线,当条件COND满足时,连接各个DATA点。 例:POL YLINE(CLOSE>=HHV(CLOSE,100),CLOSE,COLORRED); 表示在收盘价创100天新高点之间画折线。 PARTLINE (COND,DATA,COLOR) 画线段,条件COND满足时,以COLOR颜色的直线连接DA TA各点。 例:PARTLINE(HIGH>REF(HIGH,1),HIGH,COLORRED); 表示当期最高价大于前期最高价用红色绘制最高价线段。 STICKLINE (C,P1,P2,COLOR,EMPTY) 如果条件C满足时,从P1到P2画柱线,颜色为Color,如果Empty 取1,则为空心柱;如果Empty取0,则为实心柱。 例:STICKLINE(OPEN-CLOSE>0,OPEN,CLOSE,COLORCYAN,0); 表示当开盘价大于收盘价时,从开盘价到收盘价画青色的实心柱,即K线阴线的实体部分。 VERTLINE (COND,COLOR) 画垂直线,当条件COND满足时,画垂直线。 例:VERTLINE(HIGH>=HHV(HIGH,30),COLORRED); 表示在价格创30天新高时画垂直线。 08版本与09版本函数区别: 08版本函数09版本函数 SETTLE 日线周期只有盘后才能引用当日的结算价。其他周期计算结果等同于A VPRICE 引用结算价(如果用在周期小于'日'的K线上如5分钟K线,一小时k线,每根k线返回的值表示这根k线当日开盘时到这根k线的为止的结算价(均价) 如果用在周期大于等于'日'的K线上,返回当根K线结束时间所在日的结算价.) BACKSET(X,N) 『未来函数』函数参数不支持变量计算函数参数支持变量计算如:BACKSET(CLOSE>OPEN,V AR1);//V AR1是变量 DMA 函数参数不支持变量计算DMA(X,N)返回X的动态移动平均,其中N必须介于0及1之间。N 支持变量。 计算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)为第(N-1)天的DMA值。 HHV(X,N) 函数参数N不支持变量计算函数参数N支持变量计算 LLV(X,N) 函数参数N不支持变量计算函数参数N支持变量计算 COUNT(X,N) 函数参数N不支持变量计算函数参数N支持变量计算 09版本新增函数: GETPRICE(N) 根据文华码取出某一品种的最新价。 例: GETPRICE(1209);返回文华码为1209的合约品种的最新价。 RGB(R,G,B) 自定义颜色函数。 R,G,B的数值范围都在0~255之间,例:RGB(225,225,225)表示白色 PARAM[参数名称,最小值,最大值,缺省值] 在源码中定义参数。 例:PARAM[N,1,100,12] MAN:MA(CLOSE,N); 表示参数为N,最小值为1,最大值为100,缺省值为12. IF(COND) A,COLOR; ELSE B, COLOR; 条件循环函数。多层次循环时使用“{}”套用。 例:取得MA5、MA10、MA30三者中最大的数值 MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10); MA30:=MA(CLOSE,30); IF(MA5>MA10) MA5,COLORRED; ELSE { IF(MA10>MA30) MA10,COLORMAGENTA; ELSE MA30,COLORGREEN; } 注意:区别于IFELSE函数,为了使多层次套用看的清楚,以上示例中将“{}”单独空行,实际使用中可以不必这样使用。 #IMPORT [CODE,PERIOD,FORMULA] AS V AR 跨周期、跨合约取数据函数。 语句格式: #IMPORT [CODE,PERIOD,FORMULA] AS V AR CODE 文华码 (文华码见其他—>期货品种代码表) PERIOD 被引用的周期 FORMULA 被引用指标名称 例:引用[豆粕1005]合约日K线图周期的指标[KDJ.FML] 中K值、D值: #IMPORT [1205,DAY,KDJ] AS V ARKDJ K1:KDJ.K; D1:KDJ.D; 注意点: 1.只能引用一个当前存在的‘.FML文件’(指标文件)中的变量,不支持同时引用多个指标和多个周期。 2.只能引用如下周期MIN1 MIN3 MIN5 MIN10 MIN15 MIN30 HOUR1 HOUR3 HOUR8 DAY WEEK MONTH; 3.只能短周期引用长周期指标数据,分钟周期上可引用小时、日周期数据,不能日线周期上加载引用分钟数据的指标; 4.被引用的指标中不能存在引用。 5.如果不写文华码,默认引用当前合约。 模型注释符号在2009版本中修改为“//”。2008版本中模型注释语句使用在2009版本中时在{}前面增加//即可。 (三)编辑平台可以使用的常数 常数意义 COLORRED 红色 COLORGREEN 绿色 COLORBLUE 蓝色 COLORMAGENTA 紫色 COLORYELLOW 黄色 COLORLIGHTGREY 浅灰色 COLORLIGHTRED 浅红色 COLORLIGHTGREEN 浅绿色 COLORLIGHTBLUE 浅蓝色 COLORBLACK 黑色 COLORWHITE 白色 COLORCYAN 青色 COLORSTICK 画彩色柱线 VOLUMESTICK 画成交量线 BAMBOOLINE 画竹线 CIRCLEDOT 画圆 OPISTICK 画持仓量柱线 RGB(R,G,B) 自定义颜色函数。 R,G,B的数值范围都在0~255之间。 例:RGB(225,225,225)表示白色 PARAM[参数名称,最小值,最大值,缺省值] 在源码中定义参数。 例:PARAM[N,1,100,12] MAN:MA(CLOSE,N); 表示参数为N,最小值为1,最大值为100,缺省值为12. 注意:在公式内即使你定义了某种颜色,在显示的时候也未必是此种颜色,取决于背景颜色当前页面里是否保了该指标的颜色及您是否在显示的时候改变了该指标的颜色设置。 欢迎交流: QQ:419549257 Q群:138709040 (四)编辑平台的语法 1、关于公式名称: 公式的名称不可以和已经存在的公式重复。 2、关于参数: 每个自编公式最多可以定义四个参数,参数的定义如下,首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值。在定义参数时要注意的是参数名称不可以重复。 3、关于变量名称: 变量名称不可以互相重复,不可以和参数名重复,不可以和函数名称重复。 4、关于公式内容: 公式的每个语句应该以分号结束,包括最后一条语句。在数据公式的时候请您注意一定要使用半角输入。在编写公式的过程中,如果您不记得某个函数的确切写法,可以选择插入函数来插入函数。 5、如果您在编写公式之后,想给这个公式加上注释,说明之类的东西,可以使用公式说明来输入。 (五)编辑平台使用的交易指令 交易模型中的交易指令如下: 图示指令意义 BK 买开指令 BP 买平指令 SK 卖开指令 SP 卖平指令 BPK 买平同时等价等量买开指令 SPK 卖平同时等价等量卖开指令 套利模型中的交易指令如下: 图示指令意义 BKSK 甲合约买开;乙合约卖开信号 BPSP 甲合约买平;乙合约卖平信号 SKBK 甲合约卖开;乙合约买开信号 SPBP 甲合约卖平;乙合约买平信号 请注意,在效果测试使用如下机制: 连续的开仓指令只使用第一个指令进行开仓,开仓时使用当时的全部资金,连续的平仓指令,只有第一个有效,平掉当时的全部持仓,其他的平仓指令算做错误指令! (六)快速入门 1、如何把熟悉的技术指标转换成交易模型? 第一步:把KDJ指标公式COPY过来。 RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//{算出(收盘价-N周期内的最低价)/(N周期的最高价—N周期内的最低价)*100的值,用RSV来表示。} BACKGROUNDSTYLE(1);{确定背景的样式,(钝化)} K:SMA(RSV,M1,1),COLORWHITE;//{RSV的移动加权平均的值用K表示,并且画白色的线。} D:SMA(K,M2,1),COLORYELLOW;//{K的移动加权平均的值用D表示,并且画黄色的线。} J:3*K-2*D,COLORMAGENTA;//{3倍的K减去2倍的D的值用J表示,并且画紫色的线。} 第二步:原有公式主要是画线,所以稍作修改。如下: RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//{第一行不需要修改} //{第二行删除,在交易模型中不用钝化} K:=SMA(RSV,M1,1);//{在“:”后加上“=”变为只定义不用画线,所以把后面的颜色函数(COLORWHITE)也去掉} D:=SMA(K,M2,1);//{同上} J:=3*K-2*D;//{同上} 第三步:把自己的交易条件写上,就可完成交易模型。如下: RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,M1,1); D:=SMA(K,M2,1); J:=3*K-2*D; CROSS(K,D),BK;//{K向上穿越D,发出买开交易指令} CROSS(J,100),SP;//{J向上穿越100,发出卖平交易指令} CROSS(D,K),SK;//{K向下穿越D,发出卖开交易指令} CROSS(0,J),BP;//{J向下穿越0,发出买平交易指令} //后为文字说明,编写模型时不用写出 2、如何编制交叉(金叉/死叉)类型的交易模型? MA5:=MA(CLOSE,5);//{5个周期收盘价的简单移动平均} MA10:=MA(CLOSE,10);//{10个周期收盘价的简单移动平均} MA20:=MA(CLOSE,20);//{20个周期收盘价的简单移动平均} CROSS(MA10,MA20),BK;//{当MA10上穿MA20时,发出买入开仓交易指令} CROSS(MA10,MA5),SP;//{当MA10上穿MA5时,发出卖出平仓交易指令} CROSS(MA20,MA10),SK;//{当MA20上穿MA10时,发出卖出开仓交易指令} CROSS(MA5,MA10),BP;//{当MA5上穿MA10时,发出买入平仓交易指令} //后为文字说明,编写模型时不用写出} 3、如何编制多条件类型的交易模型? RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K:=SMA(RSV,3,1); D:=SMA(K,3,1); J:=3*K-2*D;//{以上为KDJ公式} MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10);//{以上为定义5个周期收盘价的简单移动平均和10个周期收盘价的简单移动平均} (CROSS(MA5,MA10)&&REF(J,1)<70)||(CROSS(K,D)&&J<30),BK;//{5周期均线上穿10周期均线并且前一个周期的J值(KDJ)少于70或者KD金叉时并且J值小于30时发出买入开仓交易指令} CROSS(D,K)&&REF(J,1)>70,SP;//{KD出现死叉并且前一个周期J值大于70时发出卖出平仓交易指令} (CROSS(MA10,MA5)&&REF(J,1)>30)||(CROSS(D,K)&&J>70),SK;//{5周期均线下叉10周期均线并且前一个周期的J值(KDJ)大于30或者KD死叉时并且J值大于70时发出卖出开仓交易指令} CROSS(K,D)&&REF(J,1)<30,BP;//{KD出现金叉并且前一个周期J值小于30时发出买入平仓交易指令} {{}内为文字说明,编写模型时不用写出} 4、如何编制REF(X,N)类型的交易模型? A:=OPEN-(((REF(HIGH,1)-REF(LOW,1))+(REF(HIGH,2)-REF(LOW,2))+(REF(HIGH,3)-REF (LOW,3))+(REF(HIGH,4)-REF(LOW,4)))/4)*1.8;//{A=当前周期的开盘价-[ (一个周期前的最高价减最低价的差+两个周期前的最高价减最低价的差+三个周期前的最高价减最低价的差+四个周期前的最高价减最低价的差)/4]*1.8 } REF(CLOSE,1)< REF(CLOSE,2)&&REF(CLOSE,2)< REF(CLOSE,3)&&REF(CLOSE,3)< REF(CLOSE,4)&&CLOSE >A,BPK;//{连续四个周期的收盘价小于前一周期的收盘价并且当前周期的收盘价大于A时,发出买平并且买开(反手)交易指令} REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2) >REF(CLOSE,3)&&REF(CLOSE,3)>REF( CLOSE, 4)&&CLOSE<=A,SPK;//{连续四个周期的收盘价大于前一周期的收盘价并且当前周期的收盘价小于等于A时,发出卖平并且卖开(反手)交易指令}{{}内为文字说明,编写模型时不用写出} 5、如何编制价差类型的交易模型? MA5:=MA(CLOSE,5);//{5个周期收盘价的简单移动平均} MA10:=MA(CLOSE,10);//{10个周期收盘价的简单移动平均} CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK;//{10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8时,发出卖出开仓交易指令} (MA5-CLOSE)>6,BP;//{5周期均线与收盘价的差值大于6时,发出买入平仓交易指令} CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;//{5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8时,发出买入开仓交易指令} (CLOSE-MA5)>6,SP;//{收盘价与5周期均线的差值大于6时,发出卖出平仓交易指令}{{}内为 文字说明,编写模型时不用写出} 6、如何编制简单价差类型的套利模型? CROSS(300,CLOSE),BKSK; //{CLOSE为两个品种的价差。当价差小于300时,买入开仓前一品种,卖出开仓后一品种} CROSS(CLOSE,500),SPBP;//{当价差大于500时,卖出平仓前一品种,买入平仓后一品种} CROSS(CLOSE,600),SKBK;//{当价差大于600时,卖出开仓前一品种,买入开仓后一品种} CROSS(400,CLOSE),BPSP;//{当价差小于400时,买入平仓前一品种,卖出平仓后一品种} 7、如何编制组合类型的套利模型? RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,M1,1); D:=SMA(K,M2,1); J:=3*K-2*D;//{以上为KDJ公式} CLOSE<300&&CROSS(K,D),BKSK;//{当价差小于300并且K上穿D时,买入开仓前一品种,卖出开仓后一品种} CROSS(CLOSE,500)||CROSS(D,K),SPBP;//{当价差上穿500或者D上穿K时,卖出平仓前一品种,买入平仓后一品种} CLOSE>600&&CROSS(D,K),SKBK;//{当价差大于600并且D上穿K时,卖出开仓前一品种,买入开仓后一品种} CROSS(400,CLOSE)||CROSS(K,D),BPSP;//{当价差下穿400或者K上穿D时,买入平仓前一品种,卖出平仓后一品种} 技术指标模型大全 1 ADTM模型 DTM:=IFELSE(OPEN<=REF(OPEN,1),0,MAX((HIGH-OPEN),(OPEN-REF(OPEN,1)))); DBM:=IFELSE(OPEN>=REF(OPEN,1),0,MAX((OPEN-LOW),(OPEN-REF(OPEN,1)))); STM:=SUM(DTM,N); SBM:=SUM(DBM,N); ADTM:=IFELSE(STM>SBM,(STM-SBM)/STM,IFELSE(STM=SBM,0,(STM-SBM)/SBM)); ADTMMA:=MA(ADTM,M); ADTMMAQ,SPK; 2 ARBR模型 AR := SUM(HIGH-OPEN,N)/SUM(OPEN-LOW,N)*100; BR := SUM(MAX(0,HIGH-REF(CLOSE,1)),N)/SUM(MAX(0,REF(CLOSE,1)-LOW),N)*100; (BRP && AR-REF(AR,M)BB&&AA>CC,AA+BB/2+DD/4,IFELSE(BB>CC&&BB>AA,BB+AA/2+DD/ 4,CC+DD/4)); X:=(CLOSE-LC+(CLOSE-OPEN)/2+LC-REF(OPEN,1)); SI:=16*X/R*MAX(AA,BB); ASI:=SUM(SI,0); ASI>REF(ASI,1),BPK;//当前周期ASI指标数值大于前一周期开多; ASIMA(C,10) && CROSS(TR,ATR) && ATR>REF(ATR,1) && ISDOWN,BK;//在上升通道中, ATR真实波幅向上时,且白线上穿黄线,此时K线收阴者买入开仓; CROSS(MA(C,10),C),SP;//当价格下穿10周期均线平多仓。 5 B3612模型 B36 := MA(CLOSE,3)-MA(CLOSE,6); B612 := MA(CLOSE,6)-MA(CLOSE,12); B36REF(B36,1) && B612>REF(B612,1) ,BPK;//本周期B36与B612分别小于前一周期B36与B612时平多开空。 6 BBI模型 BBI1:=(MA(CLOSE,N1)+MA(CLOSE,N2)+MA(CLOSE,N3)+MA(CLOSE,N4))/4; MA54:=MA(C,54);//以MA54来判断当前价格处于高价区还是低价区。 CMA54 && CROSS(BBI1,C),SPK; 7 BIAS模型 BIAS1 := (CLOSE-MA(CLOSE,L1))/MA(CLOSE,L1)*100; BIAS1>M1 && MA(C,54)REF(C,54),SK; BIAS1<-1*P && MA(C,54)P && MA(C,54)>REF(C,54),BP; BIAS1M2 && MA(C,54)>REF(C,54),BK; BIAS1>P && MA(C,54)REF(C,54),SP; 8 BOLL模型 MID:=MA(CLOSE,N); TMP2:=STD(CLOSE,M); TOP:=MID+P*TMP2; BOTTOM:=MID-P*TMP2; A:=TOP-C; B:=C-BOTTOM; CROSS(C,BOTTOM),BPK; CROSS(TOP,C),SPK; TYP:=(CLOSE+HIGH+LOW)/3; CCI:=(TYP-MA(TYP,N))/(0.015*A VEDEV(TYP,N)); CROSS(CCI,100),BK;//CCI从+100~-100的常态区,由下往上突破+100天线时,为买入开仓。 CROSS(100,CCI),SP;//CCI从+100天线之上,由上往下跌破天线时,为卖出平仓。CROSS(100,CCI),SK;//CCI从+100~-100的常态区,由上往下跌破-100地线时,为卖出开仓。 CROSS(CCI,100),BP;//CCI从-100下方,由下往上突破-100地线时,为买入平仓。 10 CDPV日内模型 PT := REF(HIGH,1)-REF(LOW,1); CDP := (REF(HIGH,1) + REF(LOW,1) + REF(CLOSE,1))/3; AH :=MA(CDP + PT,N); AL :=MA(CDP - PT,N); NH :=MA(2*CDP-LOW,N); NL :=MA(2*CDP-HIGH,N); NQ:=(AH+AL+NH+NL)/4;//计算出CDP中四条指标线的均值NQ NQ>LLV(NQ,M)*(1+M1*0.001) && TIME>=0900 && TIME<1455,BP;//当NQ上涨超过前M 周期最低值的千分之M1,买开; NQ=1455,SP;//当NQ下跌超过前M周期最高值的千分之M1,卖开; NQ=0900 && TIME<1455,SK;//当NQ下跌超过前M 周期最高值的千分之M1,卖开; NQ>LLV(NQ,M)*(1+M1*0.001) || TIME>=1455,BP;//当NQ上涨超过前M周期最低值的千分之M1,买开。 11 CDP日内模型 PT := REF(HIGH,1)-REF(LOW,1); CDP := (REF(HIGH,1) + REF(LOW,1) + REF(CLOSE,1))/3; AH :=MA(CDP + PT,N); AL :=MA(CDP - PT,N); NH :=MA(2*CDP-LOW,N); NL :=MA(2*CDP-HIGH,N); NQ:=(AH+AL+NH+NL)/4;//计算出CDP中四条指标线的均值NQ NQ>LLV(NQ,M)*(1+M1*0.001),BPK;//当NQ上涨超过前M周期最低值的千分之P,买平开; NQLLV(NQ,M)*(1+M1*0.001),BPK;//当NQ上涨超过前M周期最低值的千分之M1,买平开; NQN2,SPK;//CR下跌超过N2时,卖平开。 14说明文中“//”后面的文字是解说,实际编写与测试过程中,不用编写。 15 DBCD模型 BIAS:=(CLOSE-MA(CLOSE,N))/MA(CLOSE,N); DIF:=(BIAS-REF(BIAS,M)); DBCD:=SMA(DIF,T,1); MM:=100000*MA(DBCD,5); MM>REF(MM,1),BPK; MM=(REF(HIGH,1)+REF(LOW,1)),0,MAX(ABS(HIGH-REF(HIG H,1)),ABS(LOW-REF(LOW,1)))); DIZ:=SUM(DMZ,N)/(SUM(DMZ,N)+SUM(DMF,N)); DIF:=SUM(DMF,N)/(SUM(DMF,N)+SUM(DMZ,N)); DDI:=DIZ-DIF; DDI>0,BPK;//DDI大于零平空开多; DDI<0,SPK;//DDI小于零平多开空。 17 DMA模型 DDD := (MA(CLOSE,SHORT)-MA(CLOSE,LONG)); AMA := MA(DDD,M); CROSS(DDD,AMA),BPK;//DMA向上交叉AMA,买进; CROSS(AMA,DDD),SPK;//DMA向下交叉AMA,卖出。 18 DMI-QL模型 TR := SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1) ; HD := HIGH-REF(HIGH,1); LD := REF(LOW,1)-LOW; DMP:= SMA(IFELSE(HD>0&&HD>LD,HD,0),N,1); DMM:= SMA(IFELSE(LD>0&&LD>HD,LD,0),N,1); PDI:= DMP*100/TR; MDI:= DMM*100/TR; ADX:= SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1); ADXR:=(ADX+REF(ADX,M))/2; CROSS(PDI,MDI),BK;//PDI上穿MDI开多仓。 CROSS(MDI,PDI),SK;//PDI下穿MDI开空仓。 ADX0&&HD>LD,HD,0),N,1); DMM:= SMA(IFELSE(LD>0&&LD>HD,LD,0),N,1); PDI:= DMP*100/TR; MDI:= DMM*100/TR; ADX:= SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1); ADXR:=(ADX+REF(ADX,M))/2; CROSS(PDI,MDI) && TIME>0900 && TIME<1450,BK;//PDI上穿MDI开多仓。 CROSS(MDI,PDI) && TIME>0900 && TIME<1450,SK;//PDI下穿MDI开空仓。 ADX=1450,BP;//当ADX回落超过前N0周期内的M0%时平多仓。或收盘前平仓。 ADX=1450,SP;//当ADX回落超过前N0周期内的M0%时平空仓。或收盘前平仓 20 DPO模型 DPO:=CLOSE-REF(MA(CLOSE,20),11); CROSS(DPO,O),BK;//当DPO指标数值上穿0线,开多仓。 DPOLLV(DPO,N)*(1-0.01*M),BP;//当DPO指标上涨超过N日最低点的M%时平空仓。 21 EMA2模型 EMA210:=EMA2(CLOSE,10);//定义10周期收盘价的加权平均值。 EMA220:=EMA2(CLOSE,20);//定义20周期收盘价的加权平均值。 CROSS(EMA210,EMA220),BK;//10周期均线上穿20周期均线,发出买入开仓指令。CROSS(EMA220,EMA210),SK;//10周期均线下穿20周期均线,发出卖出开仓指令。 EMA210REF(EMA210,1)&&EMA220>REF(EMA220,1),BP;//10周期均线和20周期均线都下降时,发出平空仓指令。 22 EMA模型 EMA10:=EMA(CLOSE,10);//定义10周期收盘价的指数平滑移动平均值。 EMA20:=EMA(CLOSE,20);//定义20周期收盘价的指数平滑移动平均值。 CROSS(EMA10,EMA20),BK;//10周期均线上穿20周期均线,发出买入开仓指令。CROSS(EMA20,EMA10),SK;//10周期均线下穿20周期均线,发出卖出开仓指令。 EMA10REF(EMA10,1)&&EMA20>REF(EMA20,1),BP;//10周期均线和20周期均线都上升时,发出平空仓指令。 23 ENV模型 UPPER := MA(CLOSE,N1)*(1+N2/100); LOWER := MA(CLOSE,N1)*(1-N2/100); //以上为ENV公式 CROSS(CLOSE,UPPER),BPK;//收盘价上穿UPPER,买平并买开。 CROSS(LOWER,CLOSE),SPK;//收盘价下穿LOWER,卖平并卖开。 24 EXPMA模型 MA1:=EMA(CLOSE,P1); MA2:=EMA(CLOSE,P2); MA3:=EMA(CLOSE,P3); MA4:=EMA(CLOSE,P4); //以上为EXPMA指标 CROSS(MA2,MA3)&&CLOSE>MA4,BK;//当MA2上穿MA3,并且收盘价大于MA4,发出买入开仓交易指令。 CROSS(MA2,MA1),SP;//当MA2上穿MA1,发出卖出平仓交易指令。 CROSS(MA3,MA2)&&CLOSEREF(MAH,1)&&MAL>REF(MAL,1)&&MAC>REF(MAC,1),BPK;//MAH,MAL,MAC 同时上涨,买平并买开。 MAH70&&CROSS(D,K),SPK;//J值大于70并且K、D死叉,卖平并卖开。 27 KD模型 RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,M1,1); D:=SMA(K,M2,1); //以上为KD指标公式 CROSS(K,D),BPK;//K,D金叉,买平并买开。 CROSS(D,K),SPK;//K,D死叉,卖平并卖开。 28 LW&R模型 RSV:= (CLOSE-HHV(HIGH,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;//定义RSV LWR1:=SMA(RSV,3,1);//定义LWR1 LWR2:=SMA(LWR1,3,1);//定义LWR2 CROSS(LWR1,LWR2),BPK;//LWR1上穿LWR2,买平并买开 CROSS(LWR2,LWR1),SPK;//LWR1下穿LWR2,卖平并卖开 29 LW&R模型1 RSV:= (CLOSE-HHV(HIGH,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; LWR1:=SMA(RSV,M1,1); LWR2:=SMA(LWR1,M2,1); //以上为LW&R指标公式 LWR1<30&&CROSS(LWR1,LWR2),BK;//LWR1小于30,并且LWR1上穿LWR2,买开。LWR1>70&&CROSS(LWR2,LWR1),SK;//LWR1大于70,并且LWR1下穿LWR2,卖开。LWR1>80&&LWR2>70,BP;//LWR1大于80,并且LWR2大于70,平空仓。 LWR1<20&&LWR2<30,SP;//LWR1小于20,并且LWR2小于30,平多仓。 30 MACD模型 DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);//定义DIFF DEA := EMA(DIFF,M);//定义DEA //以上为MACD指标公式 (DIFF<0)&&(DEA<0)&&(CROSS(DIFF,DEA)),BPK;//DIFF小于0并且DEA小于0并且DIFF 上穿DEA,买平并买开 (DIFF>0)&&(DEA>0)&&(CROSS(DEA,DIFF)),SPK;//DIFF大于0并且DEA大于0并且DIFF 下穿DEA,卖平并卖开 31 MASS模型 MASS:=SUM(EMA((HIGH-LOW),N1)/EMA(EMA((HIGH-LOW),N1),N1),N2);//定义MASS MA9:=MA(CLOSE,9);//定义9周期收盘价的均线 CROSS(26.5,MASS)&&MA9>REF(MA9,1),SPK;//MASS下穿26.5,并且MA9在上升趋势中,卖平并卖开 CROSS(26.5,MASS)&&MA9REF(MA1,1)&&REF(MA1,1)>REF(MA1,2)&&REF(MA1,3)>REF(MA1,2)&&REF(MA 1,4)>REF(MA1,3),BPK;//上拐时买平并买开 MA1MA4,BK;//当MA2上穿MA3,并且收盘价大于MA4,发出买入开仓交易指令 CROSS(MA2,MA1),SP;//当MA2上穿MA1,发出卖出平仓交易指令 CROSS(MA3,MA2)&&CLOSEREF(TYP,1),TYP*VOL,0),N)/SUM(IFELSE(TYPREF(CLOSE,1)&&MFI>20&&MFI<80,BPK;//当MFI处于下降趋势,并且收盘价处于上升趋势,并且MFI大于20并且小于80,买平并买开 MFI>REF(MFI,1)&&CLOSE20&&MFI<80,SPK;//当MFI处于上升趋势,并且收盘价处于下降趋势,并且MFI大于20并且小于80,卖平并卖开 35 MICD模型 MI:=CLOSE-REF(CLOSE,1); AMI:=SMA(MI,N,1); DIF:=MA(REF(AMI,1),N1)-MA(REF(AMI,1),N2); MICD:=SMA(DIF,10,1); //上述是MICD指标公式 (DIF<0)&&(MICD<0)&&(CROSS(DIF,MICD)),BPK;//DIF小于0并且MICD小于0并且DIFF 上穿MICD,买平并买开 (DIF>0)&&(MICD>0)&&(CROSS(MICD,DIF)),SPK;//DIF大于0并且MICD大于0并且DIFF 下穿MICD,卖平并卖 36 MIKE模型 TYP:=(HIGH+LOW+CLOSE)/3; LL:=LLV(LOW,N); HH:=HHV(HIGH,N); WR:=TYP+(TYP-LL); MR:=TYP+(HH-LL); SR:=2*HH-LL; WS:=TYP-(HH-TYP); MS:=TYP-(HH-LL); SS:=2*LL-HH; //上述是MIKE指标公式 WRREF(WR,2) && MRREF(MR,2) && SRREF(SR,2),BPK;//WR,MR,SR同时下拐,买平并买开WS>REF(WS,1)&&REF(WS,1)REF(MS,1)&&REF(MS,1)REF(SS,1)&&REF(SS,1)MA60&&MV1>REF(MV1,1)&&MV2>REF(MV2,1),BPK;//收盘价在60均线上,并且MV1,MV2处于上升状态中,买平并买开 CLOSEREF(MV1,1)&&MV2>REF(MV2,1),SPK;//收盘价在60均线下,并且MV1,MV2处于上升状态中,卖平并卖 40 PRICEOSC模型 PRICEOSC:=(MA(CLOSE,SHORT)-MA(CLOSE,LONG))/MA(CLOSE,SHORT)*100; CROSS(PRICEOSC,0),BPK;//向上突破0为买点 CROSS(0,PRICEOSC),SPK;//向下突破0为卖点 41 PUBU模型 PB1:=PUBU(CLOSE,0); PB2:=PUBU(CLOSE,1); PB3:=PUBU(CLOSE,2); PB4:=PUBU(CLOSE,3); PB5:=PUBU(CLOSE,4); PB6:=PUBU(CLOSE,5); CROSS(PB1,PB6),BPK;//短线瀑布线向上穿越长线瀑布,买入。 CROSS(PB6,PB1),SPK;//短线瀑布线向下穿越长线瀑布,卖出。 42 RC模型 RC:=CLOSE/REF(CLOSE,N); ARC:=SMA(REF(RC,1),N,1); MA10:=MA(CLOSE,10); MA20:=MA(CLOSE,20); CROSS(MA10,MA20)&&ARC>1,BPK;//MA10上穿MA20且RC指标在1上,做多CROSS(MA20,MA10)&&ARC<=1,SPK;//MA0下穿MA20且RC指标在1下,做空 43 REF模型示例 A:=OPEN-(((REF(HIGH,1)-REF(OPEN,1))+(REF(HIGH,2)-REF(OPEN,2))+(REF(HIGH,3)-RE F(OPEN,3))+(REF(HIGH,4)-REF(OPEN,4)))/4)*1.8; //A=当前周期的开盘价-[ (一个周期前的最高价减最低价的差+两个周期前的最高价减最低价的差+三个周期前的最高价减最低价的差+四个周期前的最高价减最低价的差)/4]*1.8 REF(CLOSE,1)A,BPK; //连续四个周期的收盘价小于前一周期的收盘价并且当前周期的收盘价大于A时,发出买平并且买开(反手)交易指令 REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2)>REF(CLOSE,3)&&REF(CLOSE,3)>REF( CLOSE,4)&&CLOSE<=A,SPK; //连续四个周期的收盘价大于前一周期的收盘价并且当前周期的收盘价小于等于A时,发出卖平并且卖开(反手)交易指令 44 ROC模型 ROC:=(CLOSE-REF(CLOSE,N))/REF(CLOSE,N)*100; ROCMA:=MA(ROC,M); C>REF(HHV(C,N1),1)&&ROCROCMA,BPK;//价格创新低,ROC未配合下降,显示下跌动力减弱 45 RSI模型 LC:=REF(CLOSE,1);//定义LC RSI1:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;//定义RSI1 RSI2:=SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;//定义RSI2 REF(RSI1,1)<40&&CROSS(RSI1,RSI2),BPK;//上周期的RSI1<40并且RSI1上穿RSI2,买平并买开 REF(RSI1,1)>60&&CROSS(RSI2,RSI1),SPK;//上周期的RSI1>60并且RSI1下穿RSI2,卖平并卖开 46 SAR模型 SARLINE:=ABS(SAR(N,STEP,MV ALUE));//定义SARLINE CROSS(CLOSE,SARLINE),BPK;//最新价上穿SARLINE,买平并买开 CROSS(SARLINE,CLOSE),SPK;//最新价下穿SARLINE,卖平并卖开 47 WR模型 WR:=-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14)); MA60:=MA(CLOSE,60); C>MA60&&WR<-80,BK;//在60天均线上wr<-80 开多仓 C>MA60&&WR>-20,SP;//在60天均线上wr>-20平多仓 C-20,SK;//在60天均线下wr>-20开空仓 CREF(HHV(B36,N),1),1)&&B36REF(B36,1),BPK;//反之,买进 49 交叉型模型示例 MA5:=MA(CLOSE,5); //5个周期收盘价的简单移动平均 MA10:=MA(CLOSE,10);//10个周期收盘价的简单移动平均 MA20:=MA(CLOSE,20);//20个周期收盘价的简单移动平均 CROSS(MA10,MA20),BK;//当MA10上穿MA20时,发出买入开仓交易指令 CROSS(MA10,MA5),SP;//当MA10上穿MA5时,发出卖出平仓交易指令 CROSS(MA20,MA10),SK;//当MA20上穿MA10时,发出卖出开仓交易指令 CROSS(MA5,MA10),BP;//当MA5上穿MA10时,发出买入平仓交易指令 50 价差型模型示例 MA5:=MA(CLOSE,5);//5个周期收盘价的简单移动平均 MA10:=MA(CLOSE,10);//10个周期收盘价的简单移动平均 CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK; //10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8时,发出卖出开仓交易指令 (MA5-CLOSE)>6,BP; //5周期均线与收盘价的差值大于6时,发出买入平仓交易指令 CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK; //5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8时,发出买入开仓交易指令 (CLOSE-MA5)>6,SP; //收盘价与5周期均线的差值大于6时,发出卖出平仓交易指令 51 多条件模型示例 RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K:=SMA(RSV,3,1); D:=SMA(K,3,1); J:=3*K-2*D; //以上为KDJ公式 MA5:=MA(CLOSE,5); MA10:=MA(CLOSE,10); //以上为定义5个周期收盘价的简单移动平均和10个周期收盘价的简单移动平均 (CROSS(MA5,MA10)&&REF(J,1)<70)||(CROSS(K,D)&&J<30),BK; //5周期均线上穿10周期均线并且前一个周期的J值(KDJ)少于70或者KD金叉时并且J 值小于30时发出买入开仓交易指令 CROSS(D,K)&&REF(J,1)>70,SP; //KD出现死叉并且前一个周期J值大于70时发出卖出平仓交易指令 (CROSS(MA10,MA5)&&REF(J,1)>30)||(CROSS(D,K)&&J>70),SK; //5周期均线下叉10周期均线并且前一个周期的J值(KDJ)大于30或者KD死叉时并且J 值大于70时发出卖出开仓交易指令 CROSS(K,D)&&REF(J,1)<30,BP; // KD出现金叉并且前一个周期J值小于30时发出买入平仓交易指令 52 慢速KD模型 RSV:= (CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; FASTK:=SMA(RSV,M1,1); K:=SMA(FASTK,M2,1); D:=SMA(K,M3,1); CROSS(K,D),BPK; CROSS(D,K),SPK; 53 指标转模型示例 //第一步:把KDJ指标公式COPY过来 //第二步:在":"后加上"="变为只定义不用画线,所以把后面的颜色函数(COLORWHITE)也去掉 //第三步:把自己总结的交易条件写上,就可完成交易模型。如下: //以下是把KDJ指标公式COPY过来,进行修改后的语句 RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,M1,1); D:=SMA(K,M2,1); J:=3*K-2*D; //以下是加入的交易指令 CROSS(K,D),BK;//K向上穿越D,发出买开交易指令 CROSS(J,100),SP;//J向上穿越100,发出卖平交易指令 CROSS(D,K),SK;//K向下穿越D,发出卖开交易指令 CROSS(0,J),BP;//J向下穿越0,发出买平交易指令 54 时间函数示例 MA5:=MA(CLOSE,5);//定义5周期的简单移动平均线 MA10:=MA(CLOSE,10);//定义10周期的简单移动平均线 TIME>=0905&&TIME<1455&&CROSS(MA5,MA10),BK;//在9点05分之后14点55分之前的时间段内出现5周期线金*10周期线后买开 TIME>=1455,BP;//当时间到14点55分时自动发出买平指令 TIME>=0905&&TIME<1455&&CROSS(MA10,MA5),SK;//在9点05分之后14点55分之前的时间段内出现5周期线死*10周期线后卖开 TIME>=1455,SP;//当时间到14点55分时自动发出卖平指令
/
本文档为【文华程序交易编程指南家函数大全】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索