程序端
- 修正“导航”中MQL5程序的显示顺序。
MQL5
- 修正在输入组声明的程序中使用局部静态变量导致的编译错误。
VPS
- 修正请求主机日志。
Tester
- 改进显示三维优化图表。
- 修正前向优化过程中frames的接收。现在,主优化和前向优化的所有框架都可以在OnTesterDeinit函数中使用。
- 修正在“策略测试”设置中形成交易品种树状图。
添加旁遮普语(印度)的用户界面翻译。
文档已更新。
基于崩溃日志进行修复。
更新将通过实时更新系统提供。
添加旁遮普语(印度)的用户界面翻译。
文档已更新。
基于崩溃日志进行修复。
更新将通过实时更新系统提供。







class CFoo { public: struct Item { int x; }; }; //+------------------------------------------------------------------+ class CBar { public: struct Item { int x; }; }; CBar::Item item; // 正确声明Bar类的Item结构 Item item; // 错误声明添加namespace支持,它可以在MQL5应用程序使用第三方代码/程序库时提供更多的可能性。
#define PrintFunctionName() Print(__FUNCTION__) namespace NS { void func() { PrintFunctionName(); } struct C { int x; C() { PrintFunctionName(); }; }; } struct C { int x; C() { PrintFunctionName(); }; }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void func() { PrintFunctionName(); } //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { func(); NS::func(); C c; NS::C ac; }执行时,输出以下结果:
class A { void operator=(const A &)=delete; // 禁止对象复制操作符 }; class B : public A { }; //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { A a1,a2; B b1,b2; a1=a2; b1=b2; }在这个示例中,编译器将返回错误"a1=a2"和"b1=b2":
input int ExtBBPeriod = 20; // 布林带周期 input double ExtBBDeviation=2.0; // 偏差 input ENUM_TIMEFRAMES ExtSignalTF=PERIOD_M15; // BB时间周期 input group "Trend" input int ExtMAPeriod = 13; // Moving Average period input ENUM_TIMEFRAMES ExtTrendTF=PERIOD_M15; // MA 时间周期 input group "ExitRules" input bool ExtUseSL = true; // 使用“止损” input int Ext_SL_Points = 50; // StopLoss in points input bool ExtUseTP = false; // 使用“止盈” input int Ext_TP_Points = 100; // TakeProfit in points input bool ExtUseTS = true; // 使用“追踪止损” input int Ext_TS_Points = 30; // 以点数计算“追踪止损” input group "MoneyManagement" sinput double ExtInitialLot =0.1; // 初始手数值 input bool ExtUseAutoLot =true; // 自动手数计算 input group "Auxiliary" sinput int ExtMagicNumber =123456; // EA幻数 sinput bool ExtDebugMessage=true; // 打印调试信息当这种EA在“策略测试”中启动时,输入参数块可以通过双击组名来折叠或扩展,并且可以通过单个复选框选择组内的所有参数进行优化。

#import "lib.dll" int func(); #import //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int func() { return(0); } //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { Print( func() ); }在早期版本中,编译时会返回以下错误:
'func' - 对具有相同参数的重载函数的模糊调用可以是2种函数之一 int func() int func()现在,默认情况下将使用优先级更高的内置MQL5函数,来代替错误。导入的函数可以通过显式指定作用域来调用:
void OnStart() { Print( lib::func() ); }








if(condition) { //--- }
// 之前样式 ParameterGetRange("InpX",enable,x_cur,x_start,x_step,x_stop); // 之后样式 ParameterGetRange("InpX", enable, x_cur, x_start, x_step, x_stop);
// 之前样式 if(x==1&y!=2) { int a=0; } // 之后样式 if(x == 1 & y != 2) { int a = 0; }

用户界面翻译又添加了18种新语言:
该平台界面现已支持50种语言,涵盖40多亿人使用的语言。
若要设置界面语言,请进入程序端顶部的“查看\语言”菜单。
文档已更新。
基于崩溃日志进行修复。
更新将通过实时更新系统提供。
Python是一种用于开发脚本和应用程序的现代高水平编程语言。它包含用于机器学习、自动化处理以及数据分析和可视化的多个程序库。
MetaTrader Python程序包是为有效快速地从MetaTrader 5程序端直接通过处理器通信获得交易所数据而设计的。通过这种途径接收的数据可以进一步用于统计计算和机器学习。

连接
函数







bool TesterDeposit( double money //入金金额 );
文档已更新。
更新内容通过LiveUpdate系统提供。






#import "TestLib.dll" //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { int x=41; TestClass::Inc(x); Print(x); }TestClass的Inc函数C#代码如下:
public class TestClass { public static void Inc(ref int x) { x++; } }作为执行结果,脚本返回值为42。
struct MqlTick
{
datetime time; // 最后价格更新时间
double bid; // 当前卖价
double ask; // 当前买价
double last; // 最后一笔交易的当前价格
ulong volume; // 当前最后价格的交易量
long time_msc; // 以毫秒计算的最后价格更新时间
uint flags; // 报价标识
double volume_real; // 准确性更高的当前最后价格的交易量
};
struct MqlBookInfo { ENUM_BOOK_TYPE type; //ENUM_BOOK_TYPE枚举的订单类型 double price; // 价格 long volume; // 交易量 double volume_real; //准确度更高的交易量 };
//+------------------------------------------------------------------+ //| 默认包装 | //+------------------------------------------------------------------+ struct A { char a; int b; }; //+------------------------------------------------------------------+ //| 指定包装 | //+------------------------------------------------------------------+ struct B pack(4) { char a; int b; }; //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { Print("sizeof(A)=",sizeof(A)); Print("sizeof(B)=",sizeof(B)); } //+------------------------------------------------------------------+结论:
sizeof(A)=5 sizeof(B)=8在MSDN中了解关于结构中对齐方式的更多信息。
enum Main { PRICE_CLOSE_, PRICE_OPEN_ }; input Main Inp=PRICE_CLOSE; //+------------------------------------------------------------------+ //| 起始函数 | //+------------------------------------------------------------------+ void OnStart() { }编译器显示警告:
class X { }; void f(int) { } template<typename T> void a(T*) { new T(2); } // 以前,编译器在这里生成错误 template<typename T> void a() { f(0); } void OnInit() { a<X>(); }
更新将通过实时更新系统提供。

Documentation has been updated.

文档已更新。

Documentation has been updated.

文档已更新。






datetime iTime( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
double iOpen( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
double iHigh( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
double iLow( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
double iClose( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
long iVolume( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
int iBars( string symbol, // Symbol ENUM_TIMEFRAMES timeframe // Period );
int iBarShift( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period datetime time, // Time bool exact=false // Mode );
int iLowest( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int type, // Timeseries identifier int count, // Number of elements int start // Index );
int iHighest( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int type, // Timeseries identifier int count, // Number of elements int start // Index );
long iRealVolume( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
long iTickVolume( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
long iSpread( string symbol, // Symbol ENUM_TIMEFRAMES timeframe, // Period int shift // Shift );
void TesterHideIndicators( bool hide // Flag );



Documentation has been updated.






datetime iTime( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
double iOpen( string symbol, // 交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift // 转移 );
double iHigh( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
double iLow( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
double iClose( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
long iVolume( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
int iBars( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe // 周期 );
int iBarShift( string symbol, // 交易品种 ENUM_TIMEFRAMES timeframe, // 周期 datetime time, // 时间 bool exact=false // 模式 );
int iLowest( string symbol, // 交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int type, // 时间序列标识符 int count, // 元素数量 int start // 指数 );
int iHighest( string symbol, // 交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int type, // 时间序列标识符 int count, // 元素数量 int start // 指数 );
long iRealVolume( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
long iTickVolume( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
long iSpread( string symbol, //交易品种 ENUM_TIMEFRAMES timeframe, // 周期 int shift //转移 );
void TesterHideIndicators( bool hide //标识 );



文档已更新。
修正崩溃日志中报告的错误。
MetaTrader 5 build 1745 will be the last platform version supporting Microsoft Windows XP/2003/Vista. The minimum required operating system version for running MetaTrader 5 is Windows 7. However, we strongly recommend using the 64-bit version of Windows 10.
MetaTrader 5 build 1745将是最后一个支持Microsoft Windows XP/2003/Vista操作系统的平台版本。现在运行MetaTrader 5所需的最低操作系统版本为Windows 7。然而,我们仍强烈建议您使用64位版本的Windows 10。
新版平台发布后,将停止对旧版本的桌面版和移动版的支持:
为了支持新的共享项目,我们更新了MQL5存储的操作协议。因此,平台更新后,您将需要检查核对来自存储的所有数据。更新过程中,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[] // 可以用于自定义交易品种的报价数据数组 );CustomTicksAdd函数允许提供报价,如同从交易商服务器接收这些报价。数据被发送至市场报价窗口,而不是直接写入报价数据库。然后,程序端将报价从市场报价窗口保存至数据库。如果在一次调用中传递了大量的数据,那么函数行为就会发生变化来节省资源。如果传送的报价数超过256个,那么数据会被分成两个部分。较大的部分直接记录到报价数据库(类似CustomTicksReplace)。第二部分由最近的128个报价组成,被发送到市场报价,程序端从这里将报价保存到数据库。




功能全面的项目现在已可以在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存储中的每个组项目都有公共设置:项目可以是私人的,也可以是对其他人公开的。现在,您可以免费加入的所有项目都显示在单独的“公共项目”标签。
每个人都可以找到心仪的项目并加入其开发过程。仅需单击加入,接收存储项目。


//+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ 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"); }


| 函数 | 行为 |
|---|---|
| CustomSymbolCreate | 在指定组以指定名称创建一个自定义交易品种 |
| CustomSymbolDelete | 删除指定名称的自定义交易品种 |
| CustomSymbolSetInteger | 为自定义交易品种设置整型属性值 |
| CustomSymbolSetDouble | 为自定义交易品种设置真实型属性值 |
| CustomSymbolSetString | 为自定义交易品种设置字符串类型属性值 |
| CustomSymbolSetMarginRate | 根据订单类型和方向为自定义交易品种设置预付款比例 |
| CustomSymbolSetSessionQuote | 为指定交易品种和工作日设置指定报价期的起止时间 |
| CustomSymbolSetSessionTrade | 为指定交易品种和工作日设置指定交易时期的起止时间 |
| CustomRatesDelete | 在指定时间间隔内从自定义交易品种的价格历史记录中删除所有柱形图 |
| CustomRatesReplace | 在指定时间间隔内用MqlRates类型数组的数据完全替换自定义交易品种的价格历史记录 |
| CustomRatesUpdate | 将缺失的柱形图添加到自定义交易品种的历史记录并用MqlRates类型数组的数据替换现有的数据 |
| CustomTicksAdd | 将MqlTick类型的数组数据添加到自定义交易品种的价格历史记录。自定义交易品种必须在市场报价窗口中选择。 |
| CustomTicksDelete | 在指定时间间隔内从自定义交易品种的价格历史记录中删除所有报价 |
| CustomTicksReplace | 在指定时间间隔内用MqlTick类型数组的数据完全替换自定义交易品种的价格历史记录 |
程序库位于程序端工作目录的Include\Generic文件夹。
bool ArraySwap( void& array1[], // 第一数组 void& array2[] // 第二数组 );这个函数接受相同类型和相同维度的动态数组。对于多维数组,除了第一元素以外,所有维度中的元素数量都应该匹配。
The new version provides the possibility to view market statistics of financial instruments traded in the exchange execution mode. In order to view the statistics, open the menu of any symbol in Market Watch, and select 'Statistics'.

Operations with positions in the Trade tab have become more convenient. Now, a single tap on a position or order will reveal the detailed information and available actions, such as closing, modifying or increasing the position volume, as well as opening the chart of the position symbol.
新版本中可以查看交易所执行模式下进行交易的金融工具市场统计信息。打开市场报价(Market Watch)中任何交易品种的菜单,选择“统计”,来查看市场统计信息。

此外,新版本中交易标签的持仓操作也更加便捷。现在,单击持仓或订单将会显示详细信息和可用操作,例如平仓,更改或增加持仓交易量,以及打开持仓交易品种的图表。
In MetaTrader 5 for Android, it is now possible to easily create preliminary brokerage accounts. Select "Open a real account" from the menu and find your broker in the list of servers. You will only need attach two documents, including your identity document and a bank account statement. Your request will be forwarded to the broker, who may request additional information required for account opening.

MetaTrader 5 Android版,现在能够轻松创建初始真实交易账户。从菜单选择“开立真实账户”并在服务器列表中找到您的交易商。您只需附加两份文件,包括您的身份证明文件和银行账户账单。然后您的请求将被转发至交易商,同时开立账户时您可能会被要求提供其他信息。








union LongDouble { long long_value; double double_value; };与结构不同,不同的union成员属于同一个内存区。在该示例中,LongDouble函数的union是通过共享同一个内存区的long和double类型值来声明。请注意,由于long_value 和 double_value 变量重复(在内存中),所以union不可以同时存储long整型值和double真实型值(不同于结构)。 换句话说,MQL5程序随时都可以将union的数据处理为整型(long)或真实型(double)值。因此,union允许接收表示相同数据序列的两种(或更多种)选项。
union LongDouble
{
long long_value;
double double_value;
};
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//---
LongDouble lb;
//--- 获得并显示无效 -nan(ind) 数字
lb.double_value=MathArcsin(2.0);
printf("1. double=%f integer=%I64X",lb.double_value,lb.long_value);
//--- 最大的标准化数值 (DBL_MAX)
lb.long_value=0x7FEFFFFFFFFFFFFF;
printf("2. double=%.16e integer=%I64X",lb.double_value,lb.long_value);
//--- 最小的正标准化 (DBL_MIN)
lb.long_value=0x0010000000000000;
printf("3. double=%.16e integer=%.16I64X",lb.double_value,lb.long_value);
}
/* Execution result
1. double=-nan(ind) integer=FFF8000000000000
2. double=1.7976931348623157e+308 integer=7FEFFFFFFFFFFFFF
3. double=2.2250738585072014e-308 integer=0010000000000000
*/
class Foo { int value; public: string Description(void){return IntegerToString(value);}; //--- 默认构造函数 Foo(void){value=-1;}; //--- 参数化构造函数 Foo(int v){value=v;}; }; //+------------------------------------------------------------------+ //| 包括 Foo 类型对象的结构 | //+------------------------------------------------------------------+ struct MyStruct { string s; Foo foo; }; //+------------------------------------------------------------------+ //| 脚本程序起始函数 | //+------------------------------------------------------------------+ void OnStart() { //--- MyStruct a,b; Foo an_foo(5); a.s="test"; a.foo=an_foo; Print("a.s=",a.s," a.foo.Description()=",a.foo.Description()); Print("b.s=",b.s," b.foo.Description()=",b.foo.Description()); //--- Print("b=a"); b=a; //--- Print("a.s=",a.s," a.foo.Description()=",a.foo.Description()); Print("b.s=",b.s," b.foo.Description()=",b.foo.Description()); /* Execution result; a.s=test a.foo.Description()=5 b.s= b.foo.Description()=-1 b=a a.s=test a.foo.Description()=5 b.s=test b.foo.Description()=5 */ }在隐式操作符中执行对象的成员逐一复制。
| ENUM_POSITION_REASON | ENUM_DEAL_REASON | ENUM_ORDER_REASON | 原因描述 |
|---|---|---|---|
| POSITION_REASON_CLIENT | DEAL_REASON_CLIENT | ORDER_REASON_CLIENT | 激活从桌面程序端下单的订单而执行该操作 |
| POSITION_REASON_MOBILE | DEAL_REASON_MOBILE | ORDER_REASON_MOBILE | 激活从手机应用下单的订单而执行该操作 |
| POSITION_REASON_WEB | DEAL_REASON_WEB | ORDER_REASON_WEB | 激活从网页平台下单的订单而执行该操作 |
| POSITION_REASON_EXPERT | DEAL_REASON_EXPERT | ORDER_REASON_EXPERT | 激活从MQL5程序下单的订单而执行该操作,例如EA交易或脚本 |
| - | DEAL_REASON_SL | ORDER_REASON_SL | 激活止损而执行该操作 |
| - | DEAL_REASON_TP | ORDER_REASON_TP | 激活止赢而执行该操作 |
| - | DEAL_REASON_SO | ORDER_REASON_SO | 由于Stop out 事件而执行该操作 |
| - | DEAL_REASON_ROLLOVER | - | 由于展期交割而执行交易 |
| - | DEAL_REASON_VMARGIN | - | 收取变动预付款后执行交易 |
| - | DEAL_REASON_SPLIT | - | 股票或其他资产分割(价格减少)后执行交易,宣布分割期间拥有持仓 |

新版MetaTrader 5 iOS build 1605提供了轻松开立初始交易账户的可能性。请从菜单选择“开立真实账户”并在服务器列表寻找您的交易商。填写您的个人详细资料,附加两份可以确认您身份和地址的文档并提交请求。您的交易商将会为您开立一个真实账户,必要情况下您还需要提供其他信息。

新版MetaTrader 5 iOS还具有优化和重新设计邮箱版块的特性: