路路发智能交易研发中心

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

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

[复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

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

  5. //--- indicator settings
  6. #property  indicator_separate_window
  7. #property  indicator_buffers 3
  8. #property  indicator_color1  Black
  9. #property  indicator_color2  Green
  10. #property  indicator_color3  Red
  11. //--- buffers
  12. double     ExtAOBuffer[];
  13. double     ExtUpBuffer[];
  14. double     ExtDnBuffer[];
  15. //---
  16. #define PERIOD_FAST  5
  17. #define PERIOD_SLOW 34
  18. //--- bars minimum for calculation
  19. #define DATA_LIMIT  34
  20. //+------------------------------------------------------------------+
  21. //| Custom indicator initialization function                         |
  22. //+------------------------------------------------------------------+
  23. void OnInit(void)
  24.   {
  25. //--- drawing settings
  26.    SetIndexStyle(0,DRAW_NONE);
  27.    SetIndexStyle(1,DRAW_HISTOGRAM);
  28.    SetIndexStyle(2,DRAW_HISTOGRAM);
  29.    IndicatorDigits(Digits+1);
  30.    SetIndexDrawBegin(0,DATA_LIMIT);
  31.    SetIndexDrawBegin(1,DATA_LIMIT);
  32.    SetIndexDrawBegin(2,DATA_LIMIT);
  33. //--- 3 indicator buffers mapping
  34.    SetIndexBuffer(0,ExtAOBuffer);
  35.    SetIndexBuffer(1,ExtUpBuffer);
  36.    SetIndexBuffer(2,ExtDnBuffer);
  37. //--- name for DataWindow and indicator subwindow label
  38.    IndicatorShortName("AO");
  39.    SetIndexLabel(1,NULL);
  40.    SetIndexLabel(2,NULL);
  41.   }
  42. //+------------------------------------------------------------------+
  43. //| Awesome Oscillator                                               |
  44. //+------------------------------------------------------------------+
  45. int OnCalculate(const int rates_total,
  46.                 const int prev_calculated,
  47.                 const datetime &time[],
  48.                 const double &open[],
  49.                 const double &high[],
  50.                 const double &low[],
  51.                 const double &close[],
  52.                 const long &tick_volume[],
  53.                 const long &volume[],
  54.                 const int &spread[])
  55.   {
  56.    int    i,limit=rates_total-prev_calculated;
  57.    double prev=0.0,current;
  58. //--- check for rates total
  59.    if(rates_total<=DATA_LIMIT)
  60.       return(0);
  61. //--- last counted bar will be recounted
  62.    if(prev_calculated>0)
  63.      {
  64.       limit++;
  65.       prev=ExtAOBuffer[limit];
  66.      }
  67. //--- macd
  68.    for(i=0; i<limit; i++)
  69.       ExtAOBuffer[i]=iMA(NULL,0,PERIOD_FAST,0,MODE_SMA,PRICE_MEDIAN,i)-
  70.                      iMA(NULL,0,PERIOD_SLOW,0,MODE_SMA,PRICE_MEDIAN,i);
  71. //--- dispatch values between 2 buffers
  72.    bool up=true;
  73.    for(i=limit-1; i>=0; i--)
  74.      {
  75.       current=ExtAOBuffer[i];
  76.       if(current>prev)
  77.          up=true;
  78.       if(current<prev)
  79.          up=false;
  80.       if(!up)
  81.         {
  82.          ExtDnBuffer[i]=current;
  83.          ExtUpBuffer[i]=0.0;
  84.         }
  85.       else
  86.         {
  87.          ExtUpBuffer[i]=current;
  88.          ExtDnBuffer[i]=0.0;
  89.         }
  90.       prev=current;
  91.      }
  92. //--- done
  93.    return(rates_total);
  94.   }
  95. //+------------------------------------------------------------------+
复制代码




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

使用道具 举报

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

本版积分规则


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

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

© 2009-2022 520EA.com EA668.com

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