MetaTrader 5平台更新将于2017年12月21日进行发布。
此更新将有以下功能变化:
功能全面的项目现在已可以在MetaEditor中使用。程序开发过程已变得更加方便。现在主要的MQL5程序文件不会呈现为项目文件。项目是独立的"MQPROJ"文件,它可以存储程序设置,编译所有已用文件的参数和信息。主要的项目设置可以从独立的对话框访问,所以,现在无需通过#property在源代码中指定项目设置。
为了便于进行项目工作,还提供了独立的导航标签。全部文件,例如包含文件,资源文件,标题文件和其他文件都被安排到这个标签类别中。所有文件都会自动添加到项目导航中。例如,如果您包括了一个新的MQH文件,那么它将自动出现在导航的“相关性”部分。在更新的MQL5存储在线库中也实现了对新项目的支持。现在,通过与MQL5.community其他成员的协作,开发大型项目变得更加方便。
为组项目提供了新的共享项目部分。在这部分创建的项目会即时发送到存储中:您可以授予其他用户的权限并立即开始协作。
当您在共享项目中编译一个项目时,根据程序类型,可执行文件EX5会自动复制到本地专家,指标或脚本目录。您可以轻松地在图表上启动程序,而无需手动复制文件。
MQL5存储操作中的新功能
为了实现对新共享项目的支持,我们已经更改了MQL5存储的操作协议。因此,平台更新后,您将需要检查核对来自存储的所有数据。更新过程中,MQL5存储中的所有数据都不会丢失或受到影响。
“检查存储”命令现在已经不可用。而是使用“激活MQL5存储”和“更新存储文件”命令来接收数据:
新项目:创建和操作细节的示例
新项目版块已被添加到MetaEditor。项目是一个mqproj文件,可以存储普通程序属性和有关所有已用文件的信息。现在,程序属性可以通过独立的MetaEditor对话框方便地管理,不必在源代码中手动更改属性(使用#property指令)。
如果您有可用代码,您可以通过使用“来自源代码的新项目”命令来轻松地测试新项目。
在已选文件所在的目录中,将会创建一个具有相同名称和mqproj为扩展名的新项目文件。通过#property在源代码中指定的主要程序属性将被自动添加到项目,包括名称,版权,版本,链接到开发者网站和程序描述。
编译MQL5程序的两个新选项已被添加到项目属性:
若要使用项目服务,请使用导航窗口独立的项目标签。项目服务中使用的所有文件都以方便的形式展示在这个标签。当项目从源文件生成时,所有使用的包含文件(在主MQ5文件及其包含文件中通过#include目录指定)都会自动添加到相关性部分。
当新的包含文件添加到源代码时,它也出现在项目导航中。已用的标题文件添加到标题版块;在项目中用作资源的图片,声音和其他MQL5程序也被添加到资源版块。带有源代码的MQ5文件显示在资源版块。在“设置和文件”版块,您可以添加其他文件,例如用于测试的set文件和图表模板。
使用快捷菜单命令向项目添加现有文件或从项目中删除文件。删除文件时请注意,因为您不但可以从项目中移除文件(解除绑定)还可以从硬盘中彻底删除文件:
创建一个新项目犹如创建普通MQL5程序一样简单。单击“新项目”,选择新程序类型并指定MQL5向导中的属性(例如名称,事件处理程序)。
若要获得可执行文件EX5,您可以打开这个项目并按下F7(编译命令)或打开程序的主MQ5文件并编译它。
MQL5存储中的共享项目:操作细节
共享项目是由一个单独的共享项目版块来管理。如果您还没有连接存储库,请在所需文件夹的快捷菜单执行“激活MQL5存储”命令。MetaEditor将检查您的存储库是否包含任何保存数据以及是否有任何共享项目可供您使用。所有可用的数据都将从存储库中恢复并上传到您的电脑(检验操作)。可用的组项目出现在共享项目版块。若要恢复项目,请在快捷菜单中执行“在存储库检查”。
若要创建新组项目,请选择共享项目文件夹并点击“新项目”:
然后完成标准的MQL5步骤:设置所需程序的类型,名称和属性。对于组项目,您应该使用清晰易懂的名称,以便其他参与者能够轻松地找到它们。项目名称中只可以使用没有空格的拉丁字符和数字。
创建的对象会立刻添加到MQL5存储库中。项目中使用的标准程序库文件不会添加到存储库中,您可以手动添加它们。
若要允许其他参与者使用项目,请打开项目属性。在这里,您可以通过指定MQL5.community登录名,以及为组工作设定公共参数,来向选定用户授予权限:
当您编译一个组项目时,根据程序类型,可执行文件EX5会自动复制到本地专家,指标或脚本目录。它允许您在程序端立即运行程序而不必手动复制到适当的目录。
MQL5存储中的公共项目:参与开发
如上所述,MQL5存储中的每个组项目都有公共设置:项目可以是私人的,也可以是对其他人公开的。现在,您可以免费加入的所有项目都显示在单独的“公共项目”标签。
每个人都可以找到心仪的项目并加入其开发过程。仅需单击加入,接收存储项目。
程序端:现在,交易平台允许创建合成金融工具,即基于一个或多个现有工具的交易品种。用户可以设置计算报价的公式,之后平台将会实时生成合成工具的报价并创建分钟历史记录。
如何工作
例如,您可以创建一个工具显示美元指数(USDX)。它使用下面的公式:
50.14348112 * pow(ask(EURUSD),-0.576) * pow(USDJPY,0.136) * pow(ask(GBPUSD),-0.119) * pow(USDCAD,0.091) * pow(USDSEK,0.042) * pow(USDCHF,0.036)
注意:USDEUR和USDGBP货币对在源美元指数公式中使用。因为平台中仅可以使用反向货币对,因此合成交易品种公式中使用的是负能量和买价,而不是卖价。平台将根据您交易商提供的其他六个交易品种报价来计算新工具的实时价格。价格变化将在市场报价窗口和图表上显示:
int CustomTicksAdd( const string symbol, // 交易品种名称 const MqlTick& ticks[] // 可以用于自定义交易品种的报价数据数组 );
MQL5:将通用数据集合 添加到标准程序库。它们包含基于模板定义数据集合的类和接口。这种新型数据集合提供了更加方便的应用程序开发和高速的数据处理表现。
程序库位于程序端工作目录的Include\Generic文件夹。
bool ArraySwap( void& array1[], // 第一数组 void& array2[] // 第二数组 );
//+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { //--- 作为二进制数组的模板文件 unsigned char my_template[]= { 0xFF,0xFE,0x3C, ... ,0x00 // 本例中数据数组被缩短 }; //--- 保存和应用模板 if(FileSave("my_template.tpl",my_template)) { Print("Custom template saved in \\MQL5\\Files"); if(ChartApplyTemplate(0,"\\Files\\my_template.tpl")) Print("Custom template applied to the current chart"); else Print("Failed to apply custom template"); } else Print("Failed to save custom template"); }
更新内容将通过实时更新系统提供。
越来越强啊。
MQL5:添加了新的线上服务——MQL5云保护 ---- 据说将来会支持ex4的云保护。
+100
203953
新版MetaTrader 5 Build 1730:MetaEditor项目和合成金融工具
MetaTrader 5平台更新将于2017年12月21日进行发布。
新版平台发布后,将停止对旧版本的桌面版和移动版的支持:
MQL5 存储操作协议发生变更
为了支持新的共享项目,我们更新了MQL5存储的操作协议。因此,平台更新后,您将需要检查核对来自存储的所有数据。更新过程中,MQL5存储中的所有数据都不会丢失或受到影响。
更新到新版平台之前,我们建议您执行提交操作,将所有本地更改发送到MQL5存储。
此更新将有以下功能变化:
功能全面的项目现在已可以在MetaEditor中使用。程序开发过程已变得更加方便。
现在主要的MQL5程序文件不会呈现为项目文件。项目是独立的"MQPROJ"文件,它可以存储程序设置,编译所有已用文件的参数和信息。主要的项目设置可以从独立的对话框访问,所以,现在无需通过#property在源代码中指定项目设置。
为了便于进行项目工作,还提供了独立的导航标签。全部文件,例如包含文件,资源文件,标题文件和其他文件都被安排到这个标签类别中。所有文件都会自动添加到项目导航中。例如,如果您包括了一个新的MQH文件,那么它将自动出现在导航的“相关性”部分。
在更新的MQL5存储在线库中也实现了对新项目的支持。现在,通过与MQL5.community其他成员的协作,开发大型项目变得更加方便。
为组项目提供了新的共享项目部分。在这部分创建的项目会即时发送到存储中:您可以授予其他用户的权限并立即开始协作。
当您在共享项目中编译一个项目时,根据程序类型,可执行文件EX5会自动复制到本地专家,指标或脚本目录。您可以轻松地在图表上启动程序,而无需手动复制文件。
MQL5存储操作中的新功能
为了实现对新共享项目的支持,我们已经更改了MQL5存储的操作协议。因此,平台更新后,您将需要检查核对来自存储的所有数据。更新过程中,MQL5存储中的所有数据都不会丢失或受到影响。
“检查存储”命令现在已经不可用。而是使用“激活MQL5存储”和“更新存储文件”命令来接收数据:
新项目:创建和操作细节的示例
新项目版块已被添加到MetaEditor。项目是一个mqproj文件,可以存储普通程序属性和有关所有已用文件的信息。现在,程序属性可以通过独立的MetaEditor对话框方便地管理,不必在源代码中手动更改属性(使用#property指令)。
如果您有可用代码,您可以通过使用“来自源代码的新项目”命令来轻松地测试新项目。
在已选文件所在的目录中,将会创建一个具有相同名称和mqproj为扩展名的新项目文件。通过#property在源代码中指定的主要程序属性将被自动添加到项目,包括名称,版权,版本,链接到开发者网站和程序描述。
编译MQL5程序的两个新选项已被添加到项目属性:
若要使用项目服务,请使用导航窗口独立的项目标签。项目服务中使用的所有文件都以方便的形式展示在这个标签。当项目从源文件生成时,所有使用的包含文件(在主MQ5文件及其包含文件中通过#include目录指定)都会自动添加到相关性部分。
当新的包含文件添加到源代码时,它也出现在项目导航中。已用的标题文件添加到标题版块;在项目中用作资源的图片,声音和其他MQL5程序也被添加到资源版块。带有源代码的MQ5文件显示在资源版块。在“设置和文件”版块,您可以添加其他文件,例如用于测试的set文件和图表模板。
使用快捷菜单命令向项目添加现有文件或从项目中删除文件。删除文件时请注意,因为您不但可以从项目中移除文件(解除绑定)还可以从硬盘中彻底删除文件:
创建一个新项目犹如创建普通MQL5程序一样简单。单击“新项目”,选择新程序类型并指定MQL5向导中的属性(例如名称,事件处理程序)。
若要获得可执行文件EX5,您可以打开这个项目并按下F7(编译命令)或打开程序的主MQ5文件并编译它。
MQL5存储中的共享项目:操作细节
共享项目是由一个单独的共享项目版块来管理。如果您还没有连接存储库,请在所需文件夹的快捷菜单执行“激活MQL5存储”命令。MetaEditor将检查您的存储库是否包含任何保存数据以及是否有任何共享项目可供您使用。所有可用的数据都将从存储库中恢复并上传到您的电脑(检验操作)。可用的组项目出现在共享项目版块。若要恢复项目,请在快捷菜单中执行“在存储库检查”。
若要创建新组项目,请选择共享项目文件夹并点击“新项目”:
然后完成标准的MQL5步骤:设置所需程序的类型,名称和属性。对于组项目,您应该使用清晰易懂的名称,以便其他参与者能够轻松地找到它们。项目名称中只可以使用没有空格的拉丁字符和数字。
创建的对象会立刻添加到MQL5存储库中。项目中使用的标准程序库文件不会添加到存储库中,您可以手动添加它们。
若要允许其他参与者使用项目,请打开项目属性。在这里,您可以通过指定MQL5.community登录名,以及为组工作设定公共参数,来向选定用户授予权限:
当您编译一个组项目时,根据程序类型,可执行文件EX5会自动复制到本地专家,指标或脚本目录。它允许您在程序端立即运行程序而不必手动复制到适当的目录。
MQL5存储中的公共项目:参与开发
如上所述,MQL5存储中的每个组项目都有公共设置:项目可以是私人的,也可以是对其他人公开的。现在,您可以免费加入的所有项目都显示在单独的“公共项目”标签。
每个人都可以找到心仪的项目并加入其开发过程。仅需单击加入,接收存储项目。

每个加入的用户都获得了只读权限。联系项目作者,提交您的更改。若要了解他或她的登录名,请通过快捷菜单打开项目属性。程序端:现在,交易平台允许创建合成金融工具,即基于一个或多个现有工具的交易品种。用户可以设置计算报价的公式,之后平台将会实时生成合成工具的报价并创建分钟历史记录。
如何工作
例如,您可以创建一个工具显示美元指数(USDX)。它使用下面的公式:
注意:USDEUR和USDGBP货币对在源美元指数公式中使用。因为平台中仅可以使用反向货币对,因此合成交易品种公式中使用的是负能量和买价,而不是卖价。
平台将根据您交易商提供的其他六个交易品种报价来计算新工具的实时价格。价格变化将在市场报价窗口和图表上显示:

若要创建一个新的自定义交易品种,请打开其规格窗口并指定公式:

出于方便考虑,公式编辑器在键入交易品种和函数名称时显示了可能的选项列表。当合成工具添加到市场报价时,开始计算这个工具的报价和1分钟柱。同时,所有需要计算合成价格的交易品种都会自动添加到市场报价。有关开始计算的条目也将被添加到平台的日志:合成交易品种USDX:处理已开始。
实时计算报价
每100毫秒检查一次计算中使用的交易品种价格(即每秒10次)。如果至少一次发生变化,那么就会计算合成交易品种的价格并且生成新报价。计算在三个线程中并行执行:卖价,买价和最后价。例如,如果计算公式是EURUSD*GBPUSD,那么合成交易品种的价格将按照以下规则计算:
并分别针对每个价格检查更改的有效性。例如,如果源工具只更改了卖价,那么也只会计算合成工具相应的价格。
创建分钟柱的历史记录
除了收集实时报价之外,这个平台还会创建合成工具的1分钟历史记录。使交易者能够查看与正常图表类似的合成交易品种图表,并使用对象和指标进行技术分析。
当交易者向市场报价添加合成工具时,平台将检查计算的分钟历史记录是否存在。如果不存在,那么将会创建最近60天的历史记录,其中包含50, 000个柱形图。如果平台设置中图表允许最多柱参数指定的值较低,那么将会应用相应的限制。
如果这个周期内一些柱形图创建的时间较早,那么该平台将会额外生成新柱形图。如果用户想要查看图表上较早时期的记录(向后滚动或从MQL5程序访问),更进一步的历史记录就会被创建。
合成工具的一分钟柱历史记录还可以根据公式中使用工具的一分钟柱(不是报价)进行计算。例如,若要计算合成交易品种1分钟柱的开盘价,平台会使用其公式中使用的交易品种的开盘价。最高价,最低价和收盘价也是以相同的方式进行计算。
如果所需的柱形图不适用于任何工具,那么平台将使用之前柱形图的收盘价。例如,EURUSD,USDJPY和GBPUSD这三个工具被使用。如果计算12:00对应的柱形图时USDJPY所需的柱形图不能使用,那么下面的价格将会用于计算:
如果分钟柱不能用于公式中使用的所有工具,那么合成工具对应的分钟柱也不会被计算。
绘制新的分钟柱形图
所有合成工具的新柱都将根据生成的报价进行创建(当前柱和后面的柱)。用于创建柱形图的价格取决于规格中的“图表模式”参数:
交易品种公式中可以使用哪些操作
价格数据和交易商提供的现有交易品种的一些属性可以用于计算合成价格。指定下面信息:
请注意数学运算的优先规则:
您可以在公式中使用常数:
您还可以在公式中使用除了MathSrand,MathRand和MathIsValidNumber以外,MQL5中支持的所有其他数学函数:所有函数仅使用短名称,例如fabs(),acos(),asin()等等。
CustomTicksAdd函数允许提供报价,如同从交易商服务器接收这些报价。数据被发送至市场报价窗口,而不是直接写入报价数据库。然后,程序端将报价从市场报价窗口保存至数据库。如果在一次调用中传递了大量的数据,那么函数行为就会发生变化来节省资源。如果传送的报价数超过256个,那么数据会被分成两个部分。较大的部分直接记录到报价数据库(类似CustomTicksReplace)。第二部分由最近的128个报价组成,被发送到市场报价,程序端从这里将报价保存到数据库。
现在,平台所有用户都可以使用这种类型的保护。若要保护您的文件,请在MetaEditor中执行以下命令:工具—MQL5云保护。MQL5云保护与市场中使用的机制的唯一不同点在于该文件与用户的电脑没有关联。通过MQL5云保护服务的保护,文件可以在任何电脑上运行,类似于普通的EX5文件。
如果交易品种图表使用卖价来构建(依据规格设置),则会显示这个交易品种的最高卖价和最低卖价。如果交易品种图表使用最后价来构建,则会显示这个交易品种的最高最后价和最低最后价。
如果市场报价至少包含一个基于最后价绘制图表的交易品种,那么除了最高价/最低价以外,最后价的列也会自动启用。

为了方便起见,更改的条目会按照以下规则突出显示:若要保存更改,请在窗口底部点击“应用更改”。
交易者可以向交易商发送请求,从桌面程序端直接开立一个真实账户。用户需要填写一份简单的请求表格和联系方式。在此之后,将为交易者创建一个特定的初步账户。然后,交易商联系交易者确定正式关系并将真实账户从初步账户转出。
MQL5:将通用数据集合 添加到标准程序库。它们包含基于模板定义数据集合的类和接口。这种新型数据集合提供了更加方便的应用程序开发和高速的数据处理表现。
程序库位于程序端工作目录的Include\Generic文件夹。
这个函数接受相同类型和相同维度的动态数组。对于多维数组,除了第一元素以外,所有维度中的元素数量都应该匹配。
程序端并不会计算该值。而是每分钟从操作系统请求一次。并不表示特定程序端和交易服务器之间的连接质量,因为这个百分比是为整个网络活动而计算,包括系统和后台活动。
TERMINAL_RETRANSMISSION属性添加到ENUM_TERMINAL_INFO_DOUBLE枚举,使用TerminalInfoDouble函数来获得它。

相同菜单允许以二进制或文本数组的形式添加到程序代码文件。另外,您还可以使用EA交易或指标转移图表模板:将您的模板插入到程序代码作为数组,然后使用FileSave函数将其保存到磁盘。然后,可以使用ChartApplyTemplate函数将模板从EA交易直接应用到所需的图表上。更新内容将通过实时更新系统提供。