手把手的教你实现MACD的变色与背离
作为最经典最实用的技术指标,MACD被称为“指标之王”,几乎所有的交易软件中都自带了这个指标。
但这些自带的MACD指标一般都有两个问题。首先是不能有效识别趋势,只能通过柱线的高低来判断;其次是不能有效识别背离,只能手动划线后再对比MACD与收盘价趋势是否一致来判断。
因此,针对这两个问题,这篇文章将会手把手的带你对交易软件自带的MACD指标进行改造。
变色先来看一下系统自带的MACD指标是如何实现的。
在富途PC版上点击“指标管理”,找到MACD,查看其源码。可以看到,系统自带的MACD是通过COLORSTICK实现的。
图片
然后查看函数定义可以发现,其只是实现了最基本的按零轴上下画不同颜色柱状线的功能。
图片
那么,为了让MACD的走势更加明显,我们可以仿照TradingView的实现方式,在零轴上下时,根据其涨跌情况设置不同的颜色。
实现思路要想实现根据涨跌情况来变色,显然,首先要获取到上一个周期的数据,以便于同当前周期的数据进行比较。其次,要有一个可以自定义画柱状图的函数,以便于在指定条件下,画指定长度、宽度、颜色的柱状图。
所需函数显然,我们可以通过 REF 函数获取上一个周期的数据。
图片
可以通过 STICKLINE 来设置自定义的柱状图。
图片
具体步骤基础数据首先要通过EMA获取MACD指标中的三个数据项。
DIF: EMA(C, 12) - EMA(C, 26), COLORE51883;DEA: EMA(DIF, 9), COLOR7F9A00;MACD: (DIFV - DEAV) * 2, COLORSTICK;逻辑判断然后通过判断MACD在零轴上下以及与上一周期的数据比较涨跌来绘制不同的颜色。
STICKLINE(MACD > 0 AND MACD >= REF(MACD, 1), 0, MACD, 0.8, 0), COLORFF5252;STICKLINE(MACD > 0 AND MACD < REF(MACD, 1), 0, MACD, 0.8, 0), COLORFFCDD2;STICKLINE(MACD < 0 AND MACD >= REF(MACD, 1), MACD, 0, 0.8, 0), COLORB2DFDB;STICKLINE(MACD < 0 AND MACD < REF(MACD, 1), MACD, 0, 0.8, 0), COLOR26A69A;效果展示
在“指标管理”中新建一个指标,“缩写”和“全名”都要填写,“对象”选择“副图”,敲入上面的代码。
图片
在特斯拉上与系统自带MACD指标的对比。
图片
背离背离是指技术指标的方向与价格的方向相反。
股价创新高而指标却未创新高则为顶背离,表示多头的趋势强度减弱,市场可能发生顶部反转;
股价创新低而指标却未创新低则为底背离,表示空头的趋势强度减弱,市场可能发生底部反转。
当然,在强劲的趋势中,有可能会发生“顶中有顶,底中有底,背离之后再背离”的情况,具体还是要结合实际的场景区别对待。
实现思路一般在识别背离时,需要首先连接股价的两个高点(低点),再连接相同时间范围对应的MACD,看其涨跌是否一致。
因此,如果想要实现对背离的自动识别,就需要做到三件事。
首先是触发机制,即在什么时候触发是否背离的判断;
其次是时间范围,即对多长时间范围的数据进行比较;
最后是判断方法,即触发后比较哪两组数据的涨跌情况。
股价是肯定要进行比较的,关键是另外一组数据的选择。
MACD指标由三部分组成,分别是:DIF(差离值)、DEA(差离值平均数)和 MACD(柱状线)。因此这个“另外一组数据”就有了三种选择。为了简便起见,这里以 DIF 为例进行演示。
触发机制显然,可以使用快慢线的金叉、死叉来作为触发机制。这里可以直接通过 CROSS 函数实现。
图片
{是否金叉: DIF上穿DEA}COND_GC := CROSS(DIF, DEA);时间范围当发生金叉(死叉)时,MACD从零轴下方(上方)回到了上方(下方),因此,可以比较当前金叉(死叉)与上一次金叉(死叉)时两组数据的变化情况。
对于“上一次”可以使用BARSLAST函数来实现。
图片
BARS_GC := BARSLAST(REF(COND_GC, 1)) + 1;判断方法
当前发生金叉,且当前股价与上一次金叉时的股价相比,当前DIF与上一次金叉时的DIF相比,股价在降低而DIF在上升则发生底背离。
BD := COND_GC AND DIF > REF(DIF, BARS_GC) AND C < REF(C, BARS_GC);锦上添花识别出背离后,可以通过绘图函数进行标识。
标识文字
{标识: 满足底背离时在 DIF 的 1.6 倍处(避免遮挡)显示文字标识}DRAWTEXT(BD, DIF * 1.6, '底背离'), COLORFF5252;
图片
标识线段
{画线: 以上一次金叉(LGC)的 DEA 为起点,以当前金叉的 DIF 为终点}DRAWLINE(COND_GC AND BARS_GC > 0 AND NOT(BD), DEA, BD, DEA, 0), COLORFF5252, LINETHICK3;图片
效果展示在上一步的基础上再添加上背离部分的代码即可。
图片
然后原来已经具有变色功能的MACD现在又多了对底背离、顶背离的自动识别。
图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。下一篇:没有了