如何在产生新K线时执行邮件报警?

 
刚刚接触EA程序化交易,真正的小小白。
准备写一个简单的邮件报警程序,辅助日常交易。
策略思路:
比较上一根K线收盘价和开盘价大小,如果收盘价大于开盘价,则发出做多邮件报警,反之则发出做空报警。

现在写好了,可以运行发出正确的邮件报警,但是遇到一个问题:
只能执行一次邮件报警,当出现新的K线时,不能持续触发条件执行动作。

我的想法:
能不能用K线的index值做标记,当index新增时,再次执行策略,不知道怎么写。

下面是代码情况,各位大神帮帮忙:
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

int mark = 0;

int OnInit()

  {
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {

  if(iClose(Symbol(),0,1) > iOpen(Symbol(),0,1) && iOpen(Symbol(),0,1)-iLow(Symbol(),0,1) >= iHigh(Symbol(),0,1)-iClose(Symbol(),0,1) && mark != 1)
  {
  SendMail(Symbol(),"请注意交易提醒:日K线级别,阳线做多!");
  mark = 1;
  }

  if(iClose(Symbol(),0,1) < iOpen(Symbol(),0,1) && iHigh(Symbol(),0,1)-iOpen(Symbol(),0,1) >= iClose(Symbol(),0,1)-iLow(Symbol(),0,1) && mark != 1)
  {
  SendMail(Symbol(),"请注意交易提醒:日K线级别,阴线做空!");
  mark = 1;
  } 
     
  }
 

When you post code please use the CODE button (Alt-S)!

Use the CODE button

Thank you.

 

最好用插入代码的格式显示代码。

你可以用K线时间来控制报警。

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

datetime mark = 0;

int OnInit()

{
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
{

   if(iClose(Symbol(),0,1) > iOpen(Symbol(),0,1) && iOpen(Symbol(),0,1)-iLow(Symbol(),0,1) >= iHigh(Symbol(),0,1)-iClose(Symbol(),0,1) && mark != iTime(Symbol(),PERIOD_CURRENT,0))
   {
      SendMail(Symbol(),"请注意交易提醒:日K线级别,阳线做多!");
      mark = iTime(Symbol(),PERIOD_CURRENT,0);
   }

   if(iClose(Symbol(),0,1) < iOpen(Symbol(),0,1) && iHigh(Symbol(),0,1)-iOpen(Symbol(),0,1) >= iClose(Symbol(),0,1)-iLow(Symbol(),0,1) && mark != iTime(Symbol(),PERIOD_CURRENT,0))
   {
      SendMail(Symbol(),"请注意交易提醒:日K线级别,阴线做空!");
      mark = iTime(Symbol(),PERIOD_CURRENT,0);
   }

}
//+------------------------------------------------------------------+
 
Ziheng Zhuang:

最好用插入代码的格式显示代码。

你可以用K线时间来控制报警。

真的非常感谢您,刚刚测试了,用K线时间有效,MQL5社区真是太棒了。

第一次发帖子,下次会注意用插入代码格式的。