智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 384|回复: 2

老师请教

[复制链接]
发表于 2018-5-25 09:16:44 | 显示全部楼层 |阅读模式
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   4
//--- plot ma20
#property indicator_label1  "ma20"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot ma55
#property indicator_label2  "ma55"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_DOT
#property indicator_width2  1
//--- plot ma5
#property indicator_label3  "ma5"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrWhite
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- plot up
#property indicator_label4  "up"
#property indicator_type4   DRAW_ARROW
#property indicator_color4  clrRed
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1
//--- plot down
#property indicator_label5  "down"
#property indicator_type5   DRAW_ARROW
#property indicator_color5  clrAqua
#property indicator_style5  STYLE_SOLID
#property indicator_width5  1
//--- input parameters
input int      ma20=20;
input int      ma55=55;
input int      ma5=5;
//--- indicator buffers
double         ma20Buffer[];
double         ma55Buffer[];
double         ma5Buffer[];
double         upBuffer[];
double         downBuffer[];
double         CCI85Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ma20Buffer);
   SetIndexBuffer(1,ma55Buffer);
   SetIndexBuffer(2,ma5Buffer);
   SetIndexBuffer(3,upBuffer);
   SetIndexBuffer(4,downBuffer);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(3,225);
   SetIndexArrow(4,226);
   
//---
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  
{
   if(rates_total<85 || rates_total<ma20)
    {
      return(0);
    }
   int i=0;
   int limit;
   int mark=0;
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)limit++;
   for(i=0;i<limit;i++)
    {
      ma55Buffer[i]=iMA(NULL,0,ma55,0,MODE_SMA,PRICE_CLOSE,i);
      ma20Buffer[i]=iMA(NULL,0,ma20,0,MODE_SMA,PRICE_CLOSE,i);
      ma5Buffer[i]=iMA(NULL,0,ma5,0,MODE_SMA,PRICE_CLOSE,i);
        
    }
     for(i=0;i<limit;i++)
    {
      if(ma5Buffer[i]>ma20Buffer[i] && ma5Buffer[i+1]<ma20Buffer[i+1])
       {
         upBuffer[i]=ma20Buffer[i]-30*Point;
       }
      if(ma5Buffer[i]<ma20Buffer[i] && ma5Buffer[i+1]>ma20Buffer[i+1])
       {
         downBuffer[i]=ma20Buffer[i]+30*Point;
       }
    }
        
      
      for(mark=0;mark<1;mark++)
       {   
      if(iCCI(NULL,0,85,PRICE_CLOSE,0)>=-100 && iCCI(NULL,0,85,PRICE_CLOSE,1)<=-100 && mark<1  )
       {
        Alert(Symbol(),"多");
        SendNotification(Symbol()+"多");
        mark++;
       }
       }
      if (iCCI(NULL,0,85,PRICE_CLOSE,0)<=100 && iCCI(NULL,0,85,PRICE_CLOSE,1)>=100 && mark< 2 )
       {
         
       Alert(Symbol(),"空");
       SendNotification(Symbol()+"空");
       mark = 2;
      
       }
      
//--- return value of prev_calculated for next call
   return(rates_total);
  }

老师这个指标无法实现只提醒一次  每次都无数次提醒  还请老师指点  怎样才能只提醒一次
回复

使用道具 举报

发表于 2018-5-25 09:48:07 | 显示全部楼层
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   4
//--- plot ma20
#property indicator_label1  "ma20"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot ma55
#property indicator_label2  "ma55"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_DOT
#property indicator_width2  1
//--- plot ma5
#property indicator_label3  "ma5"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrWhite
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- plot up
#property indicator_label4  "up"
#property indicator_type4   DRAW_ARROW
#property indicator_color4  clrRed
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1
//--- plot down
#property indicator_label5  "down"
#property indicator_type5   DRAW_ARROW
#property indicator_color5  clrAqua
#property indicator_style5  STYLE_SOLID
#property indicator_width5  1
//--- input parameters
input int      ma20=20;
input int      ma55=55;
input int      ma5=5;
//--- indicator buffers
double         ma20Buffer[];
double         ma55Buffer[];
double         ma5Buffer[];
double         upBuffer[];
double         downBuffer[];
double         CCI85Buffer[];
datetime duotime;
datetime kongtime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ma20Buffer);
   SetIndexBuffer(1,ma55Buffer);
   SetIndexBuffer(2,ma5Buffer);
   SetIndexBuffer(3,upBuffer);
   SetIndexBuffer(4,downBuffer);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(3,225);
   SetIndexArrow(4,226);
   
