MetaTrader 5 build 2485: MQL5中iCustom的改进和整体优化

优化并显著加快对自定义交易品种的柱形图历史编辑。此次改进还涉及到CustomRatesUpdate函数。

5 六月 2020

程序端

  1. 优化并显著加快对自定义交易品种的柱形图历史编辑。此次改进还涉及到CustomRatesUpdate函数。
  2. 修正将自定义交易品种设置导出到JSON文件的问题。
  3. 修复崩溃日志中报告的错误。

MQL5

  1. 这个版本提供了通过iCustom修改自定义指标加载算法。

    如果在自定义指标名称前指出反斜杠符号'\',则相对于MQL5根文件夹搜索EX5指标文件。因此,对于调用iCustom(Symbol(), Period(), "\FirstIndicator"...),该指标将被加载为MQL5\FirstIndicator.ex5。如果在此路径中找不到此文件,则返回错误error 4802 (ERR_INDICATOR_CANNOT_CREATE)。

    如果路径不是以反斜杠'\'开始,则将根据以下操作顺序搜索并加载指标:

    • 在调用程序EX5所在的文件夹中搜索EX5文件。例如,CrossMA.EX5 EA交易位于MQL5\Experts\MyExperts。它包含以下调用:iCustom(Symbol()、Period()、"SecondIndicator"...)。在这种情况下,将在MQL5\Experts\MyExperts\SecondIndicator.ex5中搜索指标。
    • 如果没有找到指标,则执行相对于指标根目录的搜索:MQL5\Indicators。因此,将搜索文件MQL5\Indicators\SecondIndicator.ex5。如果找不到指标,则该函数返回INVALID_HANDLE并引发错误4802(ERR_INDICATOR_CANNOT_CREATE)。

    如果在子目录(例如MyIndicators\ThirdIndicator)中设置指标路径,则在以下路径下从调用程序的文件夹(EA交易位于文件夹MQL5\Experts\MyExperts)中开始搜索:MQL5\Experts\MyExperts\MyIndicators\ThirdIndicator.ex5。失败的情况下,将搜索文件MQL5\Indicators\MyIndicators\ThirdIndicator.ex5。请注意,路径分隔符应指定为双反斜杠'\\'。例如:iCustom(Symbol()、Period()、"MyIndicators\\ThirdIndicator"...)

    另外,如果在程序代码中找到通过iCustom进行的自定义指标调用,则编译器将隐式添加"#property tester_indicator XXX"指令(如果未指定)。

  2. 优化并显著加快HistorySelect函数的速度,该函数可以请求交易和订单的历史记录。
  3. 修正通过CopyTicksRange函数进行报价请求时出现的错误。该错误可能导致范围的开始设置为开始日期而不是指定时间。
  4. 通过Alert函数,优化和显著加快预警显示的速度。
  5. 交易品种最后报价时间(以毫秒表示)的新属性YMBOL_TIME_MSC。该属性可以使用SymbolInfoInteger函数获取。