DIF:=EMA(CLOSE,12)-EMA(CLOSE,26); // 计算短期和长期指数移动平均线的差值 DEA:=EMA(DIF,9); // 计算DIF的指数移动平均线 MACD:=(DIF-DEA)*2,COLORSTICK; // 计算MACD指标的值 JZX1:=CROSS(DIF,DEA); // 判断DIF是否上穿DEA JZX2:=CROSS(DEA,DIF); // 判断DEA是否上穿DIF 前高:IF(CONST(SUMBARS(JZX1,2)-BARSLAST(JZX2))>2,IF(CURRBARSCOUNT<=CONST(FINDHIGHBARS(DIF,BARSLAST(JZX2),SUMBARS(JZX1,2)-BARSLAST(JZX2),1))+1,CONST(FINDHIGH(Y,BARSLAST(JZX2),SUMBARS(JZX1,2)-BARSLAST(JZX2),1)),DRAWNULL),COLORMAGENTA,DOTLINE; // 查找前一高点的价格 前低:IF(CONST(SUMBARS(JZX1,2)-BARSLAST(JZX2))>2,IF(CURRBARSCOUNT<=CONST(FINDLOWBARS(DIF,BARSLAST(JZX1),SUMBARS(JZX1,2)-BARSLAST(JZX2),1))+1,CONST(FINDLOW(Y,BARSLAST(JZX1),SUMBARS(JZX1,2)-BARSLAST(JZX2),1)),DRAWNULL),COLORGREEN,DOTLINE; // 查找前一低点的价格

前高每个函数的意思

  • SUMBARS(JZX1,2): 返回JZX1信号出现的最后两次的总柱数
  • BARSLAST(JZX2): 返回JZX2信号出现的最后一次的柱数
  • CONST(SUMBARS(JZX1,2)-BARSLAST(JZX2)): 计算两次JZX1信号出现的间隔的柱数
  • CURRBARSCOUNT: 当前的柱数
  • FINDHIGHBARS(DIF,BARSLAST(JZX2),SUMBARS(JZX1,2)-BARSLAST(JZX2),1): 从JZX2信号出现的最后一次开始,向前回溯两次JZX1信号间隔的柱数,找到DIF最高的柱数
  • FINDHIGH(Y,BARSLAST(JZX2),SUMBARS(JZX1,2)-BARSLAST(JZX2),1): 从JZX2信号出现的最后一次开始,向前回溯两次JZX1信号间隔的柱数,找到Y最高的值
  • DRAWNULL: 表示不绘制任何内容
  • COLORMAGENTA: 设置线条颜色为洋红色
  • DOTLINE: 设置线条类型为点线

代码解析

以上代码的目的是在MACD指标中查找前一个高点和低点。

  1. 首先计算两次JZX1信号出现的间隔的柱数,确保间隔超过2根柱。
  2. 然后从JZX2信号出现的最后一次开始,向前回溯两次JZX1信号间隔的柱数,找到DIF最高的柱数。
  3. 最后根据DIF最高的柱数找到Y的最高值,并绘制成洋红色的点线,表示前一个高点。

同理,前低公式也类似,只是将FINDHIGHBARS和FINDHIGH替换成FINDLOWBARS和FINDLOW,将COLORMAGENTA替换成COLORGREEN,表示前一个低点。

MACD 指标前高前低公式解析及代码实现

原文地址: https://www.cveoy.top/t/topic/nhPV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录