mql金叉死叉报警

 

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 White
#property indicator_color3 Yellow
#property indicator_color4 White

//---- input parameters
extern int 均线周期1 = 8;
extern int 均线周期2 = 13;
extern int 类型1 = 1; //类型: 0-SMA; 1-EMA; 2-SMMA; 3-LWMA
extern int 类型2 = 1; //类型: 0-SMA; 1-EMA; 2-SMMA; 3-LWMA
extern string 类型说明 = "0-SMA; 1-EMA; 2-SMMA; 3-LWMA";
extern int 文字水平 = 0;
extern int 文字垂直 = 0;
extern int 文字大小 = 9;
extern string 文字标识 = "1";
extern color 文字颜色 = Aqua;
extern int 是否报警 = 1;
extern int 报警间隔多少秒 = 60;
extern int 报警多少次数停止 = 5;
extern int 是否发邮件 = 0;
//---- buffers
double Ma10[];
double Ma130[];
double Up[];
double Down[];
int TimeInMinute;
int FlagAlert = 0;
int alertnum = 0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
   //---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexStyle(2, DRAW_ARROW);
   SetIndexStyle(3, DRAW_ARROW);
   SetIndexBuffer(0, Ma10);
   SetIndexBuffer(1, Ma130);
   SetIndexBuffer(2, Up);
   SetIndexBuffer(3, Down);
   SetIndexArrow(2, 233);
   SetIndexArrow(3, 234);
   TimeInMinute = 0;
   //----
   return (0);
}

int start()
{
   int i;
   int limit;
   string Signal;
   int counted_bars = IndicatorCounted();
   //---- check for possible errors
   if (counted_bars < 0)
      return (-1);
   //---- the last counted bar will be recounted
   if (counted_bars > 0)
      counted_bars--;
   limit = Bars - counted_bars;
   for (i = limit - 1; i >= 0; i--)
   {
      Ma10[i] = iMA(NULL, 0, 均线周期1, 0, 类型1, PRICE_CLOSE, i);
      Ma130[i] = iMA(NULL, 0, 均线周期2, 0, 类型2, PRICE_CLOSE, i);
      if ((Ma10[i + 1] < Ma130[i + 1]) && (Ma10[i] > Ma130[i]) && (Close[i] > Ma10[i]) && (Close[i] > Ma130[i]))
      {
         Signal = "[" + Period() + "分钟]" + TimeHour(Time[i] + TimeInMinute) + "点" + TimeMinute(Time[i] + TimeInMinute) + "分 " + Symbol() + "在价格" + DoubleToStr(Close[i], 4) + "发生" + "金叉";
         writetext(文字标识, Signal, 5 + 文字水平, 25 + 文字垂直, 文字颜色, 文字大小);
         Up[i] = Low[i] - 3 * Point;
         if (i == 0)
         {
            if (FlagAlert == 0)
            {
               if (是否报警 == 1 && alertnum < 报警多少次数停止)
               {
                  if (MathMod(TimeCurrent(), 60) == 0)
                  {
                     Alert(Signal);
                     alertnum++;
                  }
               }
               if (是否发邮件 == 1)
                  SendMail(Signal, Signal);
               FlagAlert = 1;
            }
         }
      }
      if ((Ma10[i + 1] > Ma130[i + 1]) && (Ma10[i] < Ma130[i]) && (Close[i] < Ma10[i]) && (Close[i] < Ma130[i]))
      {
         Signal = "[" + Period() + "分钟]" + TimeMonth(Time[i] + TimeInMinute) + "点" + TimeMinute(Time[i] + TimeInMinute) + "分 " + Symbol() + "在价格" + DoubleToStr(Close[i], 4) + "发生" + "死叉";
         writetext(文字标识, Signal, 5 + 文字水平, 25 + 文字垂直, 文字颜色, 文字大小);
         Down[i] = High[i] + 3 * Point;
         if (i == 1)
         {
            if (FlagAlert == 0)
            {
               if (是否报警 == 1 && alertnum < 报警多少次数停止)
               {
                  if (MathMod(TimeCurrent(), 60) == 0)
                  {
                     Alert(Signal);
                     alertnum++;
                  }
               }
               if (是否发邮件 == 1)
                  SendMail(Signal, Signal);
               FlagAlert = 1;
            }
         }
      }
      else
      {
         FlagAlert = 0;
         alertnum == 0;
      }
   }
   return (0);
}
void writetext(string Labelname, string data, int x, int y, color ColorValue, int FontSize) //通过Object写文字
{
   ObjectDelete(Labelname);
   ObjectCreate(Labelname, OBJ_LABEL, 0, 0, 0);
   ObjectSetText(Labelname, data, FontSize, "Arial", ColorValue);
   ObjectSet(Labelname, OBJPROP_CORNER, 0);
   ObjectSet(Labelname, OBJPROP_XDISTANCE, x);
   ObjectSet(Labelname, OBJPROP_YDISTANCE, y);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值