诚信为本
量力而为
当前位置:峰汇在线 ea编程知识 正文

MT4编程中如何限制一根K线只开仓(或报警)一次

在编写MT4报警指标或者智能交易EA程序时,是经常遇到这种要求在一根K线(蜡烛)上只报警一次或者只开仓一次的。对于报警指标来说,在一根K线上报警一次是为了避免频繁报警造成的干扰。对于智能交易EA程序来说,有些策略如果不限制一个K线只开仓一次,那么就有可能出现在相同的价位上重复无止尽的乱开仓。

限制一根K线只开仓(或报警)一次的方法有很多种。在不同的策略环境下,可以通过不同的编程技巧来实现。这里提供一个最古老的方法,参考代码如下:

bool NewBar()
{
   static datetime newtime = 0;
   if (newtime != Time[0])
   {
     newtime = Time[0];
     return(true);
   }
   return(false);
}

这个NewBar()函数的原理是定义一个静态时间变量,然后在新K线到来的时候将K线开盘时间赋值给变量,如此循环的定义当前K线为新K线。

有了新K线这个概念,那就可以执行一根K线只报警(或开仓)一次了。参考代码:

   if(NewBar())
   {
      Alert("新的K线开始了。");
      if(!OrderSend(Symbol(),OP_BUY,0.01,Ask,30,0,0,"",0,0,clrRed))
      {
      Print("OrderSend BUY Error #",GetLastError());
   }
版权所有转载请注明标题及链接:峰汇在线 » MT4编程中如何限制一根K线只开仓(或报警)一次