一、概念
**顶背离**
当股价K线图上的股票走势一峰比一峰高,股价一直在向上涨,而MACD指标图形上的由红柱构成的图形的走势是一峰比一峰低,即当股价的高点比前一次的高点高、而MACD指标的高点比指标的前一次高点低,称为顶背离。顶背离一般是股价在高位即将反转转势的信号,表明股价短期内即将下跌,是卖出股票的信号。
**底背离**
底背离一般出现在股价的低位区。当股价K线图上的股票走势,股价还在下跌,而MACD指标图形上的由绿柱构成的图形的走势是一底比一底高,即当股价的低点比前一次低点底,而指标的低点却比前一次的低点高,称为底背离。底背离一般是预示股价在低位可能反转向上的信号,表明股价短期内可能反弹向上,是短期买入股票的信号。
二、图形
![Snap4.png][1]
![Snap1.png][2]
![Snap3.png][3]
图中可以看到,在顶背离后股价大概率暴跌,底背离后股价大概率上涨,MACD的顶背离在A股市场中是一个准确率极其高的指标,一旦出现即是清仓信号,来不得半点犹豫,底背离的准确率不是很高,或者说出现底背离信号后买入的回报率并没有明显高于其它指标信号,这个问题有待商榷,附后的策略中使用了底背离和顶背离作为买入卖出信号,有兴趣的宽客可以一起研究下,到底什么情况下、如何优化才能提高收益。
[1]: https://image.joinquant.com/265c45c848ee736550b46be76fc5295f
[2]: https://image.joinquant.com/ae64c9ac50106cfbed02f1e54d42c461
[3]: https://image.joinquant.com/9b56aeb34e7f4d57c0e7489542a1b5b4
三、同花顺指标
有了聚宽后回测相当方便,但是不够直观,所以想好一个策略先在同花顺里实现一边,毕竟图形看起来更直观,然后才是策略回测,同花顺指标分别包含技术指标和选股指标,指标中没有采用常规的参数12、26、9,而是采用了11、26、5,策略中也是同样,参数可以调,或许你能发现最优的参数:
```
技术指标:
```
```
//SHORT=11
//LONG=26
//M=5
//-------------------------------------------------------------------------------------------MACD
DIF : EMA(C, SHORT) - EMA(C, LONG), colorwhite;
DEA : EMA(DIF, M), coloryellow;
MACD: 2*(DIF-DEA), COLORSTICK, nodraw;
MACD金叉=CROSS(DIF,DEA);
MACD死叉=CROSS(DEA,DIF);
DRAWICON(MACD金叉, DEA, 'BUY');
DRAWICON(MACD死叉, DEA, 'SELL');
STICKLINE(MACD>=0,0,MACD,1,0),colorred;
STICKLINE(MACD< 0,MACD,0,1,0),colorgreen;
//PARTLINE(MACD,MACD>=REF(MACD,1),RGB(255,0,0),MACD[REF(DIF,1), 1, 0.1, 1, '升'), colorwhite;
DRAWTEXT_FIX(ISLASTBAR AND DIF=REF(DIF,1), 1, 0.1, 1, '平'), colorwhite;
DRAWTEXT_FIX(ISLASTBAR AND DIF][REF(DEA,1), 1, 0.3, 1, '升'), coloryellow;
DRAWTEXT_FIX(ISLASTBAR AND DEA=REF(DEA,1), 1, 0.3, 1, '平'), coloryellow;
DRAWTEXT_FIX(ISLASTBAR AND DEA][REF(MACD,1), 1, 0.5, 1, '升'), colorred;
DRAWTEXT_FIX(ISLASTBAR AND MACD=REF(MACD,1), 1, 0.5, 1, '平'), colorwhite;
DRAWTEXT_FIX(ISLASTBAR AND MACD][=02 AND 量比<06;
FL06=量比>=06 AND 量比<10;
FL10=量比>=10;
DRAWGBK(FL02), color990000;
DRAWGBK(FL06), colorCC0000;
DRAWGBK(FL10), colorFF0000;
//---------------------------------------------------------------------------------------------底背离
LATEST:=BARSLAST(REF(MACD金叉,1));
底背离:=REF(C,LATEST+1)>C AND DIF>REF(DIF,LATEST+1) AND MACD金叉;
DRAWLINE(LATEST=0,DEA,底背离,DEA,0),colormagenta,LINETHICK3;
//---------------------------------------------------------------------------------------------顶背离
LATEST:=BARSLAST(REF(MACD死叉,1));
顶背离:=REF(C,LATEST+1)DIF AND MACD死叉;
DRAWLINE(LATEST=0,DEA,顶背离,DEA,0),colorcyan,LINETHICK3;
```
```
选股指标:
```
```
//-------------------------------------------------------------------------------------------MACD
DIF = EMA(C, SHORT) - EMA(C, LONG), colorwhite;
DEA = EMA(DIF, M), coloryellow;
MACD= 2*(DIF-DEA), COLORSTICK, nodraw;
MACD金叉=CROSS(DIF,DEA);
MACD死叉=CROSS(DEA,DIF);
//-----------------------------------------------------------------------------------------底背离选股
LATEST:=BARSLAST(REF(MACD金叉,1));
底背离:=REF(C,LATEST+1)>C AND DIF>REF(DIF,LATEST+1) AND MACD金叉;
底背离选股:COUNT(底背离,3)>=1;// AND CROSS(MACD,0);
//-------------------------------------------------------------------------------------------附加条件
过滤停牌=DYNAINFO(8)>0;
过滤ST=NOT(NAMELIKE('ST') OR NAMELIKE('*ST') OR NAMELIKE('S'));
附加条件=过滤停牌;
//-------------------------------------------------------------------------------------------选股结果
SELECT 附加条件 AND 底背离选股;
```
四、策略说明:
1、采用了小市值因子,在doSelect函数中有个scale参数,是选择所有上市公司的比例,默认为0.14,此值既不能太大,也不能太小;
2、剔除ST、*ST;
3、分别测了不加止损和加止损两种模式,策略分别附后;
4、持仓股票不超过七只;
5、doSafety函数是判断大盘风险的,也是MACD指标,沪深300指数MACD为正可入场,否则观望,但是在策略中注释掉了;
6、此策略计算量比较大,因此只测了2015年一月至今的数据。
第一个是无止损的:]
一旦用上带移动平均的指标,股票数多了就没法忍,奇怪的是为什么通达信、同花顺等计算指标那么快?用代码计算是因为要一遍一遍取数的原因吗?不知道有没有简便的办法
2016-02-28
其实通达信、同花顺等计算指标也很慢,选股时比较明显,得运行一两分钟才选出来,好在只选一次,回测相当于每天(按天回测)选一次,python作为脚本语言,速度并非其优势,也没得选择,只能在技巧上下点儿工夫,例如减少查询次数,尽可能不做循环遍历等等
2016-02-28
2014年还行
![2016-02-29_154500.png][1]
[1]: https://joinquant-image.b0.upaiyun.com/554388410c3e2ffea52b982f8aa4f755
2016-02-29
2008年依然是惨不忍睹的:
![2016-02-29_154632.png][1]
[1]: https://joinquant-image.b0.upaiyun.com/a1bc8d2d280c601232c8a88e12f4edff
2016-02-29
,玩聚宽两个多月,发现一个规律,凡是复杂的指标策略效果都不好,只要用到MA移动平均线,回测效果都不满意,反而那些只看开盘、收盘、最高价、最低价的策略回测效果更好,或许这么多年金融市场赖以支撑的技术体系都是错的
2016-02-29
macd用的人太多吧。其实有2014、2015年这样的结果,我已经很满意了。当然,2008年可能是各种策略的滑铁卢。我只求策略遇到08年这样的,不要跌太多就好。
2016-02-29
get_price取当天数据时最高价、最低价是有未来的,取过去数据则不会,注意提防就是了
2016-03-07
我个人一直觉得MA指标之类的根本谈不上金融市场赖以支撑的技术体系,反而只是砖家骗钱的依据,基本不靠谱的,嘿嘿
2016-03-07
K线短期看说白了就是所有参与者情绪的反应,怎么衡量情绪的移动平均值呢,所以说MA是有问题的
2016-03-07
取到macd和DIF、DEA的值为什么和同花顺的结果不同
suit['gold'] = grid.close[key2]>grid.close[key1] and \
grid.dif[key2]
2016-04-21