请选择 进入手机版 | 继续访问电脑版

VA鱼测试

[复制链接]
查看133 | 回复4 | 桥博士 | 2020-6-1 00:57:30 | 显示全部楼层 |阅读模式
第一版: 只保留了胜率盈亏特别高的,准备以后加仓
第二版:  准备根据带鱼去筛选VA鱼,但未成功

另外,重新定义的飞鱼,但还没有启用

三楼是简单版的测试,简单过滤,上证曲线很好。
美中不足就是文华指数回测不太好
还要改进

组合回测,虽然收益略低,胜率盈亏也低,
但曲线非常平滑,
居然20年都盈利,
25个品种,只有三个亏损
回复

使用道具 举报

桥博士 | 2020-6-1 00:57:43 | 显示全部楼层
//源于《均线之鱼0525-正反手》
//代码逻辑:
//开仓条件一: 连续出现大于等于N次短鱼;
//开仓条件二: 不满足开仓条件一;
//开仓条件三:不满足开仓条件一,且飞鱼次数大于等于 N1 时,
//加仓条件: 出现飞鱼;
//止盈条件: 根据开仓条件二开仓后,MACD柱子缩短则平仓止盈;
//反手条件: 根据开仓条件三开仓后,MACD柱子缩短则反手;

//变量设置
//N 设置短鱼的次数
//N1 设置飞鱼的次数(几条飞鱼才加仓)
//N1 设置飞鱼的次数(飞鱼次数大于等于 N1 时才加仓,遇到MACD柱子缩短就反手)


//一、定义仓位
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.04/(C*MARGIN*UNIT+FEE));//计算开仓手数

//二、定义MACD
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA := EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD := 2*(DIFF-DEA);
2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

//定义距离:
MACD_DIFF : ABS(MACD)/MA(ABS(MACD), 240);

//三、描述均线之鱼--短鱼和带鱼
LEN :=CONDBARS(CROSSUP(DIFF,DEA),CROSSDOWN(DIFF,DEA));//最近一次满足DIFF上穿DEA与DIFF下穿DEA之间的周期数
LEN1:CONDBARS(CROSS(DIFF,DEA), C<>REF(C,1));//
LEN2 :CONDBARS(CROSSDOWN(DIFF,DEA), C<>REF(C,1));//
//1、带鱼
DDAI := C>REF(C, LEN) AND CROSSDOWN(DIFF, DEA); //多带鱼
KDAI := C<REF(C, LEN) AND CROSSUP(DIFF, DEA); //空带鱼

//2、短鱼
DDUAN := C<REF(C, LEN) AND CROSSDOWN(DIFF,DEA); //多短鱼
KDUAN := C>REF(C, LEN) AND CROSSUP(DIFF,DEA); //空短鱼

//3、松飞鱼SFEI
//上穿下穿金叉死叉
DSFEI := DIFF>DEA AND CROSS(C,REF(C,LEN1));//多飞鱼
KSFEI := DIFF<DEA AND CROSSDOWN(C,REF(C,LEN2));//空飞鱼

//4、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);

// 对松飞鱼进行计数
IF (DIFF>DEA) THEN
BEGIN
        DSFEI_CS := COUNT(DSFEI, BARSLAST(CROSSUP(DIFF, DEA)));// 金叉之后多飞鱼的个数
END

IF (DIFF<DEA) THEN
BEGIN
        KSFEI_CS := COUNT(KSFEI, BARSLAST(CROSSDOWN(DIFF, DEA)));// 死叉之后空飞鱼的个数
END

//四、在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;
//DRAWTEXT(DSFEI ,H+0.2 ,'多飞'),VALIGN2,FONTSIZE18,COLORWHITE;
//DRAWTEXT(KSFEI ,L-0.2 ,'空飞'),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))));
//当前是短鱼,取带鱼次数,否则取上一次是短鱼时的带鱼次数【当前是短鱼时,带鱼次数不会变化】

DUANYULXCS :ABS(DUANYUCS-DKDUANYUCS);//短鱼连续次数
DAIYULXCS :ABS(DAIYUCS-DKDAIYUCS);//带鱼连续次数

//六、定义当前的金叉死叉
DQSC := CROSSDOWN(DIFF,DEA);//记录当前的死叉信号
DQJC := CROSSUP(DIFF,DEA);//记录当前的金叉信号

//七、定义开仓条件
//1、开仓条件一 短鱼顺势
DUAN_ZDXH := DUANYULXCS=1 AND MACDV AND DIFF>DEA;// 短鱼连续等于 1次
DUAN_ZKXH :=  DUANYULXCS=1 AND MACDA AND DIFF<DEA;// 短鱼连续等于 1次

//2、开仓条件二 带鱼顺势
DAI_ZDXH := DAIYULXCS=2 AND MACDV AND DIFF>DEA;
DAI_ZKXH := DAIYULXCS=2 AND MACDA AND DIFF<DEA;



