表示一个新的酒吧 - 页 2 1234 新评论 Alain Verleyen 2016.04.30 15:33 #11 Doerk Hilger:最简单的方法。static datetime tlastbar=0;datetime tnewbar=iTime(NULL,PERIOD_CURRENT,0)。bool isnewbar=tnewbar!=tlastbar。tlastbar=tnewbar。 据我所知,该主题是针对mql5的。你的代码只是mql4的。 Alain Verleyen 2016.04.30 15:43 #12 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); } Doerk Hilger 2016.04.30 16:11 #13 Alain Verleyen: 据我所知,这个话题是针对mql5的。你的代码只是mql4的。 你说这话是什么意思?它只是一个片段,可以包含在任何想要的地方,例如在他的NewBar()函数 中。而且我认为这是最简单、最快速、最可靠的解决方案。我把它包含在CSymbolInfo类的派生中,用于所有的时间段,它工作得很完美。 Kok Hoong Cheang 2016.04.30 16:16 #14 我在MQL4中使用了这些//global long Bars_in_Chart; // detected new bar if(Bars_in_Chart<Bars) { Bars_in_Chart=Bars; } Alain Verleyen 2016.04.30 17:18 #15 Doerk Hilger: 你说这话是什么意思?它只是一个片段,可以包含在任何想要的地方,例如在他的NewBar()函数中。而且我认为这是最简单、最快速、最可靠的解决方案。我在CSymbolInfo类的派生中为所有的时间框架分别包含了这个功能,而且效果很好。 mql5中没有iTime()函数。 Doerk Hilger 2016.04.30 18:19 #16 Alain Verleyen: mql5中没有iTime()函数。 MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上不知道,我主要使用MT4。无论如何,谢谢你提供的关于限制的信息。 Alain Verleyen 2016.04.30 18:42 #17 Doerk Hilger: MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上我不知道,我主要使用MT4。无论如何,感谢你提供关于限制的信息。 不,mql4是用于MT4,mql5是用于MT5。他们有一个共同的功能 子集,但这是两个不同的语言。 Marco vd Heijden 2016.04.30 19:29 #18 MQL4的iTime()对交易者来说很容易理解,就像MQL4的大多数其他函数一样。MQL5则不同,你需要一个计算机科学的学位来编写代码,这就是让大多数人失望的原因。下面是我上周遇到的一个例子,当我想开始将我的MT4 EA转换到MT5时,我找到了解决方案。 Doerk Hilger 2016.04.30 19:31 #19 Alain Verleyen: 不,mql4是用于MT4,mql5是用于MT5。它们有一个共同的功能子集,但这是2种不同的语言。语言是相同的,但它们有一小部分功能 是不相同的;)总之,你的这个定义可能是对的。在这一点上,MQ做了很多事情来产生混乱。 Doerk Hilger 2016.04.30 23:41 #20 Doerk Hilger: MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上我不知道,我主要使用MT4。无论如何,谢谢你提供的关于限制的信息。 你知道是否有一个公共库/类来实现旧的iClose, iTime ...函数,只是为了兼容?在一步一步的转换过程中,这将是有意义的。 1234 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
最简单的方法。
static datetime tlastbar=0;
datetime tnewbar=iTime(NULL,PERIOD_CURRENT,0)。
bool isnewbar=tnewbar!=tlastbar。
tlastbar=tnewbar。
这是我的最终版本。
事实上,我有点担心,因为这太容易了。
阿兰。如果你能发出祝福,那就太好了。
// -----------------------------------------------------------------------
if(MathMod(TimeCurrent(),PeriodSeconds()) < currPeriodProgress) iNewBar = true;bool NewBar(void)
{
bool iNewBar = false;
static double currPeriodProgress = 0;
currPeriodProgress = MathMod(TimeCurrent(),PeriodSeconds());
return(iNewBar);
}
// ------------------------------------------------------------------------
void OnTick()
{
if(NewBar()) PlaySound("tick.wav");
来自科隆的问候
威尔伯
问题是它只能从OnTick()中使用。从其他事件处理程序中,你无法确定TimeCurrent()是否与你想要的符号有关。
我建议你不要做两次相同的计算。
据我所知,这个话题是针对mql5的。你的代码只是mql4的。
我在MQL4中使用了这些
你说这话是什么意思?它只是一个片段,可以包含在任何想要的地方,例如在他的NewBar()函数中。而且我认为这是最简单、最快速、最可靠的解决方案。我在CSymbolInfo类的派生中为所有的时间框架分别包含了这个功能,而且效果很好。
mql5中没有iTime()函数。
MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上我不知道,我主要使用MT4。无论如何,感谢你提供关于限制的信息。
MQL4的iTime()对交易者来说很容易理解,就像MQL4的大多数其他函数一样。
MQL5则不同,你需要一个计算机科学的学位来编写代码,这就是让大多数人失望的原因。
下面是我上周遇到的一个例子,当我想开始将我的MT4 EA转换到MT5时,我找到了解决方案。
不,mql4是用于MT4,mql5是用于MT5。它们有一个共同的功能子集,但这是2种不同的语言。
语言是相同的,但它们有一小部分功能 是不相同的;)总之,你的这个定义可能是对的。在这一点上,MQ做了很多事情来产生混乱。
MT5,真的吗?但MQL5不仅仅是MT5,至少我一直是这样理解的,因为MT4使用MQL5编译器。但事实上我不知道,我主要使用MT4。无论如何,谢谢你提供的关于限制的信息。