[金字塔教程六]交易系统编写范例和常见问题
(2014-01-15 20:53:01)
标签:
金字塔教程程序化交易股票 |
分类: 金字塔决策交易系统 |
6.1趋势类交易模型编写范例
1)均线类
①均线排列模型
关键函数:MA
使用周期:任意
模型说明:MA5,MA10,MA20多头排列时做多,空头排列时做空。编者以一个周期内这三条均线的大小关系为判断标准举例,大家也可以使用多个周期的比较来判断多/空头排列关系。
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA20:=MA(CLOSE,20);
{开多} ENTERLONG: MA5>MA10 AND MA10>MA20,TFILTER;
{平多} EXITLONG: MA5
{开空} ENTERSHORT: MA5
{平空} EXITSHORT: MA5>MA10 AND MA10>MA20,TFILTER;
图表交易模型就完成了,其仓位控制在第5页图中设置
图表交易模型中不能使用交易函数和程式化函数
对于新交易系统模型,可用下面4句代替
SELLSHORT(MA5>MA10 AND MA10>MA20 and HOLDING<0,HOLDING,market); //平空操作
BUY(MA5>MA10 AND MA10>MA20
and
SELL(MA50,HOLDING,market); //平多操作
BUYSHORT(MA5
容易犯的编写错误:
A、交易模型中不允许使用只写:(即定义并画线)的写法。
如:MA5:=MA(CLOSE,5);
错误写成MA5:MA(CLOSE,5);
B、对于三个数的比较,大家往往习惯写成MA5>MA10>MA20这样,而在金字塔的模型编写中,目前只能两个变量之间进行比较,也就是说此类三个以上变量连续比较需要像模型中那样拆分来写:MA5>MA10 AND MA10>MA20
C、缺少计算函数。
如:求均线时,写为MA5:(CLOSE,5),而缺少了MA,此类错误语法检测无法识别,往往造成软件应用错误。
②均线金死叉模型
关键函数:MA、EMA、EMA2、CROSS
使用周期:所有 K 线周期。
模型说明:短期均线上穿长期均线(金叉)做多,短期均线下穿长期均线(死叉)
做空。
参数设置:
参数 N1 ,最小值 0,最大值 100,缺省值 5;
参数 N2 ,最小值 0,最大值 100,缺省值 30;
A、简单移动平均线:
P1:=MA(CLOSE,N1);
P2:=MA(CLOSE,N2);
BPK :=CROSS(P1,P2);
SPK :=CROSS(P2,P1);
B、指数加权平均线:
P1:=EMA(CLOSE,N1);
P2:=EMA(CLOSE,N2);
BPK :=CROSS(P1,P2);
SPK :=CROSS(P2,P1);
C、线性加权平均线:
P1:=EMA2(CLOSE,N1);
P2:=EMA2(CLOSE,N2);
BPK :=CROSS(P1,P2);
SPK :=CROSS(P2,P1);
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了,其仓位控制在第5页图中设置
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
③均线结合 MACD 模型
关键函数:EMA
使用周期:日线
模型说明:
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:= EMA(DIFF,9);
EMA15:=EMA(CLOSE,15);
BPK :=DIFF>DEA AND CLOSE>EMA15;
SPK :=DEA>DIFF AND EMA15>CLOSE;
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了,其仓位控制在第5页图中设置
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
2) 通道类
①唐奇安通道模型
关键函数:HHV、LLV、REF、CROSS
使用周期:日线
模型说明:
参数设置:N,最小值 5,最大值 100,缺省值 20;
input:N(20,5,100,1),NS(10,0,60,1);
持仓:HOLDING,LINETHICK0;
总次数: TOTALTRADE,LINETHICK0;
盈利:NUMWINTRADE,LINETHICK0;
胜率:ROUNDS(100*PERCENTWIN,1),LINETHICK0;
连亏:MAXSEQLOSS,LINETHICK0;
连盈:MAXSEQWIN,LINETHICK0;
BK:=CROSS(H, hhv(ref(h,1),N));
SK:=CROSS(llv(ref(l,1), N),L);
Price:=AVGENTERPRICE;//持仓价位
图表交易模型中不能使用交易函数和程式化函数,故在第64页图中有图表唐奇安通道模型
SELLSHORT(BK and 持仓<0,持仓,market);
SELLSHORT(持仓<0,持仓,Stopr,Price+NS);
BUY(BK and NOT(TYPE(1)=1),30%,market);
SELL(SK and 持仓>0,持仓,market);
SELL(持仓>0,持仓,Stopr,Price-NS);
BUYSHORT(SK and NOT(TYPE(1)=3),30%,market);
其中,NS为止损点数
容易犯的编写错误:
最高价高于前 20 周期最高价。应写为 HIGH>REF(HHV(HIGH,20),1),常见错误是
直接写为 HIGH>HHV(HIGH,20);
②布林通道结合阴阳 K 线模型
关键函数:STD、CROSS、ISUP、ISDOWN
使用周期:日线
模型说明:收盘价向上突破布林通道下轨并前当根K线收阳做多,收盘价向下突破布林通道上轨并前当根 k 线收阴做空。
参数设置:N,最小值1,最大值100,
MID:=MA(CLOSE,N);
TMP2:=STD(CLOSE,M);
TOP:=MID+2*TMP2;
BOTTOM:=MID-2*TMP2;
BPK :=CROSS(CLOSE,BOTTOM) AND ISUP;
SPK :=CROSS(TOP,CLOSE) AND ISDOWN;
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
3 )其他类
①宝塔线
关键函数:REF、HHV、LLV
使用周期:日线
模型说明: 宝塔线变红做多,宝塔线变绿做空。因为金字塔并未公布宝塔线的后台公式,所以此指标的显示结果与金字塔系统中的宝塔显示结果有一定的区别。
C1:=REF(CLOSE,1);
C2:=REF(CLOSE,2);
C3:=REF(CLOSE,3);
C4:=REF(CLOSE,4);
CMAX:=HHV(CLOSE,2);
CMIN:=LLV(CLOSE,2);
BPK :=(CLOSE=CMAX AND (C1>=C2 OR C1>=C3) OR C1=CMAX AND (C2=CMIN OR C3=CMIN) AND CLOSE>=C2 OR C2=CMAX AND C3=CMIN AND CLOSE>=C1 OR C3=CMAX AND CLOSE>=C1 AND CLOSE>=C2);
SPK :=(CLOSE=CMIN AND (C1
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
②分形
关键函数:MA、REF、REFX(未来函数)、BARSLAST、CROSS、VALUEWHEN
使用周期:日线
模型说明:向上突破分形做多,向下突破分形做空
MA13:=MA(CLOSE,13);
HO:=H>REF(H,1) AND H>REF(H,2) AND H>=REFX(H,1) AND IF(H=REFX(H,2),H>REFX(H,3),H>REFX(H,2));
FXH:=CROSS(HO,0.9);
HH:=REF(H,BARSLAST(FXH));
LO:=L<=REFX(L,1) AND IF(L=REFX(L,2),L
FXL:=CROSS(LO,0.9);
LL:=REF(L,BARSLAST(FXL));
A:=VALUEWHEN(CROSS(CLOSE,HH),REF(LL,1));
A1:=VALUEWHEN(CROSS(CLOSE,HH),CLOSE);
B:=VALUEWHEN(CROSS(LL,CLOSE),REF(HH,1));
B1:=VALUEWHEN(CROSS(LL,CLOSE),CLOSE);
BK :=(CROSS(CLOSE,HH) AND CLOSE>MA13) OR CROSS(CLOSE,B);
SP :=(CLOSE>A1 AND CROSS(MA13,CLOSE)) OR CROSS(A,CLOSE);
SK :=(CROSS(LL,CLOSE) AND CLOSE
BP :=(CLOSE
{开多} ENTERLONG: BK,TFILTER;
{平多} EXITLONG: SP,TFILTER;
{开空} ENTERSHORT: SK,TFILTER;
{平空} EXITSHORT: BP,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BP and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BK and
SELL(SP and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SK and HOLDING=0,30%,market); //交易系统之开空操作
由于用到未来函数,仅作示范参考
③SAR 模型
关键函数:ABS,SAR
使用周期:任意
模型说明:SAR 指标出现红点买平开,蓝点卖平开
N:最小值
STEP:
M1:最小值
SARLINE:=ABS(SAR(N,STEP,M1));
BPK :=CLOSE>SARLINE;
SPK :=CLOSE
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
容易犯的编写错误:
直接写CLOSE>SARLINE是不对的,CLOSE恒大于0,而SARLINE有正有负,应将SARLINE
取绝对值。如下:
SARLINE:=ABS(SAR(4,0.02,0.2));
再用 CLOSE 进行比较
6.2振荡类交易模型编写范例
1)主动买与主动卖模型
关键函数:BUYVOL(), SELLVOL(),CROSS,VALUEWHEN,TIME
模型说明:现价大于当日开盘价并且主动买大于主动卖时买平开,现价小于开盘价并且主动卖大于主动买时卖平仓。
使用周期:分钟线
ZB:=SUM( BUYVOL(),5);
ZS:= SUM( SELLVOL(),5);
BPK := CLOSE > OPEN AND
CROSS(ZB,ZS);
SPK := CLOSE < OPEN AND CROSS(ZS,ZB);
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
2)ROC(变动速率)与价格趋势变动背离:
关键函数:REF,CROSS,MA,HHV
使用周期:所有 K线周期。
模型说明:价格创新高,ROC未配合上升,显示上涨动力减弱;价格创新低,ROC 未配合下降,显示下跌动力减弱
参数设置:参数 N
参数 M,最小值 5,最大值 100,缺省值 20;
ROC:=(CLOSE-REF(CLOSE,N))/REF(CLOSE,N)*100;
ROCMA:=MA(ROC,M);
SPK :=C>REF(HHV(C,N1),1) AND ROC
BPK :=CROCMA;
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
3)三减六日乖离模型:
关键函数:REF,MA,HHV,LLV
使用周期:所有 K 线周期。
模型说明:乖离值为正数时,未能突破前期高值,卖出;反之,买进。
参数设置:参数 N
B36 := MA(CLOSE,3)-MA(CLOSE,6);
B612 : =MA(CLOSE,6)-MA(CLOSE,12);
SPK :=REF(B36>REF(HHV(B36,N),1),1) AND B36
BPK :REF(B36REF(B36,1);
{开多} ENTERLONG: BPK,TFILTER;
{平多} EXITLONG: SPK,TFILTER;
{开空} ENTERSHORT: SPK,TFILTER;
{平空} EXITSHORT: BPK,TFILTER;
图表交易模型就完成了
对于新交易系统模型,可用下面4句代替
SELLSHORT(BPK and HOLDING<0,HOLDING,market); //交易系统之平空操作
BUY(BPK and
SELL(SPK and HOLDING>0,HOLDING,market); //交易系统之平多操作
BUYSHORT(SPK and HOLDING=0,30%,market); //交易系统之开空操作
6.3日内交易模型编写范例
1)开盘价突破模型
关键函数:REF,VALUEWHEN,TIME,CROSS,DATE
使用周期:五分钟
模型说明:五分钟周期开盘第一根K线的收盘价与当日开盘价比较及最新价和当日开盘价的比较作为买卖依据进行交易,尾盘平仓不留隔夜单。
A:=VALUEWHEN(TIME=90500,CLOSE);
B:=VALUEWHEN(DATE<>REF(DATE,1),OPEN);
BK :=A