//3、加仓条件
DSFEI_BK1 := DSFEI AND DSFEI_CS<=N1; //多松飞鱼的开仓条件
KSFEI_SK1 := KSFEI AND KSFEI_CS<=N1; //空松飞鱼的开仓条件

DSFEI_BK2 := DSFEI AND DSFEI_CS>N1; //多松飞鱼的开仓条件2
KSFEI_SK2 := KSFEI AND KSFEI_CS>N1; //空松飞鱼的开仓条件2

//3、开仓条件汇总
DXH:=DUAN_ZDXH OR DAI_ZDXH;
KXH:=DUAN_ZKXH OR DAI_ZKXH ;

//八、定义不同开仓条件下的代码逻辑
DXH,BPK(LOTS);
KXH,SPK(BKVOL);
MACDA AND COUNT(KXH,1)=0,SP(BKVOL);
MACDV AND COUNT(DXH,1)=0,BP(SKVOL);

TRADE_AGAIN(10);
回复

使用道具 举报

桥博士 | 2020-6-1 00:58:07 | 显示全部楼层
//源于《均线之鱼0525-正反手》
//代码逻辑:
//开仓条件一: 连续出现大于等于N次短鱼;
//开仓条件二: 不满足开仓条件一;
//开仓条件三:不满足开仓条件一,且飞鱼次数大于等于 N1 时,
//加仓条件: 出现飞鱼;
//止盈条件: 根据开仓条件二开仓后,MACD柱子缩短则平仓止盈;
//反手条件: 根据开仓条件三开仓后,MACD柱子缩短则反手;

//变量设置
//N 设置短鱼的次数
//N1 设置飞鱼的次数(几条飞鱼才加仓)
//N1 设置飞鱼的次数(飞鱼次数大于等于 N1 时才加仓,遇到MACD柱子缩短就反手)


//仓位计算
FUND:=10000000; //资金
LOTS:=INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));// 计算开仓手数
//手数计算
// 1、设置一个头存值,头存是LOTS和BKVOL之间取最大值,或者在LOTS和SKVOL取最大值;
// BKTC:在LOTS和SKVOL之间取最大值;
BKTC := MAX(LOTS, SKVOL);//反手做多的手数
// SKTC:在LOTS和BKVOL之间取最大值;
SKTC := MAX(LOTS, BKVOL);//反手做空的手数

//二、定义MACD
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA := EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD := 2*(DIFF-DEA);
2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

//定义距离:
MACD_DIFF := ABS(MACD)/MA(ABS(MACD), 240);

//三、描述均线之鱼--短鱼和带鱼
LEN :=CONDBARS(CROSSUP(DIFF,DEA),CROSSDOWN(DIFF,DEA));//最近一次满足DIFF上穿DEA与DIFF下穿DEA之间的周期数
LEN1:=BARSLAST(CROSS(DIFF,DEA));//
LEN2 :=BARSLAST(CROSSDOWN(DIFF,DEA));//
//1、带鱼
DDAI := C>REF(C, LEN) AND CROSSDOWN(DIFF, DEA); //多带鱼
KDAI := C<REF(C, LEN) AND CROSSUP(DIFF, DEA); //空带鱼

//2、短鱼
DDUAN := C<REF(C, LEN) AND CROSSDOWN(DIFF,DEA); //多短鱼
KDUAN := C>REF(C, LEN) AND CROSSUP(DIFF,DEA); //空短鱼

//3、松飞鱼SFEI
//上穿下穿金叉死叉
DSFEI := DIFF>DEA AND CROSS(C,REF(C,LEN1));//多飞鱼
KSFEI := DIFF<DEA AND CROSSDOWN(C,REF(C,LEN2));//空飞鱼

//4、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);

// 对VA鱼进行计数
IF (DIFF>DEA) THEN
BEGIN
        MACDA_CS :=COUNT(MACDA, LEN1);// 金叉之后多飞鱼的个数
END

IF (DIFF<DEA) THEN
BEGIN
        MACDV_CS : =COUNT(MACDV, LEN2);// 死叉之后空飞鱼的个数
END

//四、在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;
//DRAWTEXT(DSFEI ,H+0.2 ,'多飞'),VALIGN2,FONTSIZE18,COLORWHITE;
//DRAWTEXT(KSFEI ,L-0.2 ,'空飞'),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))));
//当前是短鱼,取带鱼次数,否则取上一次是短鱼时的带鱼次数【当前是短鱼时,带鱼次数不会变化】

DUANYULXCS :ABS(DUANYUCS-DKDUANYUCS);//短鱼连续次数
DAIYULXCS :ABS(DAIYUCS-DKDAIYUCS);//带鱼连续次数

//六、定义当前的金叉死叉
DQSC := CROSSDOWN(DIFF,DEA);//记录当前的死叉信号
DQJC := CROSSUP(DIFF,DEA);//记录当前的金叉信号

