文华MACD柱VA鱼-短鱼【N1=20,N2=0.5,N3=0.5,N4=3】
测试代码:
//一、定义仓位
FUND:=10000000;
LOTS:=INTPART(FUND*0.4/(MARGIN*UNIT*CLOSE+FEE));
//KTIME:= (TIME>0900 AND TIME<1455) OR (TIME>=2100 AND TIME<=2230);
//PTIMEW:=TIME>=2255 AND TIME<=2300;
//PTIMEX:=TIME>=1455 AND TIME<=1500;
//开仓时段
KTIME := BETWEEN(TIME, 0905, 1450) OR BETWEEN(TIME, 2105, 2250);
//平仓时间
PTIME1 := TIME=1455 OR TIME=2255;
//二、定义MACD指标
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA := EMA(DIFF,9);
MACD := 2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线
//定义柱VA鱼(柱子长短变化)
MACDV:=MACD>REF(MACD, 1) AND REF(MACD, 2)>REF(MACD, 1);
MACDA:=MACD<REF(MACD, 1) AND REF(MACD, 2)<REF(MACD, 1);
DYT :=MACDV;//此处是定义多鱼头,即是做多的起点
KYT :=MACDA;//此处是定义空鱼头,即是做空的起点
//四、定义k线F32上的带鱼短鱼
//1、定义首次开平仓
FBPK := DYT AND COUNT(DYT, BARSLAST(KYT))=1;
FSPK := KYT AND COUNT(KYT, BARSLAST(DYT))=1;
//DRAWTEXT(MACDV ,H+0.1 ,'MACDV'), VALIGN2, FONTSIZE18, COLORYELLOW;
//DRAWTEXT(MACDA ,L-0.1 ,'MACDA'), VALIGN2, FONTSIZE18, COLORYELLOW;
//2、记录首次满足条件的收盘价
BPKC := IF(FBPK , C, REF(C, BARSLAST(FBPK)));
SPKC := IF(FSPK , C, REF(C, BARSLAST(FSPK)));
LEN := CONDBARS(FBPK, FSPK);//最近一次满足首次开平仓之间的周期数
//五、描述均线之鱼【带鱼都是盈利的,短鱼都是亏损的】
//1、带鱼,
DDAI := C>REF(C,LEN) AND FSPK;
KDAI := C<REF(C,LEN) AND FBPK;
//2、短鱼,
DDUAN := C<REF(C,LEN) AND FSPK;
KDUAN := C>REF(C,LEN) AND FBPK;
//六、在k线图上画出符合对应条件的形态
DRAWTEXT(DDAI ,H ,'多带'),VALIGN2,FONTSIZE18,COLORWHITE;
DRAWTEXT(DDUAN ,H ,'多短'),VALIGN2,FONTSIZE18,COLORWHITE;
DRAWTEXT(KDAI ,L,'空带'),VALIGN2,FONTSIZE18,COLORWHITE;
DRAWTEXT(KDUAN ,L ,'空短'),VALIGN2,FONTSIZE18,COLORWHITE;
//七、记录带鱼和短鱼的次数
DDAICS := -1*COUNT(DDAI,0);//多带鱼次数
KDAICS := -1*COUNT(KDAI,0);//空带鱼次数
DDUANCS := COUNT(DDUAN ,0);//多短鱼次数
KDUANCS := COUNT(KDUAN ,0);//空短鱼次数
DAIYUCS := DDAICS+KDAICS;//总带鱼次数
DUANYUCS := DDUANCS+KDUANCS;//总短鱼次数
DKDUANYUCS := IF(ABS(DAIYUCS)>REF(ABS(DAIYUCS),1), DUANYUCS, REF(DUANYUCS, BARSLAST((KDAI OR DDAI))));
//当前是带鱼,取短鱼次数,否则取上一次是带鱼时的短鱼次数【当前是带鱼时,短鱼次数不会变化】
DKDAIYUCS := IF(ABS(DUANYUCS)>REF(ABS(DUANYUCS),1), DAIYUCS, REF(DAIYUCS, BARSLAST((DDUAN OR KDUAN))));
//当前是短鱼,取带鱼次数,否则取上一次是短鱼时的带鱼次数【当前是短鱼时,带鱼次数不会变化】
//DRAWICON(ABS(DUANYUCS-DKDUANYUCS)=N4 ,H ,'IC01');
//DRAWICON(ABS(DAIYUCS-DKDAIYUCS)=N4 ,L ,'IC02');
//八、定义开仓条件
//1、定义短鱼的开仓条件【其中:参数N是短鱼/带鱼连续出现的次数】
DUAN_ZDXH := FBPK AND ABS(DUANYUCS-DKDUANYUCS)=N4;// 短鱼连续出现等于 N4 次
DUAN_Zk线H := FSPK AND ABS(DUANYUCS-DKDUANYUCS)=N4;// 短鱼连续出现等于 N4 次
//2、定义带鱼的开仓条件
DAI_ZDXH := FBPK AND ABS(DAIYUCS-DKDAIYUCS)=N4;// 带鱼连续出现等于 N4 次
DAI_Zk线H := FSPK AND ABS(DAIYUCS-DKDAIYUCS)=N4;// 带鱼连续出现等于 N4 次
//九、交易的整体逻辑
//1、开仓条件
DUAN_ZDXH, BPK(LOTS);//做多 AND KTIME
DUAN_Zk线H, SPK(LOTS);//做空 AND KTIME
//DYT AND KTIME, BPK(LOTS);
//KYT AND KTIME, SPK(LOTS);
//2、平仓条件
DYT AND SKVOL>0, BP(SKVOL);
KYT AND BKVOL>0, SP(BKVOL);
//下午收盘前或者夜盘11点前5分钟,把仓位平掉,仓位不隔夜
//PTIME1, CLOSEOUT;
|