设为首页 收藏本站 切换语言

【双线MACD】双线MACD  

| 发表于 2021-7-28 13:00:49 | 显示全部楼层 |复制链接

#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   4
//--- plot DIF
#property indicator_label1  "DIF"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrSilver
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot DEA
#property indicator_label2  "DEA"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrYellow
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- plot macd hist+
#property indicator_label3  "Macd+"
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_color3  clrRed
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- plot macd hist-
#property indicator_label4  "Macd-"
#property indicator_type4   DRAW_HISTOGRAM
#property indicator_color4  clrAqua
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1


input int FastEMA = 12;
input int SlowEMA = 26;
input int MACDEMA = 9;


//--- indicator buffers
double         DIFBuffer[];
double         DEABuffer[];
double         MacdHistBuffer[];
double         MacdHistBuffer1[];
double w=0;
double w1=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,DIFBuffer);
   SetIndexBuffer(1,DEABuffer);
   SetIndexBuffer(2,MacdHistBuffer);
   SetIndexBuffer(3,MacdHistBuffer1);

   SetIndexEmptyValue(2,EMPTY_VALUE);
   SetIndexEmptyValue(3,EMPTY_VALUE);

   for(int i=0; i<4; i++)
      SetIndexDrawBegin(i,SlowEMA+MACDEMA);

   IndicatorDigits(Digits);

   IndicatorShortName("MACD("+(string)FastEMA+","+(string)SlowEMA+","+(string)MACDEMA+")");

   if(FastEMA<0 || SlowEMA<0 || MACDEMA<0)
      return(INIT_FAILED);

   w = 2.0/(MACDEMA + 1);
   w1= 1.0-w;

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int i,limit=0;
   if(rates_total<=0) return(0);
   if(prev_calculated<=0) limit=rates_total-1;
   else limit=rates_total-prev_calculated+1;
   double hst=0.0;
   for(i=limit; i>=0; i--)
     {
      if(i==rates_total-1) continue;
      DIFBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
      DEABuffer=w*DIFBuffer+w1*DEABuffer[i+1];
      hst = 2.0*(DIFBuffer-DEABuffer);
      if(hst>=0)
        {
         MacdHistBuffer=hst;
         MacdHistBuffer1=EMPTY_VALUE;
        }
      else
        {
         MacdHistBuffer1=hst;
         MacdHistBuffer=EMPTY_VALUE;
        }

     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

macd双线

macd双线

源码

源码
举报

评论 使用道具

精彩评论10

1691410097
DDD
| 发表于 2021-7-28 13:29:10 | 显示全部楼层
举报

点赞 评论 使用道具

AutoTradeEA
DD
| 发表于 2021-7-28 14:29:25 | 显示全部楼层
謝謝分享

還有個地方要修改

------------
   for(i=limit; i>=0; i--)
     {
      if(i==rates_total-1) continue;
      DIFBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
      DEABuffer=w*DIFBuffer+w1*DEABuffer[i+1];
      hst = 2.0*(DIFBuffer-DEABuffer);
      if(hst>=0)
        {
         MacdHistBuffer=hst;
         MacdHistBuffer1=EMPTY_VALUE;
        }
      else
        {
         MacdHistBuffer1=hst;
         MacdHistBuffer=EMPTY_VALUE;
        }

     }
------------
举报

点赞 评论 使用道具

AutoTradeEA
DD
| 发表于 2021-7-28 14:30:45 | 显示全部楼层
AutoTradeEA 发表于 2021-7-28 14:29
謝謝分享

還有個地方要修改

要加上 [ i ]
举报

点赞 1 评论 使用道具

时光微醺
DD
| 发表于 2021-7-28 17:18:13 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

daerwushen
DD
| 发表于 2021-7-28 21:53:35 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

Rose
D
| 发表于 2021-7-31 20:05:27 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

latage
未及格
| 发表于 2021-8-1 12:45:37 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

STONE1968
DD
| 发表于 2021-8-28 22:31:46 | 显示全部楼层
谢谢分享
举报

点赞 评论 使用道具

804111536
DD
| 发表于 2021-8-28 22:34:30 | 显示全部楼层
试试
举报

点赞 评论 使用道具

bba5675
DDD
| 发表于 2021-9-10 23:24:32 | 显示全部楼层
感谢分享
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)