路路发智能交易研发中心

 找回密码
 立即注册
查看: 4486|回复: 0

MT4智能交易编程示例 MACD指标

    [复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

积分
6521
帖子
2771
主题
2761
QQ
发表于 2014-4-4 14:38:41 | 显示全部楼层 |阅读模式
MT4智能交易编程示例 MACD指标
  1. #property copyright   "路路发智能交易研发中心"
  2. #property link        "http://www.ea668.com"
  3. #property description "Moving Averages Convergence/Divergence"
  4. #property strict

  5. #include <MovingAverages.mqh>

  6. //--- indicator settings
  7. #property  indicator_separate_window
  8. #property  indicator_buffers 2
  9. #property  indicator_color1  Silver
  10. #property  indicator_color2  Red
  11. #property  indicator_width1  2
  12. //--- indicator parameters
  13. input int InpFastEMA=12;   // Fast EMA Period
  14. input int InpSlowEMA=26;   // Slow EMA Period
  15. input int InpSignalSMA=9;  // Signal SMA Period
  16. //--- indicator buffers
  17. double    ExtMacdBuffer[];
  18. double    ExtSignalBuffer[];
  19. //--- right input parameters flag
  20. bool      ExtParameters=false;

  21. //+------------------------------------------------------------------+
  22. //| Custom indicator initialization function                         |
  23. //+------------------------------------------------------------------+
  24. int OnInit(void)
  25.   {
  26.    IndicatorDigits(Digits+1);
  27. //--- drawing settings
  28.    SetIndexStyle(0,DRAW_HISTOGRAM);
  29.    SetIndexStyle(1,DRAW_LINE);
  30.    SetIndexDrawBegin(1,InpSignalSMA);
  31. //--- indicator buffers mapping
  32.    SetIndexBuffer(0,ExtMacdBuffer);
  33.    SetIndexBuffer(1,ExtSignalBuffer);
  34. //--- name for DataWindow and indicator subwindow label
  35.    IndicatorShortName("MACD("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
  36.    SetIndexLabel(0,"MACD");
  37.    SetIndexLabel(1,"Signal");
  38. //--- check for input parameters
  39.    if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
  40.      {
  41.       Print("Wrong input parameters");
  42.       ExtParameters=false;
  43.       return(INIT_FAILED);
  44.      }
  45.    else
  46.       ExtParameters=true;
  47. //--- initialization done
  48.    return(INIT_SUCCEEDED);
  49.   }
  50. //+------------------------------------------------------------------+
  51. //| Moving Averages Convergence/Divergence                           |
  52. //+------------------------------------------------------------------+
  53. int OnCalculate (const int rates_total,
  54.                  const int prev_calculated,
  55.                  const datetime& time[],
  56.                  const double& open[],
  57.                  const double& high[],
  58.                  const double& low[],
  59.                  const double& close[],
  60.                  const long& tick_volume[],
  61.                  const long& volume[],
  62.                  const int& spread[])
  63.   {
  64.    int i,limit;
  65. //---
  66.    if(rates_total<=InpSignalSMA || !ExtParameters)
  67.       return(0);
  68. //--- last counted bar will be recounted
  69.    limit=rates_total-prev_calculated;
  70.    if(prev_calculated>0)
  71.       limit++;
  72. //--- macd counted in the 1-st buffer
  73.    for(i=0; i<limit; i++)
  74.       ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
  75.                     iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
  76. //--- signal line counted in the 2-nd buffer
  77.    SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);
  78. //--- done
  79.    return(rates_total);
  80.   }
  81. //+------------------------------------------------------------------+
复制代码



外汇智能交易,成就财富梦想!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


MT4编程培训|EA定制开发|QQ在线咨询|路路发智能交易研发中心

GMT+8, 2024-12-22 10:57 , Processed in 0.163812 second(s), 27 queries .

© 2009-2022 520EA.com EA668.com

快速回复 返回顶部 返回列表