指标: MACD 背离 - 页 2

 

一切正常,但如果将原来的 MACD 和这条 MACD 互相叠加,就会发现由于某种原因,它们之间的主线和信号线 并不重合。

 

嗨,阿兰、

谢谢你提供了这么好的指标。

不过我有个小问题。我正试图在 EA 中实现它,但在复制缓冲区和获取有意义的值以创建信号方面遇到了问题。

缓冲区 0 和 1 在检测到背离时会立即给出一个值。没有背离时,这些缓冲区不会在数据窗口中返回值。

到目前为止一切顺利,但当我复制两个缓冲区时,两个缓冲区返回的值总是相同的,并不反映数据窗口中返回的值。

我就是这样复制缓冲区的:

         if(CopyBuffer(macddiv_handle,0,1,1,macddiv_value1)<0 || CopyBuffer(macddiv_handle,1,1,1,macddiv_value2)<0)
            {
               Alert("Error Copying Buffer macddivergence - error:",GetLastError());
               ResetLastError();
               return;
            }     

之后,我将数值打印到日志中,每根蜡烛都会得到这些奇怪的结果:

2013.11.18 13:33:36 2013.01.02:20:00 val2:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:20:00 val1:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:15:00 val2:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:15:00 val1:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:10:00 val2:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:10:00 val1:1.797693134862316e+308

您能帮我得到一个有意义的值吗?

 
Klammeraffe:

嗨,阿兰、

谢谢你提供了这么好的指标。

不过我有个小问题。我正试图在 EA 中实现它,但在复制缓冲区和获取有意义的值以创建信号方面遇到了问题。

缓冲区 0 和 1 在检测到背离时会立即给出一个值。没有背离时,这些缓冲区不会在数据窗口中返回值。

到目前为止一切顺利,但当我复制两个缓冲区时,两个缓冲区返回的值总是相同的,并不反映数据窗口中返回的值。

我就是这样复制缓冲区的:

之后,我将数值打印到日志中,每根蜡烛都会得到这些奇怪的结果:

2013.11.18 13:33:36 2013.01.02:20:00 val2:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:20:00 val1:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:15:00 val2:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:15:00 val1:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:10:00 val2:1.797693134862316e+308
2013.11.18 13:33:36 2013.01.02 02:10:00 val1:1.797693134862316e+308

你能帮我得到一个有意义的值吗?

这是一个有意义的值,它对应于EMPTY_VALUE,默认情况下等于 DBL_MAX。对于不需要在图表上绘制的指标缓冲区值,使用该值是一种很好的做法。

您可以在 EA 中按以下方式管理它:

if(macddiv_value1[index] != EMPTY_VALUE) ...
 
angevoyageur:

这是一个有意义的值,它与EMPTY_VALUE 相对应,默认情况下等于 DBL_MAX。对于不需要在图表上绘制的指标缓冲区值,使用它是一种很好的做法。

您可以在 EA 中按以下方式管理它:

感谢您的帮助。非常感谢!

好的,我正在寻找 !=0 的值。

但问题是,即使数据窗口给出了另一个值,产生信号的蜡烛也会给出这个值。


   if (entry_signal==2)
      {
         Print("val1: ",macddiv_value1[0]);
         Print("val2: ",macddiv_value2[0]);
         
         buy_condition_1 = macddiv_value1[0] != EMPTY_VALUE;
         
         sell_condition_1 = macddiv_value2[0] != EMPTY_VALUE; 
      }
 
Klammeraffe:

感谢您的帮助。非常感谢!

好的,我正在寻找 !=0 的值。

但问题是,即使数据窗口给出了另一个值,产生信号的蜡烛也给出了这个值。


在您的日志中,2013.01.02 13:50:00 时的 val2 值在哪里?没有显示。
 
angevoyageur:
日志中 2013.01.02 13:50:00 时 val2 的值在哪里?没有显示。

问得好。我没注意到。但这正是产生信号所缺少的值,不是吗?

因为值 2 是显示看跌背离的 缓冲区 1 的值。

真奇怪。

 
Klammeraffe:

这个问题问得好。我还没注意到。但这正是产生信号所缺少的值,不是吗?

因为值 2 是显示看跌背离的缓冲区 1 的值。

奇怪。

是很奇怪。总之,你看了上面主题中的 "无用答案 "了吗?

论坛

指标:MACD 背离

angevoyageur, 2013.11.05 19:14

太友好了。

信号是在蜡烛收盘时发出的,过去是 1 根蜡烛(如果算上开放蜡烛,则是 2 根,而不是 3 根)。这是正常的,也是必须的。背离是基于对极值(顶部/底部)的研究。如果您有办法检测当前蜡烛图上的极值,我建议您学习编程,并免费为我们提供这项伟大的创新。

感谢您的意见。

我会让您阅读、理解并用它来修正您的代码。如果您没有发现,我明天会给您答案。
 
angevoyageur:

是的,很奇怪。无论如何,你读过上面主题中的 "无用答案 "了吗?

我让你读它,理解它,并用它来修复你的代码。如果你没有发现,我明天会给你答案。
我没有。但这个答案一点也不无用。谢谢您的帮助。我已经修好了:)
 

什么是 MACD 指标?如何使用? (根据Dailyforex 文章)

金融市场日间交易者最常用的技术指标之一是移动平均收敛背离指标(MACD)。但是,许多新交易者会犯的一个错误是,他们只是开始使用这个指标,而没有真正理解它的功能或计算方法。这可能会导致本应完全可以避免的代价高昂的错误。因此,研究 MACD(以及所有其他指标)背后的逻辑和计算方法是很有意义的,这样才能更准确地配置您的日间交易仓位,并持续产生收益。




移动平均收敛背离(MACD)的定义

在外汇市场和技术分析策略方面有经验的人都可能听说过很多关于移动平均收敛背离(MACD)的知识。但 MACD 究竟告诉我们什么,它又是如何计算的?如果不了解这些方面,就很难看到交易信号的出现。在此,我们将对 MACD 指标进行解构,并解释其常用的方式和原因。

"市场分析师哈里斯-康斯坦丁努(Haris Constantinou)说:"就其最基本的形式而言,MACD 是一种动量指标,旨在跟踪现有趋势并发现新趋势。MACD 通过显示移动平均线的两级组合与价格活动本身之间的差异和关系来实现这一目的。

MACD 计算

要确定和计算 MACD,我们必须从 12 期 EMA 减去 26 期指数移动平均线 (EMA)。然后,绘制出 MACD 的 9 期 EMA,这就是该指标的信号线。信号线绘制在 MACD 上,将用作交易信号(买入信号和卖出信号)的触发读数。这些要素构成了 MACD 构建的基础,如果您打算在日常交易中使用该指标,就必须充分了解这些要素。

使用 MACD 的三种常见方法

既然我们已经了解了 MACD 计算的基本原理,那么不妨来看看交易者看待 MACD 的一些常见方法,这样我们就可以了解究竟如何使用该指标来识别交易机会。有几种不同的方法可以解释该指标,其中三种最常见的方法被证明对交易者最有效,包括

  • 交叉
  • 背离
  • 以及识别超买/超卖条件
由于指标已成为技术交易界的重要组成部分,因此我们不妨更深入地了解其中的一些方法。但在此之前,了解基础知识至关重要。如果做不到这一点,就会导致许多刚刚入门的交易者损失惨重。