java macd_MACD到底是什么?

本文介绍了MACD指标的计算方法,通过示例详细解释了如何计算EMA和DIFF、DEA,强调了正确的投资理念,并指出MACD的弱点在于其延迟性和在顶部判断上的困难。同时提到Python计算效率低,考虑使用Java进行大量数据的MACD分析。
摘要由CSDN通过智能技术生成

在股票市场上很多人会变成赌徒,他们的想法是:第一笔输掉大半,追加第二笔资金,结果由于第一笔产生的概率偏差,第二笔输的概率也会增大……以此类推,直到倾家荡产。

而他们从来没有逆向思考过,自己进入股市的目的是什么,我的目的是“翻倍,不停的翻倍”,而在他们亏掉第一笔钱的时候,他们在赌徒心理让他的目的发生了变化,变成了止损。之后在翻倍与止损之间徘徊!真正的炒股是必须在第n笔盈利后(必须变现),才能继续追加投资的!记住一个投资理念"我不会投资连续亏损的企业",当然自己产生亏损也会变得不值得投资!

具体计算公式及例子如下:

EMA(12)= 前一日EMA(12)×11/13+今日收盘价×2/13

EMA(26)= 前一日EMA(26)×25/27+今日收盘价×2/27

DIFF=今日EMA(12)- 今日EMA(26)

DEA(MACD)= 前一日DEA×8/10+今日DIFF×2/10

BAR=2×(DIFF-DEA)

对理工检测:

20091218日:

新股上市,DIFF=0, DEA=0, MACD=0,收盘价55.01

20091219日:

收盘价53.7

EMA(12)= 55.01+(53.7-55.01)×2/13=54.8085 (新股上市前一日EMA: 前一日收盘价)

EMA(26)= 55.01+(53.7-55.01)×2/27=54.913

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MACD(Moving Average Convergence Divergence)是一种常用的技术分析指标,它的计算方法基于移动平均线。在Java中,你可以通过以下步骤来计算MACD指标: 1. 计算12日EMA(Exponential Moving Average)和26日EMA,分别称为EMA12和EMA26。 2. 计算EMA12和EMA26的差值,称为DIF(Difference)。 3. 计算DIF的9日EMA,称为DEA(DIF的Exponential Moving Average)。 4. 计算DIF和DEA的差值,称为MACD。 下面是Java代码示例: ```java public class MACD { /** * 计算EMA * @param data 数据数组 * @param n 计算EMA的周期 * @return EMA数组 */ public static double[] getEMA(double[] data, int n) { double[] ema = new double[data.length]; double alpha = 2.0 / (n + 1); ema[0] = data[0]; for (int i = 1; i < data.length; i++) { ema[i] = alpha * data[i] + (1 - alpha) * ema[i - 1]; } return ema; } /** * 计算MACD * @param data 数据数组 * @param shortPeriod 短周期 * @param longPeriod 长周期 * @param signalPeriod 信号周期 * @return MACD数组 */ public static double[] getMACD(double[] data, int shortPeriod, int longPeriod, int signalPeriod) { double[] emaShort = getEMA(data, shortPeriod); double[] emaLong = getEMA(data, longPeriod); double[] dif = new double[data.length]; for (int i = 0; i < data.length; i++) { dif[i] = emaShort[i] - emaLong[i]; } double[] dea = getEMA(dif, signalPeriod); double[] macd = new double[data.length]; for (int i = 0; i < data.length; i++) { macd[i] = (dif[i] - dea[i]) * 2; } return macd; } } ``` 使用示例: ```java double[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; double[] macd = MACD.getMACD(data, 5, 10, 9); for (double d : macd) { System.out.println(d); } ``` 以上代码将输出MACD数组。注意,这里的数据数组可以是任意股票价格、指数等时间序列数据,只需要按照时间顺序排列即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值