CLOSE,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指标数值大于前一周期开多;
ASI[MA(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);
B36][REF(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周期均线,发出卖出开仓指令。
EMA210][REF(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周期均线,发出卖出开仓指令。
EMA10][REF(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 同时上涨,买平并买开。
MAH][70&&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)&&MA9][REF(MA1,1)&&REF(MA1,1)>REF(MA1,2)&&REF(MA1,3)>REF(MA1,2)&&REF(MA 1,4)>REF(MA1,3),BPK;//上拐时买平并买开
MA1][MA4,BK;//当MA2上穿MA3,并且收盘价大于MA4,发出买入开仓交易指令
CROSS(MA2,MA1),SP;//当MA2上穿MA1,发出卖出平仓交易指令
CROSS(MA3,MA2)&&CLOSEREF(TYP,1),TYP*VOL,0),N)/SUM(IFELSE(TYP][REF(CLOSE,1)&&MFI>20&&MFI<80,BPK;//当MFI处于下降趋势,并且收盘价处于上升趋势,并且MFI大于20并且小于80,买平并买开
MFI>REF(MFI,1)&&CLOSE][20&&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指标公式
WR][REF(WR,2) && MR][REF(MR,2) && SR][REF(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)&&B36][REF(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分时自动发出卖平指令
]