路路发智能交易研发中心

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

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

  [复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

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

  5. #include <MovingAverages.mqh>

  6. //--- indicator settings
  7. #property  indicator_separate_window
  8. #property  indicator_buffers 1
  9. #property  indicator_color1  Silver
  10. #property  indicator_width1  2
  11. //--- indicator parameters
  12. input int InpFastEMA=12;   // Fast EMA Period
  13. input int InpSlowEMA=26;   // Slow EMA Period
  14. input int InpSignalSMA=9;  // Signal SMA Period
  15. //--- indicator buffers
  16. double ExtOsmaBuffer[];
  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. //--- 2 additional buffers are used for counting.
  27.    IndicatorBuffers(3);
  28. //--- drawing settings
  29.    SetIndexStyle(0,DRAW_HISTOGRAM);
  30.    SetIndexDrawBegin(0,InpSignalSMA);
  31.    IndicatorDigits(Digits+2);
  32. //--- 3 indicator buffers mapping
  33.    SetIndexBuffer(0,ExtOsmaBuffer);
  34.    SetIndexBuffer(1,ExtMacdBuffer);
  35.    SetIndexBuffer(2,ExtSignalBuffer);
  36. //--- name for DataWindow and indicator subwindow label
  37.    IndicatorShortName("OsMA("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
  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 Average of Oscillator                                     |
  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. //--- main loop
  79.    for(i=0; i<limit; i++)
  80.       ExtOsmaBuffer[i]=ExtMacdBuffer[i]-ExtSignalBuffer[i];
  81. //--- done
  82.    return(0);
  83.   }
  84. //+------------------------------------------------------------------+
复制代码



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

使用道具 举报

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

本版积分规则


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

GMT+8, 2024-12-22 15:58 , Processed in 0.149694 second(s), 26 queries .

© 2009-2022 520EA.com EA668.com

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