詹姆斯盖帽库里多少次:程序化交易思维入门(四)

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 03:44:17

模型编写技巧

做指标的目的是为了交易,看指标然后作出反应之后决定要不要下单再去敲单,显得很繁琐,而交易模型不仅能够在图上标出交易指令(箭头,按自己的交易思想发出的),还能够自动弹出委托单,只需要回车确认一下就能下单。交易模型的编写就是在指标编写的基础之上加入我们交易策略和思想得到的一种全自动或半自动交易方式。下面就举些简单的交易模型,以求抛砖引玉。

 

1、交易模型快速入门示范

这个模型用来示范如何把KDJ指标变成交易模型;括号内为文字说明,编写模型时不用写出。

{第一步:把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,发出买平交易指令}

 

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、MTM模型雏形

MTM:=CLOSE-REF(CLOSE,N);//定义MTM

CROSS(MTM,0),BPK;//MTM上穿0轴,买平并买开

CROSS(0,MTM),SPK;//MTM下穿0轴,卖平并卖开

 

4、RSI模型雏形

LC:=REF(CLOSE,1);//定义LC

RSI1:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;//定义RSI1

RSI2:=SMA(MAX(CLOSE-LC,0),M,1)/SMA(ABS(CLOSE-LC),M,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,卖平并卖开

 

5、WM模型雏形

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,卖平并卖开

 

6.多条件模型示范

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时发出买入平仓交易指令}

{{}内为文字说明,编写模型时不用写出}

 

7.价差型模型示范

利用运算符号和逻辑符号判断交易条件。

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时,发出卖出平仓交易指令}

{ }内为文字说明,编写模型时不用写出。

 

8.REF模型示范

注意REF(X,N)的使用,表示引用N周期前的X值。

A:=OPEN-(((REF(HIGH,1)-REF(OPEN,1))+(REF(HIGH,2)-REF(OPEN,2))+(REF(HIGH,3)-REF(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时,发出卖平并且卖开(反手)交易指令}

白糖909日K线图