Java 验证 MACD 底背离是否真的有效

MACD 是查拉尔·阿佩尔(Geral Appel)于 1979 年提出的,由一快及一慢指数移动平均( EMA )之间的差计算出来。“快”指短时期的 EMA ,而“慢”则指长时期的 EMA ,最常用的是 12 及 26 日 EMA ;

一般 MACD 的值是 12 日的平均值与 26 日平均值的差; SIGNAL 是 MACD9 日平均值; HISTOGRAM 是 MACD 与 SIGNAL 的差。

公式如下:

MACD : EMA(C,12)-EMA(C,26);

Signal : EMA(MACD,9);

Histogram : MACD-Signal;

顶背离和底背离的概念:

MACD 指标的背离就是指 MACD 指标的图形的走势正好和 K 线图的走势方向正好相反。MACD 指标的背离有顶背离和底背离两种。

( 1 )顶背离

当股价 K 线图上的股票走势一峰比一峰高,股价一直在向上涨,而 MACD 指标图形上的由红柱构成的图形的走势是一峰比一峰低,即当股价的高点比前一次的高点高、而 MACD 指标的高点比指标的前一次高点低,这叫顶背离现象。顶背离现象一般是股价在高位即将反转转势的信号,表明股价短期内即将下跌,是卖出股票的信号。

( 2 )底背离

底背离一般出现在股价的低位区。当股价 K 线图上的股票走势,股价还在下跌,而 MACD 指标图形上的由绿柱构成的图形的走势是一底比一底高,即当股价的低点比前一次低点底,而指标的低点却比前一次的低点高,这叫底背离现象。底背离现象一般是预示股价在低位可能反转向上的信号,表明股价短期内可能反弹向上,是短期买入股票的信号。

在这里,我们忽略 MACD 指标的具体计算过程,直接谈一谈本次实验,小编给出策略思想并贴出两种策略分别的回溯效果。

实验采取的两种策略:

快线向上突破慢线时,表明股市处于一种强势之中,股价将再次上涨,我们选择买进股票,反之,当慢线向上突破快线时,表明股市处于可能跌入弱市的状态,我们选择卖出股票;

底背离买进,顶背离卖出。

第一种策略

代码如下:

class MyStrategy extends Strategy {

private double prevDelta = 0;

String stock1 = "sha-601318";

MACDFactor fMacd = new MACDFactor(12, 26, 9);

public void init(BackTestContext context) {

universe.add(stock1);

}

public void prepare(BackTestContext context) {

}

public void handleData(BackTestContext context, BarData data) throws Exception {

double macdOut = fMacd.get(stock1, MACDFactor.RET_MACD);

double macdSignal = fMacd.get(stock1, MACDFactor.RET_MACD_SIGNAL);

double delta = macdOut - macdSignal;

record("macd", macdOut);

record("macd_signal", macdSignal);

record("macd_hist",delta);

if (prevDelta > 0 && delta < 0) {

log.info("Sell at "+""+context.now+delta);

orderTargetPercent(stock1, 0, "Sell all.");

} else if (prevDelta < 0 && delta > 0) {

log.info("Buy at "+context.now+delta);

orderPercent(stock1, 80, "Buy in.");

}

prevDelta = delta;

}

}

回溯效果:

第二种策略

代码:

class MyStrategy extends Strategy {

private double prevDelta = 0;

private double prevClose = 0;

private double countA = 0;

private double countB = 0;

String stock1 = "sha-601318";

MACDFactor fMacd = new MACDFactor(12, 26, 9);

public void init(BackTestContext context) {

universe.add(stock1);

}

public void prepare(BackTestContext context) {

}

public void handleData(BackTestContext context, BarData data) throws Exception {

log.info("time: "+context.now);

double delta = fMacd.get(stock1, MACDFactor.RET_MACD_HIST);

record("macd_hist", delta);

if (delta < prevDelta && data.get(stock1).close > prevClose) {

countB = 0;

if(countA%5 == 0 && countA != 0 ){

log.info("Sell at "+context.now+" "+delta);

orderTargetPercent(stock1, 0, "Sell all.");

}

else{

countA += 1;

}

}else if (delta > prevDelta && data.get(stock1).close < prevClose){

countA = 0;

if(countB%5 == 0 && countB != 0 ){

log.info("Buy at "+context.now+" "+delta);

orderPercent(stock1, 80, "Buy in.");

}else{

countB += 1;

}

}

prevDelta = delta;

prevClose = data.get(stock1).close;

}

}

回溯效果:

如果你是程序员,也可以进去Raquant 镭矿自己试试哦!