//---
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  
{
   if(rates_total<85 || rates_total<ma20)
    {
      return(0);
    }
   int i=0;
   int limit;
   int mark=0;
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)limit++;
   for(i=0;i<limit;i++)
    {
      ma55Buffer[i]=iMA(NULL,0,ma55,0,MODE_SMA,PRICE_CLOSE,i);
      ma20Buffer[i]=iMA(NULL,0,ma20,0,MODE_SMA,PRICE_CLOSE,i);
      ma5Buffer[i]=iMA(NULL,0,ma5,0,MODE_SMA,PRICE_CLOSE,i);
        
    }
   for(i=0;i<limit;i++)
    {
      if(ma5Buffer[i]>ma20Buffer[i] && ma5Buffer[i+1]<ma20Buffer[i+1])
       {
         upBuffer[i]=ma20Buffer[i]-30*Point;
       }
      if(ma5Buffer[i]<ma20Buffer[i] && ma5Buffer[i+1]>ma20Buffer[i+1])
       {
         downBuffer[i]=ma20Buffer[i]+30*Point;
       }
    }   
   if(iCCI(NULL,0,85,PRICE_CLOSE,0)>=-100 && iCCI(NULL,0,85,PRICE_CLOSE,1)<=-100)
    {
      if(duotime!=Time[0])
       {
        Alert(Symbol(),"多");
        SendNotification(Symbol()+"多");
        duotime=Time[0];
       }
    }
   if (iCCI(NULL,0,85,PRICE_CLOSE,0)<=100 && iCCI(NULL,0,85,PRICE_CLOSE,1)>=100)
    {
      if(kongtime!=Time[0])
       {
          Alert(Symbol(),"空");
          SendNotification(Symbol()+"空");
          kongtime=Time[0];
       }
    }
   return(rates_total);
  }
回复 支持 反对

使用道具 举报

发表于 2018-5-25 09:51:08 | 显示全部楼层
另外一种方式 就是满足条件报警,以后再满足条件 再报警。
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   4
//--- plot ma20
#property indicator_label1  "ma20"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot ma55
#property indicator_label2  "ma55"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_DOT
#property indicator_width2  1
//--- plot ma5
#property indicator_label3  "ma5"
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrWhite
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- plot up
#property indicator_label4  "up"
#property indicator_type4   DRAW_ARROW
#property indicator_color4  clrRed
#property indicator_style4  STYLE_SOLID
#property indicator_width4  1
//--- plot down
#property indicator_label5  "down"
#property indicator_type5   DRAW_ARROW
#property indicator_color5  clrAqua
#property indicator_style5  STYLE_SOLID
#property indicator_width5  1
//--- input parameters
input int      ma20=20;
input int      ma55=55;
input int      ma5=5;
//--- indicator buffers
double         ma20Buffer[];
double         ma55Buffer[];
double         ma5Buffer[];
double         upBuffer[];
double         downBuffer[];
double         CCI85Buffer[];
int duokaiguan=1;
int kongkaiguan=1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ma20Buffer);
   SetIndexBuffer(1,ma55Buffer);
   SetIndexBuffer(2,ma5Buffer);
   SetIndexBuffer(3,upBuffer);
   SetIndexBuffer(4,downBuffer);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   SetIndexArrow(3,225);
   SetIndexArrow(4,226);
   
//---
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  
{
   if(rates_total<85 || rates_total<ma20)
    {
      return(0);
    }
   int i=0;
   int limit;
   int mark=0;
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)limit++;
   for(i=0;i<limit;i++)
    {
      ma55Buffer[i]=iMA(NULL,0,ma55,0,MODE_SMA,PRICE_CLOSE,i);
      ma20Buffer[i]=iMA(NULL,0,ma20,0,MODE_SMA,PRICE_CLOSE,i);
      ma5Buffer[i]=iMA(NULL,0,ma5,0,MODE_SMA,PRICE_CLOSE,i);
        
    }
   for(i=0;i<limit;i++)
    {
      if(ma5Buffer[i]>ma20Buffer[i] && ma5Buffer[i+1]<ma20Buffer[i+1])
       {
         upBuffer[i]=ma20Buffer[i]-30*Point;
       }
      if(ma5Buffer[i]<ma20Buffer[i] && ma5Buffer[i+1]>ma20Buffer[i+1])
       {
         downBuffer[i]=ma20Buffer[i]+30*Point;
       }
    }   
   if(iCCI(NULL,0,85,PRICE_CLOSE,0)>=-100 && iCCI(NULL,0,85,PRICE_CLOSE,1)<=-100)
    {
      if(duokaiguan==1)
       {
        Alert(Symbol(),"多");
        SendNotification(Symbol()+"多");
        duokaiguan=0;
       }
    }
   if(0)
    {
      duokaiguan=1;
    }
   if (iCCI(NULL,0,85,PRICE_CLOSE,0)<=100 && iCCI(NULL,0,85,PRICE_CLOSE,1)>=100)
    {
      if(kongkaiguan==1)
       {
          Alert(Symbol(),"空");
          SendNotification(Symbol()+"空");
          kongkaiguan=0;
       }
    }
    if(0)
    {
      kongkaiguan=1;
    }
   return(rates_total);
  }
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-11-19 00:01 , Processed in 0.072664 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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