//七、定义开仓条件
DUANS:= DUANYULXCS=1 OR DUANYULXCS=3 OR DUANYULXCS=5;
//DUANN:=  DUANYULXCS=2 ;
DAIS:= DAIYULXCS=2  ;
DAIN:= DAIYULXCS>=3;

KNDUANK:=DAIN AND DIFF<DEA;
//KNDAIK:=DUANN AND DIFF<DEA;
KNDUAND:=DAIN  AND DIFF>DEA;
//KNDAID:=DUANN  AND DIFF>DEA;

//1、开仓条件一 短鱼顺势
DUAN_ZDXH := DUANS AND MACDV AND DIFF>DEA;// 短鱼连续等于 1次
DUAN_ZKXH :=  DUANS AND MACDA AND DIFF<DEA;// 短鱼连续等于 1次

//2、开仓条件二 带鱼顺势
DAI_ZDXH := DAIS AND MACDV AND DIFF>DEA;
DAI_ZKXH := DAIS AND MACDA AND DIFF<DEA;

//3、开仓条件三短鱼逆势
//DUAN_ZDXH1 := DUANOU AND MACDV AND DIFF<DEA AND MACDV_CS<=N2;// 短鱼连续等于 1次
//DUAN_ZKXH1 :=  DUANOU AND MACDA AND DIFF>DEA AND MACDA_CS<=N2;// 短鱼连续等于 1次

//4、开仓条件四 带鱼逆势
DAI_ZDXH1 := DAIN AND MACDV AND DIFF<DEA AND MACDV_CS<=N2;
DAI_ZKXH1 := DAIN AND MACDA AND DIFF>DEA AND MACDA_CS<=N2;

//5、开仓条件五 短鱼金叉死叉
JC_ZDXH := DUANS AND BKVOL=0 AND CROSS(DIFF,DEA);// 金叉
SC_ZKXH :=  DUANS AND SKVOL=0 AND CROSSDOWN(DIFF,DEA);// 死叉

//6、开仓条件五 带鱼金叉死叉
JC_ZDXH1 :=  DAIS AND BKVOL=0 AND CROSS(DIFF,DEA);// 金叉DAIOU AND
SC_ZKXH1 := DAIS AND SKVOL=0 AND CROSSDOWN(DIFF,DEA);// 死叉DAIOU AND




//3、开仓条件汇总
DXH:=(DUAN_ZDXH OR DAI_ZDXH  OR DAI_ZDXH1 OR JC_ZDXH OR JC_ZDXH1) AND BKVOL=0;
KXH:=(DUAN_ZKXH OR DAI_ZKXH OR DAI_ZKXH1 OR SC_ZKXH OR SC_ZKXH1) AND SKVOL=0;

//八、定义不同开仓条件下的代码逻辑
DXH,BPK(BKTC);
KXH,SPK(SKTC);

CROSSDOWN(DIFF,DEA),SP(BKVOL);
CROSS(DIFF,DEA),BP(SKVOL);
//MACDA  AND BKVOL>0,SP(BKVOL);AND KNDUANK
//MACDV AND SKVOL>0,BP(SKVOL);AND KNDUAND


TRADE_AGAIN(10);
回复

使用道具 举报

桥博士 | 2020-6-1 00:58:22 | 显示全部楼层

简单过滤,上证曲线很好

//一、定义仓位
FUND:=10000000; //资金
TC:=INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));//计算开仓手数


DIFF : EMA(CLOSE,12) - EMA(CLOSE,26);//短周期与长周期的收盘价的指数平滑移动平均值做差。
DEA  : EMA(DIFF,9);//DIFF的M个周期指数平滑移动平均
MACD:2*(DIFF-DEA),COLORSTICK;//DIFF减DEA的2倍画柱状线

MACDV:=MACD>REF(MACD,1) AND REF(MACD,2)>REF(MACD,1);
MACDA:=MACD<REF(MACD,1) AND REF(MACD,2)<REF(MACD,1);

MACDV AND DIFF>DEA, BPK(TC);//

MACDA AND DIFF<DEA, SPK(TC);//

MACDV AND DIFF<DEA, BP(SKVOL);//开仓

MACDA AND DIFF>DEA, SP(BKVOL);//平仓
回复

使用道具 举报

桥博士 | 2020-6-1 00:58:25 | 显示全部楼层
1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关课程推荐
桥博士《MACD指标详解》
为什么我们只用MACD金叉死叉来进行操作效果并不好,学习课程就能在研究MACD指标上少走很多弯路
桥博士《K线形态组合解析》
从理论到实战,让您全面掌握各种K线形态及各种组合,帮您分析梳理大量K线知识让您的投资更游刃有余
桥博士《股票入门基础知识》
从理论到实战,课程包括如何买卖股票、开户流程、交易软件、k线图知识、技术指标、价值投资等新手必备知识

127

主题

568

帖子

1604

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1604
  • 官方论坛

    提供最新 Discuz! 产品新闻、软件下载与技术交流