文章 "在 MQL5 中使用资源"

 

新文章 在 MQL5 中使用资源已发布:

MQL5程序不仅仅对例行计算进行自动化,还能够创建全功能图形环境。现在,创建真实互动控制的功能,几乎与经典编程语言一样丰富。如果您希望以 MQL5 编写一个完全成熟的独立程序,请使用MQL5中的资源。带有资源的程序更容易维护与分发。

作者:MetaQuotes Software Corp.

 

现在,在您的 MQL5 程序中加入资源变得更加容易,为此,MetaEditor 5 中增加了一个特殊的标准命令 "插入资源":



Вставка ресурсов

为便于在开发的应用程序中使用资源文件,"服务"菜单中提供了"插入资源 插入资源 "命令。该命令允许使用 #resource 指令将从指定文件夹中选择的资源文件声明插入到当前文件中。

执行该命令后,将出现一个标准的操作系统对话框,您必须在对话框中选择要在文件中声明的一个或多个资源文件。

  • 资源文件只能位于客户端的 /MQL5 目录内。不能使用该文件夹以外的文件。
  • 只有 *.wav 和 *.bmp 文件可用作资源文件。

之后,以下形式的相应指令将添加到当前文件的开头:

#resource "\Images\example.bmp"

#resource "resources\example.bmp"

资源文件的路径有两种指定方式:

  • 相对于当前文件(路径开头不带"\"符号)
    如果资源文件与当前文件位于同一文件夹或其子文件夹中,则使用此方法。
  • 相对于客户端的 /MQL5 目录(路径开头有"\"符号)
    在所有其他情况下使用此方法。
 

现在,在您的 MQL5 程序中加入资源变得更加容易。为此,MetaEditor 5 提供了专门的插入 资源 命令。


Resources Inserting

为了在开发的应用程序中更方便地使用资源文件,在"工具 " 菜单中执行了 "插入资源 插入资源 "命令。该命令允许在当前文件中使用 #resource 指令从选定文件夹中声明资源文件。

执行该命令后,操作系统的标准对话窗口就会出现。您应在其中选择一个或多个要在文件中声明的资源文件。

  • 资源文件只能位于客户端的 /MQL5 目录内。不能使用该目录之外的文件。
  • 只有 *.wav 和 *.bmp 文件可用作资源文件。

执行上述操作后,相应的指令将添加到文件开头。例如

#resource "\Images\example.bmp"

#resource "resources\example.bmp"

资源文件的路径有两种指定方式:

  • 相对于当前文件(路径开头不带"\"符号)
    这种方式用于资源文件与当前文件位于同一目录或其子文件夹中的情况。
  • 相对于客户端的 /MQL5 目录(在路径开头指定了"\"符号)
    这种方式用于所有其他情况。
 

MetaTrader 5 Client Terminal build 730
MQL5: Added support for storing indicators in EX5 resources. 

#resource "Examples\Fractals.ex5"

谁能举例说明如何使用该指标。

 
什么时候才能把主文件中通过 iCustom() 调用的指标文件作为资源插入?终端文件夹 中的垃圾太多了,根本分不清哪些属于哪些。这并不安全。我想学习如何将一个项目收集到一个 ex5 文件中。
 
MoneyJinn:
什么时候才能把主文件中通过 iCustom() 调用的指标文件作为资源插入?终端文件夹 中的垃圾太多了,根本分不清哪些属于哪些。这并不安全。我想了解如何将一个项目合并到一个 ex5 文件中。

这是在 2012 年 11 月 24 日的 730 版本中添加的:

  • MQL5:添加了在 EX5 资源中存储指标的支持。资源中的指标将无法使用自己的资源。


下面是一个简单的例子。首先在指定路径下编译标准 CHO 指标,然后编译此 Expert Advisor,然后将其放到图表上。

#resource "\\Indicators\\Examples\\CHO.EX5"
//+------------------------------------------------------------------+
//| 专家初始化函数|
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   int handle=iCustom(Symbol(),Period(),"::Indicators\\Examples\\CHO.EX5");
   if(handle!=INVALID_HANDLE)
     {
      Print("Indicator created!");
      IndicatorRelease(handle);
     }
//---
   return(0);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
  }

注意正确选择路径、区域修饰符::和正确使用斜线。

我们专门将指标打包成资源,以便您可以制作自给自足的完整产品。

 
Renat:

这是在 2012 年 11 月 24 日的第 730 版中添加的:

  • MQL5:添加了在 EX5 资源中存储指标的支持。资源中的指标将无法与自己的资源一起工作。

...

我怎么会错过这一刻?我一直在等待这个功能,但它已经存在很久了。谢谢。))
 
Renat:

谢谢。这正是我需要的。

 
是否可以在 ex4 (mt4)产品 中包含资源? 还是说 "资源 "是 ex5 (mt5) 的专属功能?
 
FinGeR:

谁能举例说明如何使用该指标。

示例:https://www.mql5.com/ru/forum/3409#comment_408123

#resource "\\Indicators\\Examples\\CHO.EX5"
//+------------------------------------------------------------------+
//| 专家初始化函数|
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   int handle=iCustom(Symbol(),Period(),"::Indicators\\Examples\\CHO.EX5");
   if(handle!=INVALID_HANDLE)
     {
      Print("Indicator created!");
      IndicatorRelease(handle);
     }
//---
   return(0);
  }
void OnDeinit(const int reason)
  {
  }
void OnTick()
  {
  }
Обсуждение статьи "Использование ресурсов в MQL5"
  • www.mql5.com
Программы на MQL5 позволяют не только автоматизировать рутинные вычисления, но и создавать полноценную графическую оболочку.
 
4evermaat:
是否可以在 ex4 (mt4) 产品中包含资源? 还是 "资源 "是 ex5 (mt5) 的专属功能?
仅适用于 MQL5。