初学者的问题 MQL5 MT5 MetaTrader 5 - 页 601

 

大家好!

给予建议、解决方案或打探哪里可以阅读。

解决一个问题:调用iCustom()时的错误处理...

// MQL4
void OnTick()
{
....
   ResetLastError();
   double val=iCustom(NULL,0,INDUK_NAME,..., i);
   if ((nErr=GetLastError())>0)
   {
      Print("Error in ",__FUNCTION__," code=",nErr);
      ExpertRemove();
      return;
   }
...
}

如果在测试器中调试EA 时,"iCustom "以 "数组超出范围 "的信息崩溃,则该代码结构不起作用。

 
数组超限是一个严重的错误,之后程序执行 停止,不再执行任何代码。这就是为什么你的错误处理程序不起作用。在这种情况下,你不需要错误代码--它白纸黑字地写在日志中,是什么导致了崩溃。甚至还指定了事情发生的线路和位置。
 
Sergei Vladimirov:
阵列超限是一个关键错误,之后程序 停止,不再执行任何代码。这就是为什么你的错误处理程序不起作用。在这种情况下,你不需要错误代码,它白纸黑字地写在日记中,是什么导致了崩溃。甚至还指定了事情发生的线路和位置。

1.我知道,错误在日志中,而且是至关重要的

2.我不明白为什么测试者不停止EA而要强制停止?

是否有任何处理异常的语言结构,以便在出现关键错误时,以方便的方式组织专家顾问及其与用户的互动?

 
fromme2you:

1.我知道,错误在日志中,而且是至关重要的

2.我不明白为什么测试者不停止EA而要强制停止?

3.是否有任何处理异常的语言结构,以方便地组织专家顾问及其与用户在关键错误情况下的互动?

如果在专家顾问的代码中发生了关键错误(例如,除以0,或数组超限),测试仪就会停止。

我认为,只有当我们在代码中引入适当的检查时,才能避免在测试器或真实代码中停止代码。这并不总是可行的。如果你使用别人的代码或在你的产品中粘贴别人的代码作为子程序,这一点尤其正确。

另一个棘手的方法是以编程方式读取日志文件。

 
Yuri Evseenkov:

如果顾问本身的代码中出现一个关键的错误(如除以0或超过一个数组),测试器就会停止....。

另一个棘手的方法是以编程方式读取日志。

我明白了,谢谢你的回答。

另一个问题:我怎样才能让MT4开发人员和MQL代码执行环境花些心思和精力来开发一种处理异常的语言,如我的例子中,或类似的语言?

 
fromme2you:

我明白了,谢谢你的回答。

另一个问题:如何才能让MT4和MQL代码执行环境的开发者动脑筋、动手脚,开发出一种异常处理的语言,比如我的例子中,或者类似的意思?

联系服务台,在论坛上创建一个主题/调查。

不久前,MT4还被埋没了。现在,这一趋势即使没有逆转,至少平台和语言最近也得到了显著升级。

 
Yuri Evseenkov:

联系服务台,创建一个论坛主题/调查。

不久前,MT4还被埋没了。现在,这一趋势即使没有逆转,至少平台和语言最近也有了明显的升级。

于2009年首次被埋葬

 

你好。如果你熟悉这个问题,请告知如何解决这个问题。我想通过分析例如50个最新的条形图,找到某个时间点的条形图的开盘价,例如01:00。我不知道如何在mql5中进行这项工作。


是否通过计算当前日期+将所需时间加入其中,然后加入二十四小时,这种方法在mql4上起作用。

据我了解,有一些特殊的结构有时间输出,但由于某些原因我不能使用它们。

提前感谢您的反馈。

如果有人能扔给我一小段代码以了解思考过程,我将非常感激。
 
Alex:

你好。如果你熟悉这个问题,请告知如何解决这个问题。我需要通过分析例如50个最新的条形图,找到某个时间段的条形图的开盘价,例如01:00。我不知道如何在mql5中进行这项工作。


是否通过计算当前日期+将所需时间加入其中,然后加入二十四小时,这种方法在mql4上起作用。

据我了解,有一些特殊的结构有时间输出,但由于某些原因我不能使用它们。

提前感谢您的回答。

如果有人能扔给我一点代码以了解思考过程,我将非常感激。
在一个指标中还是在一个专家顾问/脚本中?
 
问题:如果我在mt5中对一个挂单使用ordersendasync,它将如何工作?例如,它是否会在不等待回复的情况下发送买入止损,但当订单触发时,它是否会等待服务器对买入订单的回复?