路路发智能交易研发中心

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

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

    [复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

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

  5. #property indicator_separate_window
  6. #property indicator_buffers 1
  7. #property indicator_color1 DodgerBlue
  8. //--- input parameter
  9. input int InpMomPeriod=14;  // Momentum Period
  10. //--- buffers
  11. double ExtMomBuffer[];
  12. //+------------------------------------------------------------------+
  13. //| Custom indicator initialization function                         |
  14. //+------------------------------------------------------------------+
  15. int OnInit(void)
  16.   {
  17.    string short_name;
  18. //--- indicator line
  19.    SetIndexStyle(0,DRAW_LINE);
  20.    SetIndexBuffer(0,ExtMomBuffer);
  21. //--- name for DataWindow and indicator subwindow label
  22.    short_name="Mom("+IntegerToString(InpMomPeriod)+")";
  23.    IndicatorShortName(short_name);
  24.    SetIndexLabel(0,short_name);
  25. //--- check for input parameter
  26.    if(InpMomPeriod<=0)
  27.      {
  28.       Print("Wrong input parameter Momentum Period=",InpMomPeriod);
  29.       return(INIT_FAILED);
  30.      }
  31. //---
  32.    SetIndexDrawBegin(0,InpMomPeriod);
  33. //--- initialization done
  34.    return(INIT_SUCCEEDED);
  35.   }
  36. //+------------------------------------------------------------------+
  37. //| Momentum                                                         |
  38. //+------------------------------------------------------------------+
  39. int OnCalculate(const int rates_total,
  40.                 const int prev_calculated,
  41.                 const datetime &time[],
  42.                 const double &open[],
  43.                 const double &high[],
  44.                 const double &low[],
  45.                 const double &close[],
  46.                 const long &tick_volume[],
  47.                 const long &volume[],
  48.                 const int &spread[])
  49.   {
  50.    int i,limit;
  51. //--- check for bars count and input parameter
  52.    if(rates_total<=InpMomPeriod || InpMomPeriod<=0)
  53.       return(0);
  54. //--- counting from 0 to rates_total
  55.    ArraySetAsSeries(ExtMomBuffer,false);
  56.    ArraySetAsSeries(close,false);
  57. //--- initial zero
  58.    if(prev_calculated<=0)
  59.      {
  60.       for(i=0; i<InpMomPeriod; i++)
  61.          ExtMomBuffer[i]=0.0;
  62.       limit=InpMomPeriod;
  63.      }
  64.    else
  65.       limit=prev_calculated-1;
  66. //--- the main loop of calculations
  67.    for(i=limit; i<rates_total; i++)
  68.       ExtMomBuffer[i]=close[i]*100/close[i-InpMomPeriod];
  69. //--- done
  70.    return(rates_total);
  71.   }
  72. //+------------------------------------------------------------------+
复制代码



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

使用道具 举报

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

本版积分规则


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

GMT+8, 2024-12-22 16:31 , Processed in 0.150849 second(s), 26 queries .

© 2009-2022 520EA.com EA668.com

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