java macd指标_Java 验证 MACD 底背离是否真的有效相关推荐

  1. java校验文件格式_java验证文件格式工具类(获取文件真实格式)

    , String>();privateVerifyFileType(){} static{ getAllFileType();//初始化文件类型信息} /*** Discription:[get ...

  2. 聚宽macd底背离_MACD指标图解!如何解决滞后性,规避盲目买进卖出!

    作为中小投资者,由于对基本面分析的欠缺,以致技术分析成为多数人的选择.其中道氏理论是市场技术研究的鼻祖,而 macd则是当前运用最为广泛的技术指标.MACD吸收了移动平均线的优点.移动平均线的买卖交易 ...

  3. MACD指标与成交量指标怎么配合使用?耳闻过成交量指标可以辅助MACD指标判势吗?

    通过MACD指标,投资者可以了解到市场上涨或者下跌速度的变化,并且衡量推动这种涨跌变化内在能量的强弱.如果配合成交量指标,投资者则可以了解这种变化过程中投资者交易活跃度的变化方向,从而更加全面地了解当 ...

  4. 双线macd指标参数最佳设置_MACD指标参数设置成多少最好和使用技巧?

    相信不少投资人在进入外汇市场的初期,都是使用MACD.均线.布林带这种最常见实用的指标来进行市场分析的.进行外汇交易的投资人如果没有使用过MACD指标,那只能说此人根本就不会外汇技术分析,下面本文就来 ...

  5. MACD指标精粹讲解

    很多朋友都用了很的时间去找什么指标,实际上很的自编指标都是从这些指标演化而来的! MACD指标精粹讲解 很多朋友都用了很的时间去找什么指标,实际上很的自编指标都是从这些指标演化而来的!希望大家先学好这 ...

  6. [zz]MACD指标1

    MACD称为指数平滑异同移动平均线(Moving Average Convergence and Divergence).是从双移动平均线发展而来的,由快的移动平均线减去慢的移动平均线, MACD的意 ...

  7. macd指标参数最佳设置及macd指标是如何使用的

    MACD指标参数最佳设置及MACD指标是如何使用的 当我们打开交易软件时,指标名称旁边有一组数字,那是交易软件给定的指标默认参数.MACD也是如此,一般MACD的默认参数是(12,26,9).这不是固 ...

  8. MQL4自编指标学习6-MQL4中MACD指标的实现

    目录 1 MACD指标简介 2 MACD三个变量的计算公式 2.1 计算移动平均值(EMA) 2.2 计算离差值(DIF) 2.3 计算DEA 2.4 Bars的计算 3 MACD用Excel实现 4 ...

  9. 选股策略之MACD指标选股

    股市有风险,投资需谨慎!!!股市有风险,投资需谨慎!!!股市有风险,投资需谨慎!!! MACD的详细介绍请移步:macd百度百科 话不多说,上代码: # -*- coding: utf-8 -*- ' ...

  10. RSI指标顶背离趋势反转信号,文华财经期货RSI底背离自动画线指标公式源码

    期货交易一定要认清市场运动的方向,并且要顺着它运动的方向进行交易,即一定要按照市场的运动变化进行顺势交易!要跟随市场的变化而行动.而绝不是什么PE.指标之类,事实上市场不一定会认同你的那个人为的交易模 ...

最新文章

  1. 10 个深恶痛绝的 Java 异常。。
  2. 利用流水线改进代码中的if处理流程
  3. SQL 语句快速参考
  4. 素数倒数的级数发散性的一个证明
  5. android sdk64位资源,android SDK 有32位或64位的分别吗
  6. 拥抱变化——从Atlas到ASP.NET AJAX(4):大大简化的了的Extender扩展器控件
  7. angular示例_Angular Dependency Injection用示例解释
  8. SpringBoot - 多Profile使用与切换
  9. extra增强延迟加载
  10. Dinic算法(研究总结,网络流)
  11. C#通用验证类:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP
  12. opencv调用摄像头
  13. 画直线的算法之DDA算法+代码实现(法一)
  14. 外贸单证制作常用名称中英互译表
  15. WPF UI框架界面开发教程(一)
  16. kubernetes 网络callico和flannel两种网络
  17. LOAM系列——LeGO-LOAM配置、安装、问题解决及VLP16测试效果(完结版)
  18. 攻击者对 Exploit-DB平台的利用分析
  19. idea中Cannot Save Settings Module ‘Test’错误
  20. 美国游学英国游学推荐 选择国际游学机构五大攻略

热门文章

  1. tsm ANS0326E问题处理
  2. PHP 调用金山词霸API获取音标和音频
  3. 模拟 hdu5268 ZYB loves Score
  4. 生成SQLite的db文件
  5. 上传图片转为base64码再以url形式传值
  6. 千万级 PV是什么意思?
  7. C++中bad_alloc类
  8. \t\t林荫苗圃 苗木和苗圃 好苗木种植技术是关键 它好我也好
  9. mscorsvw.exe是windows的什么进程!!
  10. Vmware vCenter虚拟机克隆后MAC地址的修改问题