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

0805测试报告

[复制链接]
查看75 | 回复1 | Gary | 2020-8-5 17:40:13 | 显示全部楼层 |阅读模式

由于在实盘过程中,我们发现很多商品在触发止损后,还会涨/跌回来,那么如果我们将原本的ATR止损点,作为新的开仓点,结果会如何呢?
测试逻辑:
1、根据MACD带-67-9开仓信号,设置N倍的ATR止损线
2、做多状态下,如果L下穿止损线,则开多(反之开空)
-做空状态下,如果H上传止损线,则开空

具体测试结果如下:
微信图片_20200805172257.png

我们看到,设置1倍ATR时,开仓效果最佳;
同时我们将原版的MACD带-67-9与1倍ATR开仓组合回测,并没有优于原版的MACD带-67-9;

测试代码说明:
1)测试代码主要由两部分组成,代码A用于输出信号,代码B用于实际交易;
2)代码B回测周期为5M,若要回测15M,只需要将KTIME:=TIME=1455,中的1455改成1445;

测试代码A(日线级别):
//MACD带-67-9 (输出开平仓信号)
FUND:=10000000;
TC:=INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));
TR := MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR : MA(TR,26);
DIFF := EMA(CLOSE,12) - EMA(CLOSE,26);
DEA  := EMA(DIFF,9);
MACD:=2*(DIFF-DEA),COLORSTICK;
MACDV:=MACD>REF(MACD,1) AND REF(MACD,2)>REF(MACD,1);
MACDA:=MACD<REF(MACD,1) AND REF(MACD,2)<REF(MACD,1);

LEN:=CONDBARS(CROSSUP(DIFF,DEA),CROSSDOWN(DIFF,DEA));
DDAI:=C>REF(C,LEN) AND CROSSDOWN(DIFF,DEA);
KDAI:=C<REF(C,LEN) AND CROSSUP(DIFF,DEA);
DDUAN:=C<REF(C,LEN) AND CROSSDOWN(DIFF,DEA);
KDUAN:=C>REF(C,LEN) AND CROSSUP(DIFF,DEA);

DDAICS:=-1*COUNT(DDAI,0);
DDK := IF(BARSLAST(DDAI )<BARSLAST(KDAI), 1, -1);
LEN11:=BARSLAST(CROSSUP(DIFF,DEA) OR CROSSDOWN(DIFF,DEA));
VCS:=COUNT(MACDV,LEN11);
ACS:=COUNT(MACDA,LEN11);

CROSS(DIFF,DEA) AND (DDK=1) AND BKVOL=0 , BPK(TC);
CROSSDOWN(DIFF,DEA) AND (DDK=-1) AND SKVOL=0 , SPK(TC);

CROSS(DIFF,DEA) AND (DDK=-1), BP(SKVOL);
CROSSDOWN(DIFF,DEA) AND (DDK=1), SP(BKVOL);

MACDV AND BKVOL=0 AND DDK=-1 AND DIFF>DEA, BPK(TC);
MACDA AND SKVOL=0  AND DDK=1  AND DIFF<DEA, SPK(TC);

MACDA AND DDK=-1 AND DIFF>DEA AND ACS>N, SP(BKVOL);//
MACDV AND DDK=1  AND DIFF<DEA AND VCS>N, BP(SKVOL);//

//输出信号
BKXH1:=IF(CROSS(DIFF,DEA) AND (DDK=1),1,0) + IF(MACDV AND DDK=-1 AND DIFF>DEA, 1, 0);//做多信号
SKXH1:=IF(CROSSDOWN(DIFF,DEA) AND (DDK=-1),-1,0) + IF(MACDA AND DDK=1 AND DIFF<DEA, -1,0);//做空信号
BPXH1:=IF((CROSS(DIFF,DEA) AND (DDK=-1)) OR (MACDV AND DDK=1  AND DIFF<DEA AND VCS>N),0,1);//平空信号
SPXH1:=IF((CROSSDOWN(DIFF,DEA) AND (DDK=1)) OR (MACDA AND DDK=-1 AND DIFF>DEA AND ACS>N),0,1);//平多信号
XH1:= BKXH1*SPXH1+SKXH1*BPXH1;//信号组合
ATR1:=REF(ATR,1);//输出前一日ATR
CC:=REF(C,1);//输出前一日收盘价



测试代码B
//MACD带-盈67-9-ATR止损开仓
#IMPORT [DAY, 1, MACD带-盈67-9] AS VAR
SPXH1:VAR.SPXH1;
BPXH1:VAR.BPXH1;
XH1:VAR.XH1;
ATR1:VAR.ATR1;
CC:=VAR.CC;

FUND:=10000000; //资金
TC:=INTPART(FUND*0.4/(C*MARGIN*UNIT+FEE));
KTIME:=TIME=1455;

DTZS:CC-N1*ATR1;//多头止损(多头开仓)
KTZS:CC+N1*ATR1;//空头止损(空头开仓)

XH1>0 AND KTIME,BPK(0);//满足信号开多(实际不开仓,只是用于记录状态)
XH1<0 AND KTIME,SPK(0);//满足信号开孔

SPXH1=0 AND KTIME,CLOSEOUT;//日线出平多信号,则平多仓
BPXH1=0 AND KTIME,CLOSEOUT;// 日线出平空信号,则平空仓

ISLASTBPK AND CROSSDOWN(L,DTZS),BK(TC);//做多状态,且L下穿DTZS时,开多
ISLASTSPK AND CROSSUP(H,KTZS),SK(TC);//做空状态,且H上穿KTZS时,开空

回复

使用道具 举报

Gary | 2020-8-5 17:43:16 | 显示全部楼层
设置1倍ATR作为开仓信号,25种商品组合回测曲线
1ATR.png
设置2倍ATR作为开仓信号,25种商品组合回测曲线
2ATR.png

回复

使用道具 举报

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

本版积分规则

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

9

主题

26

帖子

171

积分

网站编辑

Rank: 8Rank: 8

积分
171
  • 官方论坛

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