表示一个新的酒吧 - 页 2

 
Doerk Hilger:

最简单的方法。

static datetime tlastbar=0;

datetime tnewbar=iTime(NULL,PERIOD_CURRENT,0)。

bool isnewbar=tnewbar!=tlastbar。

tlastbar=tnewbar。

据我所知,该主题是针对mql5的。你的代码只是mql4的。
 
Willbur:

这是我的最终版本

事实上,我有点担心,因为这太容易了。

阿兰。如果你能发出祝福,那就太好了。

// -----------------------------------------------------------------------
bool NewBar(void)
{
bool iNewBar = false;
static double currPeriodProgress = 0;

   if(MathMod(TimeCurrent(),PeriodSeconds()) < currPeriodProgress) iNewBar = true;

   currPeriodProgress = MathMod(TimeCurrent(),PeriodSeconds());

   return(iNewBar);
}
// ------------------------------------------------------------------------
void OnTick()
{
    if(NewBar())     PlaySound("tick.wav");


来自科隆的问候
威尔伯

问题是它只能从OnTick()中使用。从其他事件处理程序中,你无法确定TimeCurrent()是否与你想要的符号有关。

我建议你不要做两次相同的计算。

bool NewBar(void)
  {
   bool iNewBar=false;
   static double currPeriodProgress=0;

   double lastPeriodProgress=MathMod(TimeCurrent(),PeriodSeconds());

   if(lastPeriodProgress<currPeriodProgress) iNewBar=true;

   currPeriodProgress=lastPeriodProgress;

   return(iNewBar);
  }
 
Alain Verleyen:
据我所知,这个话题是针对mql5的。你的代码只是mql4的。
你说这话是什么意思?它只是一个片段,可以包含在任何想要的地方,例如在他的NewBar()函数 中。而且我认为这是最简单、最快速、最可靠的解决方案。我把它包含在CSymbolInfo类的派生中,用于所有的时间段,它工作得很完美。
 

我在MQL4中使用了这些

//global
long Bars_in_Chart;

   // detected new bar
   if(Bars_in_Chart<Bars)
   {
      Bars_in_Chart=Bars;
   }
 
Doerk Hilger:
你说这话是什么意思?它只是一个片段,可以包含在任何想要的地方,例如在他的NewBar()函数中。而且我认为这是最简单、最快速、最可靠的解决方案。我在CSymbolInfo类的派生中为所有的时间框架分别包含了这个功能,而且效果很好。
mql5中没有iTime()函数
 
Alain Verleyen:
mql5中没有iTime()函数。
MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上不知道,我主要使用MT4。无论如何,谢谢你提供的关于限制的信息。
 
Doerk Hilger:
MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上我不知道,我主要使用MT4。无论如何,感谢你提供关于限制的信息。
不,mql4是用于MT4,mql5是用于MT5。他们有一个共同的功能 子集,但这是两个不同的语言。
 

MQL4的iTime()对交易者来说很容易理解,就像MQL4的大多数其他函数一样。

MQL5则不同,你需要一个计算机科学的学位来编写代码,这就是让大多数人失望的原因。

下面是我上周遇到的一个例子,当我想开始将我的MT4 EA转换到MT5时,我找到了解决方案。


 
Alain Verleyen:
不,mql4是用于MT4,mql5是用于MT5。它们有一个共同的功能子集,但这是2种不同的语言。

语言是相同的,但它们有一小部分功能 是不相同的;)总之,你的这个定义可能是对的。在这一点上,MQ做了很多事情来产生混乱。

 
Doerk Hilger:
MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上我不知道,我主要使用MT4。无论如何,谢谢你提供的关于限制的信息。
你知道是否有一个公共库/类来实现旧的iClose, iTime ...函数,只是为了兼容?在一步一步的转换过程中,这将是有意义的。
原因: