设为首页 收藏本站 切换语言
| 发表于 2024-11-25 15:31:02 | 显示全部楼层 |复制链接

由于外汇黄金交易的时间很长,我们不可能实时盯盘,经常由于错过信号而错过赚钱机会,那么有一款能够检测并发出警报的程序就很有必要了。
mt5 提供的周期众多列入M1 M2 M3 M4 H1,H2,H6等比mt4多出不少,那我们如何编写优雅的警报代码呢!下面请听我徐徐道来:
首先
我们准备个数组 用于存储各个图表周期 各个数组名_chart_period[]
ENUM_TIMEFRAMES//数据类_chart_period[]= {PERIOD_M1,PERIOD_M2,PERIOD_M3,PERIOD_M4,PERIOD_M5,PERIOD_M6,PERIOD_M10,PERIOD_M12,PERIOD_M15,   PERIOD_M30,PERIOD_H1,PERIOD_H2,PERIOD_H2,PERIOD_H3,PERIOD_H4,PERIOD_H6,PERIOD_H8,PERIOD_H12,PERIOD_D1  };
然后 我们声明一个类
在类里面声明必要的bands(布林带)指标参数,和存储布林带上下轨值的数组
在声明一个 working 函数用于判断值和发出警报
1.for 图表周期
2.引动指标赋值给句柄
3.句柄拷贝到数组
4.数组进行k线穿越判断
5.发出警报(设置警报间隔秒数
具体可以参考下文
class bands
  {
private:
int               bands_h;//句柄
int               bands_period;//布林周期
double            dev;//偏差
double            bands_mean[],bands_up[],bands_down[];//中上和下值数组

public:
void              working();//工作函数

                    bands(int bands_periods=14,double devs=2)
//有参构造
     {
     bands_period=bands_periods;
      dev=devs;
     }
                    ~bands(){};
  };
//+------------------------------------------------------------------void bands::working()
{
  int len = ArraySize(_chart_period);//获取图表周期长度
for(int i=0;i<len;i++)
   {
     bands_h=iBands(Symbol(),_chart_period,bands_period,0,dev,PRICE_CLOSE);//获取句柄
    指标.句柄至数组(bands_h,bands_mean,bands_up,bands_down,0,5);

     bool k_up = 交易.K线穿越某值(Symbol(),_chart_period,1,3,0,bands_up[1],bands_up[0]);
     bool K_down = 交易.K线穿越某值(Symbol(),_chart_period,2,3,0,bands_down[1],bands_down[0]);

     if(k_up&&交易.单位时间do1(30))
    {
      Alert(Symbol()+" "+EnumToString(_chart_period)+" 向  上上上  穿越布林带上轨了");
     }
     if(K_down&&交易.单位时间do2(30))
      {
      Alert(Symbol()+" "+EnumToString(_chart_period)+" 向 下下下  穿越布林带下轨了");
       }
    }
}
//+------------------------------------------------------------------+
最后   就是调用了  我们需要准备个EA模版
1.引入类
2.创造类对象
3.调用工作函数

//+------------------------------------------------------------------+
//|                                                   boll_alert.mq5 |

#include "bands.mqh"//引入类
input int _boll_period = 14;//布林周期
input double _devs = 2.0;//布林偏差
bands bd(_boll_period,_devs);//有参构造类对象
int OnInit()
{
//--- create timer
  EventSetTimer(60);

//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
  1. //+------------------------------------------------------------------+
  2. //|                                                        bands.mqh |
  3. //|                                  Copyright 2024, MetaQuotes Ltd. |
  4. //|                                             https://www.mql5.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Copyright 2024, MetaQuotes Ltd."
  7. #property link      "https://www.mql5.com"
  8. #property version   "1.00"
  9. #include <M5/指标类.mqh>
  10. 指标类 指标;
  11. #include <M5/交易类.mqh>
  12. 交易类 交易;
  13. ENUM_TIMEFRAMES     _chart_period[]= {PERIOD_M1,PERIOD_M2,PERIOD_M3,PERIOD_M4,PERIOD_M5,PERIOD_M6,PERIOD_M10,PERIOD_M12,PERIOD_M15,
  14.                                       PERIOD_M30,PERIOD_H1,PERIOD_H2,PERIOD_H2,PERIOD_H3,PERIOD_H4,PERIOD_H6,PERIOD_H8,PERIOD_H12,PERIOD_D1
  15.                                      };
  16. //+------------------------------------------------------------------+
  17. //|                                                                  |
  18. //+------------------------------------------------------------------+
  19. class bands
  20.   {
  21. private:
  22.    int               bands_h;//句柄
  23.    int               bands_period;//布林周期
  24.    double            dev;//偏差
  25.    double            bands_mean[],bands_up[],bands_down[];//中上和下值数组
  26. public:
  27.    void              working();//工作函数
  28.                      bands(int bands_periods=14,double devs=2)
  29.      {
  30.       bands_period=bands_periods;
  31.       dev=devs;
  32.      }
  33.                     ~bands();
  34.   };
  35. //+------------------------------------------------------------------+
  36. //|                                                                  |
  37. //+------------------------------------------------------------------+
  38. //+------------------------------------------------------------------+
  39. //|                                                                  |
  40. //+------------------------------------------------------------------+
  41. bands::~bands()
  42.   {
  43.   }
  44. //+------------------------------------------------------------------+
  45. void bands::working()
  46.   {
  47.    int len = ArraySize(_chart_period);
  48.    for(int i=0;i<len;i++)
  49.      {
  50.       bands_h=iBands(Symbol(),_chart_period[i],bands_period,0,dev,PRICE_CLOSE);
  51.       指标.句柄至数组(bands_h,bands_mean,bands_up,bands_down,0,5);
  52.       bool k_up = 交易.K线穿越某值(Symbol(),_chart_period[i],1,3,0,bands_up[1],bands_up[0]);
  53.       bool K_down = 交易.K线穿越某值(Symbol(),_chart_period[i],2,3,0,bands_down[1],bands_down[0]);
  54.       if(k_up&&交易.单位时间do1(30))
  55.         {
  56.          Alert(Symbol()+" "+EnumToString(_chart_period[i])+" 向  上上上  穿越布林带上轨了");
  57.         }
  58.       if(K_down&&交易.单位时间do2(30))
  59.         {
  60.          Alert(Symbol()+" "+EnumToString(_chart_period[i])+" 向 下下下  穿越布林带下轨了");
  61.         }
  62.      }
  63.   }
  64. //+------------------------------------------------------------------+
  65. //+------------------------------------------------------------------+
  66. //|                                                   boll_alert.mq5 |
  67. //|                                  Copyright 2024, MetaQuotes Ltd. |
  68. //|                                             https://www.mql5.com |
  69. //+------------------------------------------------------------------+
  70. //+------------------------------------------------------------------+
  71. //| Expert initialization function                                   |
  72. //+------------------------------------------------------------------+
  73. #include "bands.mqh"
  74. input int _boll_period = 14;//布林周期
  75. input double _devs = 2.0;//布林偏差
  76. bands bd(_boll_period,_devs);
  77. int OnInit()
  78.   {
  79. //--- create timer
  80.    EventSetTimer(60);
  81.    
  82. //---
  83.    return(INIT_SUCCEEDED);
  84.   }
  85. //+------------------------------------------------------------------+
  86. //| Expert deinitialization function                                 |
  87. //+------------------------------------------------------------------+
  88. void OnDeinit(const int reason)
  89.   {
  90. //--- destroy timer
  91.    EventKillTimer();
  92.    
  93.   }
  94. //+------------------------------------------------------------------+
  95. //| Expert tick function                                             |
  96. //+------------------------------------------------------------------+
  97. void OnTick()
  98.   {
  99. //---
  100.    bd.working();
  101.   }
  102. //+------------------------------------------------------------------+
  103. //| Timer function                                                   |
  104. //+------------------------------------------------------------------+
  105. void OnTimer()
  106.   {
  107. //---
  108.    
  109.   }
  110. //+------------------------------------------------------------------+
复制代码

[codebuy=0]
  1. EventKillTimer();
  2.   }
  3. //+------------------------------------------------------------------+
  4. //| Expert tick function                                             |
  5. //+------------------------------------------------------------------+
  6. void OnTick()
  7. {
  8. //---
  9.   bd.working();//调用工作函数
  10. }
  11. //+------------------------------------------------------------------
复制代码
1a94f1bc4055c0731cf0e4c0651726b.png
6c7b4338984e8d25936bcbb62054800.png
c8ae9967be5a0ae721e9f099d189212.png
d03e02c633b033d8842499e2f1e74da.png

boll_alert.ex5

290.68 KB, 下载次数: 0, 下载积分: 活跃度 -5  [下载]

评分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:NAN    参与人数:0    我的评分:未评 下载时遇到问题?
如果有帮助,就支持一下我呗
举报

评论 使用道具

精彩评论4

david6843
C
| 发表于 2024-12-11 23:39:08 | 显示全部楼层
VERY GOOD VERY GOOD
举报

点赞 评论 使用道具

dyt20
DD
| 发表于 2024-12-13 16:23:12 | 显示全部楼层
用的什么软件
举报

点赞 评论 使用道具

david6843
C
| 发表于 2024-12-17 10:38:19 | 显示全部楼层
楼主辛苦了这个牛了,支持下!
举报

点赞 评论 使用道具

wk6286999
DD
| 发表于 2024-12-23 22:01:57 | 显示全部楼层
学习学习,谢谢分享,有用
举报

点赞 评论 使用道具

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

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