文章 "MQL5中的错误处理和日志记录"

 

新文章 MQL5中的错误处理和日志记录已发布:

本文着力介绍和软件错误处理相关的常见问题。另外,介绍了日志项及用MQL5工具包实现日志记录。

在大多数程序的执行过程中,错误总可能偶尔出现。对它们的恰当处理是高质量和稳定的软件重要的特征。本文将包含错误处理的主要方法,使用它们的一些建议以及通过MQL5工具包做日志记录。

错误处理是一个相对来说困难且有争议的话题。有许多错误处理的方法,每一种都有其特有的优点和缺点。很多方法可以合一起使用,但没有统一的标准 — 每一项特定的任务都需要一个合适的方法。


用MQL5工具包做日志记录

日志文件通常由程序创建以便于开发者查找失败/报错的原因,以及在某个特定的时刻评估系统条件等。除此之外,日志记录可用于软件分析。

日志等级

通常日志文件中接收到的信息类型各不相同,且需要不同的关注等级。日志等级用于将含有各种类型的信息区分开来,并且能够对显示信息的类别自定义。通常实现有几种日志等级:

  • Debug: 调试信息。这个等级的日志包含在开发、调试和试运行阶段。
  • Info: 信息性消息。它们携带各种系统活动的信息(例如,操作开始/结束,开/平仓等)。这个级别的消息通常不需要任何反馈,但能够明显有助于研究导致报错的事件链。
  • Warning: 告警信息。这个级别的信息可能包含导致报错的场景描述,无需用户介入。例如,如果计算后的交易量小于最低允许交易量,程序自动修正它,然后以《告警》级别在日志中记录下来。
  • Error: 需要干预的报错信息。这个日志记录级别通常用于与保存一个特定的文件,打开和修改订单等发生错误时。换句话说,此类错误程序无法自己修复,因此需要用户或开发者的干预。
  • 致命的: 严重的错误信息,程序无法继续运行。这个级别的报错信息需要立即处理,通过email,SMS等方式通知用户或者程序开发者。下面我们将向您展示在MQL5中如何使用PUSH通知。
2015.09.23 09:02:10, USDCAD (D1), INFO: 
2015.09.23 09:02:10, USDCAD (D1), INFO: ---------- OnInit() -----------
2015.09.23 09:02:10, USDCAD (D1), DEBUG: Example of debug message (LoggerTest.mq5; int OnInit(); Line: 36)
2015.09.23 09:02:10, USDCAD (D1), INFO: Example of info message (LoggerTest.mq5; int OnInit(); Line: 38)
2015.09.23 09:02:10, USDCAD (D1), WARNING: Example of warning message (LoggerTest.mq5; int OnInit(); Line: 40)
2015.09.23 09:02:10, USDCAD (D1), ERROR: Example of error message (LoggerTest.mq5; int OnInit(); Line: 42)
2015.09.23 09:02:10, USDCAD (D1), FATAL: Example of fatal message (LoggerTest.mq5; int OnInit(); Line: 44)

作者:Sergey Eremin