MetaTrader 5客户端变更列表 - 页 2

 

MetaTrader 5 平台更新 Build 1045:新WebRequest

MetaTrader 5平台更新将于2015年1月16日,星期五发布。 它将包含如下变化:

  1. 程序端:MetaTrader 5平台虚拟主机支持的准备工作。虚拟主机服务允许您直接从您的MetaTrader 5租用一个程序端,进行全天候无干扰的操作。一个主要特点就是选择一个距离交易商服务器最近的,最小网络延迟的服务器。




  2. 测试代理现在只能在64位系统工作。这是为遵循IT行业发展需要而做出的决定。切换到新技术会提高计算性能以及进一步发展MQL5云网络。


    平台组件的变化:

    • 远程代理和MQL5云网络代理不再提供32位程序端的使用。不再显示代理列表,而是显示“仅提供64位版本”的信息。
    • MetaTester 5代理经理仅提供64位版本。因此,仅可以在64位系统安装代理。


  3. 程序端:修正在程序端设置中手动指定语言列表时的语言消息过滤。
  4. 程序端:优化处理大量的持仓订单。
  5. 程序端:加速发送交易请求。
  6. 程序端:调整界面已适用于高分辨率屏幕 - 全高清甚至更高。
  7. MQL5:添加了新格式的WebRequest 函数:
    int WebRequest (string method, string url,string headers,int timeout, const char &data[], int data_size,char &result[], string &result_headers)
    您可以使用该函数明确地形成HTTP请求头的内容,为多种Web服务交互提供更灵活的机制。

  8. MQL5:添加了新的交易账户属性。这些属性可以通过AccountInfoDouble函数提供。

    • ACCOUNT_MARGIN_INITIAL - 账户的当前初始预付款。
    • ACCOUNT_MARGIN_MAINTENANCE - 账户的当前维持预付款。
    • ACCOUNT_ASSETS - 当前账户资产。
    • ACCOUNT_LIABILITIES - 当前账户负债。
    • ACCOUNT_COMMISSION_BLOCKED - 当前冻结的账户手续费。

  9. MQL5:添加了新的交易品种属性:

    • SYMBOL_OPTION_STRIKE - 期权合约执行价。该属性可以通过SymbolInfoDouble 函数获得。
    • SYMBOL_BASIS - 交易品种相关资产的名称。该属性可以通过 SymbolInfoString函数获得。
    • SYMBOL_OPTION_MODE - 选择mode,该值使用ENUM_SYMBOL_OPTION_MODE 枚举进行设置。 
    • SYMBOL_OPTION_RIGHT - 选择right,该值使用 ENUM_SYMBOL_OPTION_RIGHT 枚举进行设置。该属性可以通过SymbolInfoInteger函数获得。

  10. MQL5:添加了SymbolInfoMarginRate 函数 - 根据交易订单类型和方向获取初始和维持预付款的比例值。
  11. MQL5:修正了策略测试的ChartIndicatorName函数操作。
  12. MQL5:修正使用##编译包含名称替换的宏。
  13. MQL5:修正打开新文件时文件尾指标的重置错误。
  14. 修正崩溃日志中报告的错误。
  15. 更新文档。

更新将通过LiveUpdate系统提供。
 

MetaTrader 5平台更新 Build 1075:租赁市场产品

MetaTrader 5平台更新将于2015年,2月6日,星期五进行发布。 新版将包括以下变化:

MetaTrader 5客户端 build 1075
  1. 市场:MetaTrader 市场推出新功能,允许提供产品租赁1,3,6或12个月。 毫无疑问,租赁有利于开发人员及其客户。卖家可以显著提高用户对其产品的信心,给予客户以低成本来充分检验产品功能的机会。对于买家来说,产品租赁意味着另一个验证软件选择正确性的机会。与模拟版本不同,租赁的产品没有任何功能限制,只有时间限制。

    市场中的任何开发人员都可以选择是否提供其产品的租赁,以及产品的租赁价格。




    开发人员也可以选择不提供产品租赁,只出售无限期产品使用的正式许可证。

    如果产品允许租赁,则页面上会出现可能的租赁选项:时间和价格。点击“租赁”并选择租赁期。


    到期后,您既可以延续产品租赁期也可以购买产品的无限使用版。

  2. 程序端:修正计算错误和设置控制内置技术指标"Gator Oscillator"。
  3. 程序端:提升交易服务器连接点的扫描。
  4. 程序端:修正实时更新中偶然出现的错误。
  5. MQL5:新属性已添加到 ENUM_SIGNAL_BASE_STRING 枚举 - SIGNAL_BASE_CURRENCY 显示信号提供商的存款货币。该属性可以通过使用SignalBaseGetString函数来访问。
  6. MQL5:修正继承过程中确定父类成员访问权限的编译错误。
  7. MQL5:修正基于参数恒定重载类方法时出现的编译错误。
  8. 修正崩溃日志中报告的错误。
  9. 已更新文档。

更新将通过LiveUpdate系统提供。

 
未标题文档

MetaTrader 5 平台更新至Build 1085

MetaTrader 5 平台的新更新已经发布。它包括以下变化:

MetaTrader 5 客户端 build 1085
  1. 程序端:现在提供新的虚拟主机服务。用于交易账户的虚拟主机现在可以直接从客户端租赁。提供交易服务器的永久连接和EA交易和复制交易的不中断的计算机操作现在变得更加容易。

    虚拟服务器由MetaQuotes软件公司的合作公司来托管

    分配一个虚拟服务器
    若要在一个虚拟服务器接收虚拟程序端,请连接使用必要的交易账户并执行快捷菜单中的“注册虚拟服务器”命令。




    打开虚拟主机向导窗口。它显示虚拟主机网络如何工作。获取虚拟服务器的过程分为三步。首先,您需要了解如何准备迁移。之后,您将选择最近的最小延迟的虚拟服务器,以连接您的交易商交易服务器。




    您可以选择一天免费托管,提供给每个注册MQL5.community 的用户或选择一个提供服务的计划。最后,根据您的目标,选择数据迁移的方式:

    • 如果您想要同时启动EA交易/指标和复制交易,那么需要完整的迁移;
    • 如果不需要订阅信号,只需迁移EA交易和指标;
    • 只有交易复制 - 只迁移信号复制设置(无图表或程序)。

    选择迁移模式之后,您可以点击“立刻迁移”来即刻启动虚拟服务器或稍后随时执行这个命令。

    准备迁移
    启动虚拟程序端之前,您应该为它准备一个活跃的环境 - 图表,启动的指标和EA交易,信号复制参数和程序端设置。

    • 图表和市场报价 - 隐藏市场报价中的所有非必要的交易工具来减少交易流量。关闭非必要的图表。在程序端设置中,指定所需的“窗口最大柱”的值 - 在那之后应该重启程序端。
    • 指标和EA交易 - 向您的图表附加所需的EAs和指标。迁移过程中也会移动 市场上购买的和图表上启动的产品。 它们保留全部的功能,有效的激活数也不会减少。指标和EA交易的所有外部参数应该正确设置。
    • Email,FTP 和信号 - 如果EA交易要发送电邮,通过FTP上传数据或复制信号交易,请确保指定所有必要的设置。在Community标签选择您MQL5.community账户的正确登录名和密码。这是信号复制所必需的。
    • 交易和复制信号权限 - 在虚拟程序端始终允许自动交易。若要使用信号,请在信号 部分设置复制参数。
    • WebRequest - 如果虚拟程序端中操作的程序,使用 WebReqest() 函数来发送HTTP请求,那么您应该在EA交易标签设置权限并列出所有可信的URLs。


    迁移
    迁移表示当前活动环境从客户端转移到虚拟程序端。

    在每次同步客户端期间执行迁移操作。同步始终是单向的进程 - 客户端的环境移动到虚拟程序端但不可相反。虚拟程序端的状态可以通过请求程序端和EA交易日志以及虚拟服务器监控数据来进行监控。

    要执行同步操作,请打开账户快捷菜单并选择迁移类型。




    因此,您可以随时改变图表数和交易品种列表,启动程序的设置和它们的输入参数,程序端设置和信号订阅。

    执行迁移时,所有数据都记录在客户端的日志中。


    同步之后,打开虚拟程序端的主要日志,检查上面执行的所有操作。




    使用虚拟程序端
    租赁虚拟服务器状态也可以通过客户端轻松监控。执行快捷菜单的"细节"命令。



    该信息可以显示在四个标签当中:

    • 细节 - 虚拟服务器本身的数据和程序端的活动环境。
    • CPU 使用率 - CPU 使用图表,%。
    • 内存使用率 - 内存使用图表,Mb。
    • 硬盘使用率 - 硬盘使用图表,Mb。
    要获得更多的服务信息,请阅读文章 "如何准备迁移到虚拟主机的交易账户""使用虚拟主机服务的规则"

  2. 市场:现在,可以租赁MetaTrader 市场 产品,为期1,3,6 或 12 个月。这为开发人员和买家都提供了不可否认的益处。作者通过允许潜在买家以低成本检查其产品,能够显著提高用户的信心。对于买家而言,租赁是购买之前评估一个产品的另一个机会。与演示版不同,租赁的产品除了有效使用期之外没有其他的使用限制。

    任何市场开发人员都可以选择他们的产品是否提供租赁并设置租赁价格。




    开发人员可以选择不提供产品租赁,只提供无限使用的正式许可证。

    如果产品提供租赁,其网页会显示可选项:租赁期和价格。点击租赁并选择租赁期。



    超过期限之后,用户可以续约租赁或购买正式许可证。

  3. 程序端:当使用程序端的“图片另存为”命令或通过MQL5 Screenshot()函数保存图表截图时,删除了"MetaTrader 5, @ 2001-2015 MetaQuotes-Software Corp." 版权所有的部分。这简化了截图的分布。




  4. 程序端:修正了内置Gator Oscillator 技术指标计算和参数管理。
  5. 程序端:改善扫描交易服务器连接点。
  6. 程序端:修正了偶尔的LiveUpdate操作错误。
  7. MQL5:新增SIGNAL_BASE_CURRENCY 信号属性 - 信号提供商的存款货币 - ENUM_SIGNAL_BASE_STRING 枚举。属性可以通过SignalBaseGetString函数接收。
  8. MQL5:修正了继承过程中确定访问父类成员的权限时的编译错误。
  9. MQL5:修正了参数不变地重载类方法时的编译错误。
  10. Tester:优化MQL5云网络代理的工作。 现在,代理无需在所谓的“热身运动”中花费时间 - 连接分发任务的云网络服务器。相反,代理可以随时准备好接收和执行任务。通过 MQL5 云网络,大大加速了优化过程。
  11. Tester:改进了策略测试中的本地,远程和云代理的显示。
  12. 修正了崩溃日志中报告的错误。
  13. 已更新文档。


MetaTrader 5 Android build 1052

Google Play 现在提供新版的MetaTrader 5 Android版。它做了一些修复并提高了稳定性。不久将会增加分析对象和信息系统。

应用程序可以通过这里下载: https://download.mql5.com/cdn/mobile/mt5/android&hl=en


更新内容将会通过LiveUpdate系统来提供。
 

MetaTrader 5 平台更新 Build 1100:更快的EA交易测试和优化

MetaTrader 5 平台更新将于3月20日,本周五进行发布。它将包括以下变化:

MetaTrader 5 客户端 build 1100
  1. Tester:连接 MQL5 云网络 的状态现在显示在代理经理中。安装代理后,使得用户们可以很容易地核对他们是否能够收到来自云计算网络的任务。




  2. Tester:策略测试的操作中也做了一些改进和漏洞修复。花费在中间预备操作和网络延迟的时间已经显著降低。现在在所有的操作模式下,测试和优化速度更快:使用本地测试代理,使用本地网络的代理以及使用MQL5云网络。

  3. 程序端:在工具箱窗口的“邮箱”标签中,新增显示未读邮件的数量。




  4. 程序端:现在,导航窗口还包括活动交易账户上运行的EA交易列表。除了EA交易的名称,列表中还指出了运行EA交易的图表。图标表示是否允许进行EA交易。




    上下文菜单包括了启用或禁用任何EA的自动交易的命令,以及查看其属性或从图表移除的命令。

  5. 程序端:改进算法的精度,来确定可以连接到交易服务器的接入点。
  6. 程序端:修正了在现有程序端上重新覆盖安装新的服务器时,偶尔清除客户账户数据库的错误。
  7. 程序端:程序端界面进一步适应了更高分辨率的屏幕(4K)。
  8. 市场:修正了购买或租赁产品后更新MQL5账户结余。
  9. 虚拟主机:修正迁移自定义指标到虚拟主机环境。
  10. 虚拟主机:修正更新导航窗口中的虚拟主机状态。
  11. MQL5:修正偶尔可能会干扰MQL5云网络EA优化的错误。
  12. MQL5:修正测试过程中,使用ExpertRemove函数删除EA交易时调用OnDeinit。之前,在描述的条件下,OnDeinit事件不可调用。
  13. MQL5:修正EX5程序库中使用资源的错误。
  14. MQL5:修正分析宏的错误。
  15. 修正崩溃日志中报告的错误。
  16. 更新文档。

更新将通过LiveUpdate系统提供。

 

MetaTrader 5 平台更新 Build 1150:轻松地市场购买,历史交易记录和交易时间&交易销售的调试

MetaTrader平台更新将于2015年5月22日,星期五进行发布。此次更新将包含以下功能变化:


MetaTrader 5 客户端 build 1150

  1. 市场:我们引进了"直接" 购买的新机制。现在从市场购买自动交易或指标更加容易,并且您甚至无需MQL5.community账户。

    一步购买
    用户无需登录MQL5.community 账户,向里面充值。现在可以使用平台提供的支付系统直接从平台购买支付产品。为了保持市场购买历史记录的清楚性和统一性,所需的支付额将首先转到您的MQL5.community账户,在那里完成产品的支付。

    您可以轻松地从您MQL5.community 个人档案访问和查看您的所有支付记录。




    购买无需注册
    没有MQL5.community账户也可以在市场购买产品。点击"购买" 并使用提供的支付系统为产品付款。



    然后您将回到到支付系统网页,完成购买。



    在那之后,我们强烈建议您注册一个MQL5.community账户,您的购买将会自动关联到账户。这能够使您可以在多个计算机更新和安装产品。

  2. 编辑器:新功能允许在历史价格调试EA和技术指标。在旧版中,调试需要实时图表。

    现在,在所需的历史数据可以测试任何程序。调试是在策略测试的可视化测试模式中运行。应用程序在tester的模拟序列报价图表上执行。

    在MetaEditor设置中配置调试参数:交易品种,时间表,间隔,执行模式,报价生成模式,初始入金和杠杆。这些参数将被应用于可视化测试。



    在代码中设置断点,然后使用历史价格开始调试。



    这将启动可视化测试和调试过程。




  3. 主机:虚拟主机服务中已经实现了多个改进和修复。

    主要变化是在运行Linux和Mac OS的计算机上操作 Wine。在Wine中所有功能都可用于所有分配的虚拟服务器,包括移动,监控性能和查看日志。


    日志操作也已经变化。如果用户请求记录太多,那么只有特定时期的部分开始日志可被下载。这会防止因日志数量过大而导致的性能退化。如果您想要进一步下载日志,您不再需要更改请求日期。只需在日志查看器窗口选择最后一排并按下PgDn。




  4. 程序端:添加支持一种特殊类型的非交易资产,它可以作为客户资产,为其他交易工具所有的持仓提供所需的预付款。例如,在一个交易者的账户中有一定数量的黄金实物 ,它可以用作持仓预付款(担保)。

    诸如此类的资产都显示为持仓。它们的值通过以下公式计算:合约大小 * 手数 * 市场价格 * 流动性比率。

    这里,流动性比率意味着交易商允许用于预付款的资产比率。


    资产被添加至客户净值并提高了可用预付款,从而增加了允许账户操作的交易量。

    因此,现在可以开通多种预付款类型的账户。


    在上面示例中,交易者拥有1盎司黄金,当前市值1 210.56USD。该值被加入净值并且在零结余情况下可用预付款允许交易者继续交易。

  5. 程序端:新的点图表市场深度和交易时间&销售数据。

    拥有实际交易价格的交易工具报价图表现在显示在市场深度。交易上进行的所有事务都绘制在这个图表上:

    • 红圈 - 卖出交易
    • 蓝圈 - 买入交易
    • 绿圈 - 交易方向未定义。它用于交易无法传输交易方向的时候。在这种情况下,交易方向基于相较于卖价买价的交易价格来决定。买入交易就是在买价或更高价格下执行,卖出交易在卖价或更低价格执行。如果交易价格在卖价和买价之间,则不定义方向。

    圆圈越大,交易量越大。交易量在订单号图表下也显示为直方图。



    在直方图的上部和下部,会显示当前买卖提供的总交易量。

  6. 程序端:交易品种选择对话框现在包含显示交易品种到期日期的列。以及,从列表可以隐藏到期工具。到期合约自动替换为活动合约。



    所有到期交易品种都被隐藏以保持更紧凑的显示。这在期货市场的工作中会尤其有用。无关交易品种是通过"最后交易"参数定义的到期交易品种。这个日期在"到期"列中指明。若要查看所有交易品种,请点击"显示到期合约"。
    为了更便于显示,交易品种列表会自动分类:

    • 首先列出来的是没有到期日期的交易品种
    • 紧接着是始于最近日期到期的交易品种
    • 然后显示始于去年到期的过期交易品种
    • 按照字母顺序排列的其他交易品种

    快捷菜单中的选项"自动移除到期交易品种"允许以"市场报价"窗口的活动交易品种替代过期交易品种。



    程序端重启后,过期交易品种被隐藏,活动交易品种替代添加。例如,LKOH3.15的到期期货合约将被接下来的定义相同的资产LKOH6.15合约所替代。

    如果没有EA交易运行,那么相应打开图表中的交易品种也会被替代。

  7. 程序端:修正更新市场深度窗口中的交易按钮取决于是否有持仓,以及仅持有买入持仓的权限。如果没有持仓,那么关闭按钮无法使用。如果不允许卖出持仓,那么卖出按钮无法使用。

  8. 程序端:程序端界面进一步适应高分辨率屏幕(4K)。
  9. 程序端,修正请求执行模式下验证关闭持仓交易量,防止交易量少于最小允许值。
  10. 程序端:修正可能导致从一个目录启动多个程序端实例的错误。
  11. 程序端:新增以不同语言支持和自动过滤经济日历。依据程序端界面语言执行过滤。
  12. 程序端:日志查看器现在具有通过当前显示的日志进行搜索的功能。



    它搜索日志显示列表中的单词/词组。
  13. 程序端:添加泰语的客户端翻译。
  14. 程序端:更新北印度语的客户端翻译。
  15. MQL5:新函数GetMicrosecondCount 返回自从MQL5程序启动后通过的微秒数:
    ulong  GetMicrosecondCount();
    该函数可以用于配置程序和确定"bottlenecks"。

  16. MQL5:ENUM_OPENCL_PROPERTY_INTEGER枚举中的新图表属性CL_BUFFER_SIZE - 它以字节返回OpenCL buffer实际大小。该属性可以通过CLGetInfoInteger函数接收。
  17. MQL5:WebRequest 函数的错误通知已经更改。如果错误发生,'result' 数组将包含错误描述。
  18. MQL5:ArraySort,ArrayBsearch,ArrayMinimum 和 ArrayMaximum 分类和搜索功能现在可以使用多维数组。分类和搜索只能通过第一个(0)数组指数来执行。之前,这些功能只能在一维数组下使用。
  19. MQL5:修正宏编译的一些漏洞。
  20. Tester:可视化测试操作中的一些改进和漏洞修复。测试器现在通过工具条提供更顺畅的测试速度控制。
  21. 修正崩溃日志中报告的错误。
  22. 更新的文档。

将通过LiveUpdate系统提供更新。

 

MetaTrader 5平台更新 Build 1200:接收报价历史和直接支付服务

MetaTrader 5 平台更新将于2015年10月23日,星期五,进行发布。此更新将有以下功能更改:
  1. 程 序端:在市场报价新增使用报价历史的功能。之前,操作期间报价图表只显示程序端收集的历史。现在,在交易服务器上您就可以访问整个报价历史。禁用自动滚 动,使用鼠标适时开始回滚报价图表,以常见价格图表相同的方式从交易服务器下载缺失的历史。新功能将有助于想要获得最详细价格图表的交易者。



    使用CopyTicks() 函数接收更深层次的报价历史。如果后者在交易服务器上,那么它已得到修改以便于它可以请求缺失的历史并下载它。

  2. 主机和信号:支付虚拟主机和信号订阅现在可以直接从付款系统转账。

    若要支付主机服务,用户无需登录MQL5.community账户充值。 为服务付款现在可以使用一种可用的付款系统从平台直接转账。



    选择一种可用的系统,进行网上转账:




    同样,为交易信号订阅付款也可以通过付款系统从程序端直接完成。




    所需金额将首先转到您的MQL5.community 账户,从这里完成为服务付款。因此,您可以拥有一个明确统一的租赁虚拟主机平台和信号订阅的历史并可以轻松访问和审查您MQL5.community 服务的全部付款。

  3. MQL5:启用新优化的编译器。在64位平台上的程序执行速度提升了5倍。MQL5程序在最近的MetaEditor版本中应该重新编译。

  4. 程序端:新增一个快速打开/关闭市场深度的图标。该图标位于图表上的一键交易面板的附近。您也可以使用新的热键Alt+B。热键也用于市场报价窗口,可以打开市场报价中突出显示的交易品种的市场深度。





  5. 程序端:PC硬件特点和操作系统的信息现在从客户端开始就已经记录在日志中。例如:
    2015.10.14 14:48:18.486	Data Folder: C:\Program Files\MetaTrader 5
    2015.10.14 14:48:18.486	Windows 7 Professional (x64 based PC), IE 11.00, UAC, 8 x Intel Core i7  920 @ 2.67GHz, RAM: 8116 / 12277 Mb, HDD: 534262 / 753865 Mb, GMT+03:00
    2015.10.14 14:48:18.486	MetaTrader 5 build 1190 started (MetaQuotes Software Corp.)
  6. 程序端:改进市场报价中交易品种的工作。

    • 添加市场报价中交易品种显示的数量和交易服务器上可用的交易品种总数。
    • 通过智能选择列表添加一行以便添加新交易品种。
    • 新交易品种行的搜索不仅可以通过交易品种名称执行,还可以通过其描述和国际名称完成。




  7. 程序端:添加支持不同语言的经济日历。
  8. 程序端:添加经济日历缺失的国家图标。
  9. 程序端:添加在市场报价打开交易品种管理窗口的热键 - Ctrl+U。
  10. 程序端:修正根据窗口菜单命令安排打开图表窗口。
  11. 程序端:修正使用强化认证时偶尔阻碍程序端查找证书文件的错误。
  12. 程序端:修正有时可能导致价格历史同步循环的错误。
  13. 程序端:如果交易品种在请求执行模式下进行交易,修正了交易量增加后之前持仓的无效止损/止盈水平。
  14. 程序端:如果交易品种的买入持仓在市场深度的“只买入”交易模式,修正了下卖单的检查功能。
  15. 程序端:修正追踪止损功能的操作。在一些罕见的情况下,持仓的保护性止损的不正确移动。
  16. 程序端:程序端界面进一步适用于高分辨率的屏幕(4K)。
  17. 程序端:修正卸载尽管MQL5程序定期要求却还是过多的历史数据。
  18. 程序端:修正在Windows10下工作时一些用户界面的显示问题。
  19. 程序端:更新用户界面的翻译。
  20. 市场:已修改并优化MQL5市场中产品数据库的操作。
  21. 市场:VPS上已经禁止程序端无MQL5.community账户的购买。现在购买需要在程序端设置中指定MQL5.community账户:工具-选项-社区。
  22. 市场:添加使用银联直接购买产品。
  23. 市场:增强在MQL5市场购买产品时的日志内容。
  24. 主机:添加在32位客户端工作时管理虚拟主机(迁移除外)。
  25. 主机:修正迁移FTP出口设置到虚拟主机,尽管允许通过FTP发布报告。
  26. MQL5:扩展的MqlTick 结构格式。现在,通过了以毫秒为单位的报价到达时间,以及决定哪个报价参数已被更改的标识。
    struct MqlTick
      {
       datetime     time;          // 最近更新价格的时间
       double       bid;           // 当前卖价
       double       ask;           // 当前买价
       double       last;          // 当前收盘价
       ulong        volume;        // 当前收盘价的交易量
       long         time_msc;      // 以毫秒为单位的最近更新价格的时间
       uint         flags;         // 报价标识
      };
    无论与之前报价相比是否有变化都会填充每个报价参数。因此,可以找出过去任何时刻的正确价格,无需在报价历史搜索之前的值。例如,即使报价到达期间只有卖价变化,该结构仍然包含其他参数,包括之前的买价,交易量等等。您可以分析报价标识,找出具体更改了哪个数据:

    • TICK_FLAG_BID - 更改卖价
    • TICK_FLAG_ASK  - 更改买价
    • TICK_FLAG_LAST - 更改最终成交价
    • TICK_FLAG_VOLUME - 更改交易量
    • TICK_FLAG_BUY - 报价是买入交易结果
    • TICK_FLAG_SELL - 报价是卖出交易结果

    MqlTick 结构通过两种类函数使用:
    • CopyTicks - 该类函数不支持旧的结构格式。当调用CopyTicks函数时,之前使用旧的报价格式编译的EX5函数将返回错误4006 (ERR_MQL_INVALID_ARRAY) 。
    • SymbolInfoTick - 该类函数同时支持新旧两种结构格式。

  27. MQL5:添加允许您创建类似C++中的参数化类的类模板。那甚至可以使其更加抽象并且能够以统一的方式使用相同的代码处理不同类的对象。使用示例:
    //+------------------------------------------------------------------+
    //|                                                    TemplTest.mq5 |
    //|                        Copyright 2015, MetaQuotes Software Corp. |
    //|                                             https://www.mql5.com |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link      "https://www.mql5.com"
    #property version   "1.00"
    //+------------------------------------------------------------------+
    //| 声明一个模板类                                                     |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArray
      {
    protected:
       T                 m_data[];
    
    public:
    
       bool              Append(T item)
         {
          int new_size=ArraySize(m_data)+1;
          int reserve =(new_size/2+15)&~15;
          //---
          if(ArrayResize(m_data,new_size,reserve)!=new_size)
             return(false);
          //---
          m_data[new_size-1]=item;
          return(true);
         }
       T                 operator[](int index)
         {
          static T invalid_index;
          //---
          if(index<0 || index>=ArraySize(m_data))
             return(invalid_index);
          //---
          return(m_data[index]);
         }   
      };
    //+------------------------------------------------------------------+
    //| 指针数组的模板类析构函数,删除                                       |
    //| 对象,数组中存储指针的对象。                                         |
    //|                                                                  |
    //| 请注意继承TArray 模板类                                            |
    //+------------------------------------------------------------------+
    template<typename T>
    class TArrayPtr : public TArray<T *>
      {
    public:
       void             ~TArrayPtr()
         {
          for(int n=0,count=ArraySize(m_data);n<count;n++)
             if(CheckPointer(m_data[n])==POINTER_DYNAMIC)
                delete m_data[n];
         }
      };
    //+--------------------------------------------------------------------------+
    //| 声明类。对象指针将存储在数组中                                               |
    //+--------------------------------------------------------------------------+
    class CFoo
      {
       int               m_x;
    public:
                         CFoo(int x):m_x(x) { }
       int               X(void) const { return(m_x); }
      };
    //+------------------------------------------------------------------+
    //|                                                                  |
    //+------------------------------------------------------------------+
    TArray<int>     ExtIntArray;   // 例如 TArray (int 类型 的特定TArray )
    TArray<double>  ExtDblArray;   // 例如TArray (double类型的特定 TArray )
    TArrayPtr<CFoo> ExtPtrArray;   // 例如 TArrayPtr (CFoo类型的特定 TArrayPtr )
    //+------------------------------------------------------------------+
    //| 脚本程序起始函数                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
    //--- 用数据填充数组
       for(int i=0;i<10;i++)
         {
          int integer=i+10;
          ExtIntArray.Append(integer);
          
          double dbl=i+20.0;
          ExtDblArray.Append(dbl);
          
          CFoo *ptr=new CFoo(i+30);
          ExtPtrArray.Append(ptr);
         }
    //--- 输出数组内容
       string str="Int:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtIntArray[i];      
       Print(str);   
       str="Dbl:";
       for(int i=0;i<10;i++)
          str+=" "+DoubleToString(ExtDblArray[i],1);
       Print(str);   
       str="Ptr:";
       for(int i=0;i<10;i++)
          str+=" "+(string)ExtPtrArray[i].X();      
       Print(str);
    //--- 通过new创建的CFoo对象不应删除,因为它们在TArrayPtr<CFoo>对象的析构函数被删除  
      }
    执行结果:
    TemplTest (EURUSD,H1)    Int: 10 11 12 13 14 15 16 17 18 19
    TemplTest (EURUSD,H1)    Dbl: 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0
    TemplTest (EURUSD,H1)    Ptr: 30 31 32 33 34 35 36 37 38 39

  28. MQL5:新操作 * 和 & 通过引用接收变量和接收引用变量。
  29. MQL5:添加ObjectsDeleteAll 函数的重载形式 - 通过图表子窗口的名称前缀删除指定类型的全部对象。
    int  ObjectsDeleteAll(
       long           chart_id,   // 图表ID
       const string     prefix,   // 对象名称前缀
       int       sub_window=-1,   // 窗口指数
       int      object_type=-1    // 删除的对象类型
       );

  30. MQL5:修正ObjectGetValueByTime 函数操作。之前,有时可能会返回错误的图表时间价格值(例如,水平趋势线)。
  31. MQL5:修正服务器上缺乏历史数据时的Copy*函数的操作。 之前,这种情况在返回控制之前会导致30-50秒的延迟。
  32. MQL5:为MQL5标准程序库添加了一些改进。
  33. MQL5:标准程序库 文档翻译为德语,法语,中文,土耳其语,西班牙语和葡萄牙语。
  34. MQL5:添加了日语MQL5 文档
  35. Tester:选择在策略测试中运行的程序的过程变得更加容易。 现在根据存储EA交易和指标的目录,以树状显示列表。




  36. Tester:显示客户端线型可视化测试期间的一些指标。
  37. Tester:修正了通过策略测试调试MQL5程序时设置杠杆和图表时间表。
  38. Tester:修正历史记录测试时调试指标。
  39. 修正崩溃日志中报告的错误。
  40. 更新文档。


更新内容将通过LiveUpdate系统提供。

 

新的MetaTrader 5 Build 1210:增强市场深度和常规改进

MetaTrader 5平台更新将于2015年10月30日,星期五,进行发布。 此更新将有以下功能更改:

  1. 程序端:添加以低于市场深度市场价的价格下限价订单的功能。这允许您在市场以指定价格获得一个订单执行保证。

    如果我们通过买家/卖价界限拖拽限价订单,它将变成止损订单(买入限价将被买入止损替代,而卖出限价-变为卖出止损)。按住Crtl 拖拽,可以使限价订单不被替换为止损订单。




  2. 程序端:在图表设置添加“显示快速交易按键”。这可以使您从图表隐藏一键交易面板启用按键和市场深度。




  3. 程序端:修正提示工具和其他应用之间偶尔出现的冲突。
  4. MQL5:修正以AS_SERIES标识的动态数组复制历史数据时Copy*函数的操作。标识通过ArraySetAsSeries函数设置,表明以时间序列执行数组元素的指数化。
  5. MQL5:更改通过ChartSetInteger和ChartGetInteger管理的CHART_SHOW_ONE_CLICK 属性。之前,该属性允许在图表上显示/隐藏一键交易面板。现在,它也显示/隐藏图表上设置一键交易面板和市场深度的按键(类似图表设置中的“显示快速交易按键”“)。
  6. MQL5:修正模板操作。
  7. 更新文档。

更新内容将通过LiveUpdate系统提供。
 

新版MetaTrader 5 平台 Build 1240:操作更快以及嵌入式视频

MetaTrader 5 平台更新将于2015年12月17日,星期四,进行发布。此更新将有以下功能更改:

  1. 主机:在虚拟主机向导对话框添加了教学视频链接"如何租用虚拟平台" 。请观看这个两分钟视频,学习如何轻松启动自动交易或全天候24小时复制信号。


    该视频以及许多其他视频都在 MetaQuotes软件公司YouTube 官方频道提供。
  2. 程序端:高频交易期间(每秒50及更多操作),加速打开订单和持仓列表的更新。
  3. 程序端:大量交易品种(上万种)情况下优化并显著加速一台交易服务器程序端的初始同步。现在,建立连接后您可以更快速的开展工作。
  4. 程序端:优化并显著减少程序端的内存消耗。
  5. 程序端:关闭/打开程序端时添加保存和恢复市场深度的设置。
  6. 程序端:修正拖拽程序端窗口时发生在Windows 10下的构件。
  7. 程序端:修正许多命令和对话框的上下文帮助。若要激活有关特定元素的帮助,请将光标移至其上面并按下F1。
  8. 程序端:使界面适应高分辨率屏幕(4K)的工作正在进行中。
  9. MQL5:为负责接收订单和交易数据的OrderGetString,HistoryOrderGetString,和HistoryDealGetString函数添加新属性:

    • ORDER_EXTERNAL_ID - 外部交易系统的订单ID(在交易所)。
    • DEAL_EXTERNAL_ID - 外部交易系统的成交 ID 。

  10. MQL5:修正使用架构和类时ZeroMemory 函数的操作。在某些情况下内存清理不执行。
  11. MQL5:添加SendFTP 函数操作期间的错误代码。该函数发送文件到选项窗口FTP标签上指定的地址。

    • ERR_FTP_NOSERVER - 设置中不指定FTP服务器
    • ERR_FTP_NOLOGIN - 设置中不指定FTP登录名
    • ERR_FTP_FILE_ERROR - 文件不存在
    • ERR_FTP_CONNECT_FAILED - 连接FTP服务器失败
    • ERR_FTP_CHANGEDIR - FTP服务器未发现文件上传目录
    • ERR_FTP_CLOSED - FTP服务器连接关闭

  12. MQL5:修正子类对象和其父类之间通过继承方式的类型转换访问。
  13. MQL5:修正类模板中的几处错误。
  14. MQL5:修正使用CopyTicks函数的请求报价。当为连续相同交易报价指定COPY_TICKS_TRADE 参数(仅复制交易报价)时,只有第一个报价会通过。
  15. MQL5:修正定制类型变量大小的定义。
  16. MQL5:修正在CryptDecode函数中使用ZLib时导致无限解压缩循环的错误。
  17. Tester:修正与主测试交易品种不同的交易品种的历史价格同步。
  18. Tester:修正OnTrade交易事件处理程序中加倍TRADE_TRANSACTION_DEAL_ADD 交易(添加交易到历史记录)。
  19. MetaEditor:添加教学视频"如何在MQL5向导中创建自动交易"的链接到MQL5向导。请观看该三分钟视频,开发自动交易,无需编写单行代码。


    该视频以及许多其他视频都在 MetaQuotes软件公司YouTube 官方频道提供。
  20. Tester:更改了遗传优化期间的测试行为。现在,所有遗传优化后获得的独特结果都参与传递。之前,只有1/4的结果可以使用。
  21. MetaEditor:修正其中一个窗口完全展开时的窗口排列命令。窗口菜单允许您平铺,垂直,水平和层叠排列打开的文件。
  22. MetaEditor:使界面适应高分辨率屏幕(4K)的工作正在进行中。
  23. 主机:修正从EA交易调用自定义指标或调用自定义指标中的EX5程序库时的主机迁移。
  24. 更新文档。

更新内容将通过LiveUpdate系统提供。

 

新版MetaTrader 5 build 1325:锁仓选项和实时报价测试

MetaTrader 5 平台更新将于2016年4月22日,星期五,进行发布。新版将有以下功能更改:

  1. 程序端:我们已经添加第二个账户系统—锁仓,该新系统能够扩大零售外汇交易者的可能性。现在,每个交易品种可以有多个持仓,包括反向持仓。这就为实施基于所谓“锁定”的交易策略铺平道路 — 如果价格对交易者反向移动,他们可以打开一个反向持仓。

    由于新系统类似于在MetaTrader 4中使用的系统,它将被交易者所熟知。与此同时,交易者将能够享受第五代平台版本的全部优势 — 使用多个交易填写订单 (包括部分填充),支持MQL5 云网络的多货币和多线程测试等等。

    现在,您可以使用一个账户从事依附于净额系统,一个工具仅允许一个持仓的市场交易,以及在同一个平台使用另一个账户从事外汇交易和使用锁仓。

    新建锁仓账户,查看持仓账户类型
    持仓账户系统设置在一个账户水平,并显示在程序端窗口标题和日志:



    要新建一个锁仓模拟账户,请启用相应选项:




    净额系统
    通过这个系统,在同一时间,一个交易品种您只能有一个普通持仓:

    • 如果一个交易品种有一个持仓,同向执行一个交易会提高该持仓的交易量。
    • 如果反向执行交易,那么现有的交易量可能减少,持仓可能会被关闭 (成交交易量等于持仓交易量时) 或撤销 (如果反向成交的交易量大于当前持仓)。


    这没关系,导致反向交易的是 — 已执行的市场订单或触发的挂单。

    下面示例显示了执行两个每笔0.5手的EURUSD买入交易:


    执行这两个交易即是1手的一个普通持仓。

    锁仓系统
    通过这个系统,您可以一个交易品种拥有多个持仓,包括反向持仓。

    如果您有一个交易品种的持仓,执行一个新交易(或触发挂单),那么会另外建立一个新持仓。您当前持仓不会改变。

    下面示例显示了执行两个每笔0.5手的EURUSD买入交易:


    执行这些交易则会新建两个独立的持仓。

    新交易操作类型 - Close By
    新的交易类型已经被加入锁仓账户 — 通过反向持仓来平仓。这个操作允许在单一交易品种关闭两个反向的持仓。如果反向持仓手数不同,那么两个持仓中只有一个订单保留持仓。其交易量将等于平仓手数的差异值,而持仓方向和开盘价将匹配平仓的更大(交易量)。

    相比单独关闭两个持仓,关闭反向持仓允许交易者保留一个点差:

    • 单独平仓情况下,交易者必须支付一个点差两次:以低价位(卖价)关闭买入持仓和高价位关闭卖出持仓(买价)。
    • 使用反向持仓时,第二个持仓的开盘价被用于关闭第一个持仓,而第一个持仓的开盘价被用于关闭第二个持仓。


    在后面那种情况下,下单"close by" 订单。平仓信息在该评论指明。一组反向持仓通过两个"out by"交易关闭。关闭两个持仓得到的总利润/亏损只在一个交易中指明。



  2. Tester:新增在实时报价历史测试自动交易和技术指标的能力。

    真实报价的测试和优化尽可能地接近实际情况。代替基于分钟数据生成的报价,现在可以使用交易商积累的真实报价。有许多来自交易商和流动量提供商的报价。

    若要开始测试或优化真实报价,请在策略测试选择相应的模式:



    报价数据的大小要比分钟数据大。第一次测试期间,下载它可能需要较长的世界。按月下载的报价数据被存储在TKC文件,在 \bases\[trade server name]\ticks\[symbol name]\。

    测试真实报价
    当测试一个真实报价时,一分钟柱内的点差可能改变,因此生成一分钟报价时,使用相应柱固定的点差。

    如果一个交易品种显示市场深度,那么柱形图会严格根据最后执行的交易价格(Last)来构建。否则,tester会根据收盘价首次尝试构建柱形图,如果这些价格不存在,则使用卖价。无论收盘价是否存在,所有报价上都会触发OnTick 事件。

    请注意,即使根据收盘价构建图表,交易操作也会始终根据卖价和买价执行。例如,如果仅使用开盘柱进行交易的EA交易(例如内置移动平均指标)收到了收盘价信号,它以另一个价格执行一个交易(取决于方向的买价或卖价)。如果使用“每一报价”模式,柱形图通过卖价构建,而交易通过卖价和买价执行。买价作为卖价+对应分钟柱固定点差来计算。

    如果交易品种历史有一个无报价数据的分钟柱,tester 在“每一报价”模式下生成报价。这允许测试一定时期内的EA,以防交易商报价数据的不足。如果交易品种历史记录没有分钟柱但是有适当的分钟报价数据,那么这些报价可以忽略。分钟数据被认为更可靠。

    在MQL5 云网络测试真实报价
    测试真实报价现在不仅可用于本地和远程代理,还可以通过MQL5 云网络实现。可能需要几个月的策略优化,通过数千台电脑的计算能力,可能几个小时就可完成。

    若要使用MQL5云网络测试策略,请启动使用云代理:



    使用MQL5云网络测试真实报价可以消耗大量的数据。这可以显著影响使用网络能力的支付。


  3. 程序端:除了支持锁仓外,新版平台还为从MetaTrader 4迁移账户提供了更广泛的机会。现在,交易商可以自动转移账户到MetaTrader 5,包括所有的操作:持仓和挂单,完成交易历史。

    首次连接从MetaTrader 4迁移的账户时会打开一个欢迎对话框。在迁移过程中,数据的传输安全加密。若要开始使用,请指定您在MetaTrader 4使用的账户密码,然后设置一个新密码。



    连接一旦成功,您将可以继续使用您的账户,就好似它已在MetaTrader 5持仓。来自MetaTrader 4所有交易的完整历史记录会自动添加到新账户。

    订单和持仓(包括历史订单)标签在导入过程中不会保留,因为从MetaTrader 4导入一个历史记录可能相当于MetaTrader 5中的4个历史操作。所有的交易记录都会分配新的标签。

    根据交易商导入的方式可以保留或替代账号。


  4. 程序端:新增聊天功能。现在,您可以与您的MQL5.community朋友和同事进行交流沟通了。聊天显示了您MQL5 账户的所有个人信息。开始沟通时,可以直接从聊天窗口登录您的账户或通过平台设置登录:工具 -> 选项 -> 社区。




  5. 程序端:简化的模拟账户创建对话框,添加创建锁仓账户的能力。您不再需要填写大表格。只需指定基本数据和选择交易参数:账户类型,入金,杠杆和锁仓功能。



  6. 程序端:添加自动分配模拟账户以便快速启动。如果平台还没有账户,第一个可用交易服务器上的模拟账户会在启动时分配。成功打开后,账户连接马上建立。

  7. 程序端:现在,每个持仓有一个标签 — 一个独一无二的号码。它通常匹配用于持仓的订单标签,除非标签更改为服务器上服务操作的结果,例如,收取重新持仓库存费时。程序端更新后,标签被自动分配到所有可用持仓。




  8. 程序端:修正建立导致持仓反转的市场订单时设置的止损和获利水平。直到目前,没有适当的水平设置给新持仓。
  9. 程序端:修正单击交易面板上显示4位及更多小数位的价格。
  10. 程序端:修正打印预览窗口的新闻显示。
  11. 程序端:修正报价图表显示。
  12. 程序端:修正程序端紧急关闭后打开市场深度。
  13. 程序端:添加如果显示单击交易面板控制元素时允许市场订单的检查。
  14. 程序端:假设大量新建订单和持仓情况下,优化利润和预付款计算。
  15. 程序端:添加用户界面的马来语翻译。
  16. 程序端:完全修改后的用户手册。新设计,交互式屏幕截图和嵌入式视频 — 以最大的方便性了解MetaTrader 5的交易:




  17. 程序端:修正"前景图表"模式下图形对象的展示。

  18. MQL5:可执行文件EX5的格式已经变成实施MQL5语言的新功能和MetaTrader 5的新锁仓选项。通过之前版本MetaEditor编译的所有EX5应用程序更新后将能正常工作,例如正向兼容性完全保留。

    build 1325及以上版本编译的EX5程序将无法在旧版构建的程序端运行 - 不支持反向兼容性。

  19. MQL5:添加支持抽象类和纯虚函数。

    抽象类用于创建您期待用于创建更具体派生类的通用实体。抽象类仅能用作一些其他类的基本类,这就是不能创建抽象类类型对象的原因。

    至少包含一个纯虚拟函数的类是抽象类。因此,从抽象类派生出来的类必须实施其所有纯虚拟函数,否则它们也将是抽象类。

    虚拟函数通过使用pure-specifier语法声明为"pure"。考虑CAnimal类的示例,它的创建只能提供常用功能 – CAnimal类型的对象对于实际使用太普通。因此,CAnimal 是一个很好的抽象类示例:
    class CAnimal
      {
    public:
                          CAnimal();     // 构造函数
       virtual void       Sound() = 0;   // 纯虚拟函数
    private:
       double             m_legs_count;  // 动物脚的数量
      };
    这里Sound() 是一个纯虚拟函数,因为它声明为纯虚拟函数PURE (=0)的说明符。

    纯虚拟函数只是为设置PURE说明符的虚拟函数:(=NULL) 或(=0)。抽象类声明和使用的示例:
    class CAnimal
      {
    public:
       virtual void       Sound()=NULL;   // PURE 类函数,应被覆盖在派生类中,CAnimal 现在是抽象类,不能创建
      };
    //--- 派生自一个抽象类
    class CCat : public CAnimal
     {
    public:
      virtual void        Sound() { Print("Myau"); } // PURE被覆盖,CCat 不是抽象类,可以创建
     };
    
    //--- 错误使用的例子
    new CAnimal;         // 'CAnimal' 错误 - 编译器返回"不能实例化抽象类"的错误
    CAnimal some_animal; // 'CAnimal' 错误 - 编译器返回"不能实例化抽象类"的错误
    
    //--- 正确使用的示例
    new CCat;  // 没有错误 - CCat 类不是抽象类
    CCat cat;  // 没有错误 - CCat 类不是抽象类
    抽象类的限制
    如果抽象类的构造函数调用一个纯虚拟函数(直接或间接),结果是未定义的。
    //+------------------------------------------------------------------+
    //| 抽象基类                                                          |
    //+------------------------------------------------------------------+
    class CAnimal
      {
    public:
       //--- 纯虚拟函数
       virtual void      Sound(void)=NULL;
       //--- 函数
       void              CallSound(void) { Sound(); }
       //--- 构造函数
       CAnimal()
        {
         //--- 虚拟类函数的显式调用
         Sound();
         //--- 隐式调用(使用第三个函数)
         CallSound();
         //--- 构造函数或析构函数始终调用自己的函数,
         //--- 即使它们是虚拟函数并且已经被派生类中已调用的函数所覆盖
         //--- 如果调用的函数是纯虚拟函数
         //--- 调用会引起“纯虚拟函数调用”的关键的执行错误
        }
      };
    然而,抽象类的构造函数和析构函数可以调用其他成员函数。

  20. MQL5:添加支持函数指针来简化事件模式的安排。

    若要声明一个函数指针,请指定"函数指针"类型,例如:
    typedef int (*TFunc)(int,int);
    现在,TFunc是一种类型,可以声明函数的变量指针:
    TFunc func_ptr;
    func_ptr 变量可以存储函数地址以便稍后声明:
    int sub(int x,int y) { return(x-y); }
    int add(int x,int y) { return(x+y); }
    int neg(int x)       { return(~x);  }
    
    func_ptr=sub;
    Print(func_ptr(10,5));
    
    func_ptr=add;
    Print(func_ptr(10,5));
    
    func_ptr=neg;           // 错误:neg 不是 int (int,int) 型
    Print(func_ptr(10));    // 错误:应该有两个参数
    函数指针可以被存储并作为参数传递。您不能得到非静态类函数的指针。

  21. MQL5:MqlTradeRequest 有两个新字段:

    • position — 持仓标签。锁仓模式交易下为了明确识别而改变和关闭持仓时来填写。在净额系统,填写字段不会有任何影响,因为持仓只识别一个交易品种名称。
    • position_by — 反向持仓标签。它用于通过反向持仓平仓时(打开一个同名但反向的交易品种)。该标签仅用于锁仓系统。

  22. MQL5:添加TRADE_ACTION_CLOSE_BY 值到 ENUM_TRADE_REQUEST_ACTIONS 交易操作类型枚举 — 通过反向持仓。该标签仅用于锁仓系统。

  23. MQL5:添加交易操作标签到适当订单,交易和持仓属性的枚举:

    • 添加ORDER_TICKET 属性到 ENUM_ORDER_PROPERTY_INTEGER — 订单标签。每个订单会分配一个独一无二的号码。
    • 添加 DEAL_TICKET 属性到 ENUM_DEAL_PROPERTY_INTEGER — 交易标签。每笔交易会分配一个独一无二的号码。
    • 添加POSITION_TICKET 属性到 ENUM_POSITION_PROPERTY_INTEGER — 持仓标签。每个新持仓会分配一个独一无二的号码。它通常匹配用于持仓的订单标签,除非标签更改为服务器上服务操作的结果,例如,收取重新持仓库存费时。若要找出一个用于持仓的订单,请应用POSITION_IDENTIFIER 属性。POSITION_TICKET 值对应MqlTradeRequest::position。

  24. MQL5:添加ORDER_TYPE_CLOSE_BY 值到 ENUM_ORDER_TYPE 订单类型枚举 — close by 订单。
  25. MQL5:添加ORDER_POSITION_BY_ID 值到 ENUM_ORDER_PROPERTY_INTEGER 订单属性枚举 — ORDER_TYPE_CLOSE_BY 类型订单的反向持仓标识符。
  26. MQL5:添加DEAL_ENTRY_OUT_BY 值到 ENUM_DEAL_ENTRY 交易方向枚举 — 由close by操作执行交易。
  27. MQL5:MqlTradeTransaction 也有两个类似的字段:

    • position — 由交易活动影响的持仓标签。这里填写处理市场订单(TRADE_TRANSACTION_ORDER_* except TRADE_TRANSACTION_ORDER_ADD,在这里持仓标签尚未分配) 和订单历史(TRADE_TRANSACTION_HISTORY_*)相关的交易活动。
    • position_by — 反向持仓标签。它用于通过反向持仓平仓时(打开一个同名但反向的交易品种)。这里只填写通过反向持仓而平仓的订单 (close by) 和通过反向持仓而关闭的交易 (out by)。

  28. MQL5:添加PositionGetTicket 函数 — 根据持仓列表的索引返回一个持仓标签和使用PositionGetDouble, PositionGetInteger 和PositionGetString函数自动选择持仓用于进一步工作。
    ulong  PositionGetTicket(
       int  index      // 持仓列表索引
       );

  29. MQL5:添加PositionSelectByTicket 函数 — 通过指定标签为进一步工作选择一个持仓。
    bool  PositionSelectByTicket(
       ulong   ticket     // 持仓标签
       );

  30. MQL5:添加SYMBOL_MARGIN_HEDGED 值到 ENUM_SYMBOL_INFO_DOUBLE 交易品种属性枚举 — 合约大小或一手锁仓预付款(一个交易品种的反向持仓)。

    • 如果一个交易品种指定了初始预付款 (SYMBOL_MARGIN_INITIAL),锁仓预付款被指定为绝对值(以货币计算)。
    • 如果没有设置初始预付款(等于0),预付款计算中将被使用的合约大小在SYMBOL_MARGIN_HEDGED指定。预付款使用对应一个交易品种类型 (SYMBOL_TRADE_CALC_MODE)的等式计算。

    锁仓预付款计算的详细信息会在MetaTrader 5 交易平台帮助中说明。

  31. MQL5:添加ACCOUNT_MARGIN_MODE 值到 ENUM_ACCOUNT_INFO_INTEGER 账户属性枚举 — 当前交易账户的预付款计算模式:

    • ACCOUNT_MARGIN_MODE_RETAIL_NETTING — 用于净额模式账户持仓时的场外交易市场(一个交易品种一个持仓)。预付款计算基于交易品种类型 (SYMBOL_TRADE_CALC_MODE)。
    • ACCOUNT_MARGIN_MODE_EXCHANGE — 用于交易所市场。预付款计算基于交易品种设置中指定的折扣。折扣由交易商设置,但是它们不能低于交易所设置的值。
    • ACCOUNT_MARGIN_MODE_RETAIL_HEDGING — 用于独立持仓账户场外交易市场(锁仓,一个单一交易品种可以有多个持仓)。预付款计算基于交易品种类型 (SYMBOL_TRADE_CALC_MODE)。也要考虑锁仓预付款大小 (SYMBOL_MARGIN_HEDGED) 。

  32. MQL5:添加TERMINAL_SCREEN_DPI 值到 ENUM_TERMINAL_INFO_INTEGER 客户端属性枚举 — 分辨率显示数据通过每英寸的点数来衡量 (DPI)。该参数的信息允许指定图形对象的大小,这样它们在不同分辨率的显示器上看起来一样。

  33. MQL5:添加 TERMINAL_PING_LAST 值到 ENUM_TERMINAL_INFO_INTEGER 客户端属性 — 以微秒计算交易服务器最后得到的ping值。一秒等于一百万微秒。

  34. MQL5:修正返回SendFTP函数调用结果。之前,成功发送后返回 FALSE 而不是 TRUE。
  35. MQL5:修正偶尔导致"违规访问"执行错误的StringConcatenate函数错误。
  36. MQL5:修正使用模板函数时发生的几个错误。
  37. MQL5:添加为打印,警示和评论功能显示超过4000字符行的能力。
  38. MQL5:修正ArrayCompare函数通过不同于开始时期的初始持仓变化来比较数组和函数本身时产生的错误。
  39. MQL5:添加支持标准库的锁仓功能:

    CPosition
    添加类函数:

    • SelectByMagic — 根据魔幻数选择持仓和进一步工作的交易品种。
    • SelectByTicket — 通过进一步工作的标签选择持仓。

    CTrade
    添加类函数:

    • RequestPosition — 收到持仓标签。
    • RequestPositionBy — 接收反向持仓标签。
    • PositionCloseBy — 通过反向持仓支持标签平仓。
    • SetMarginMode — 根据当前账户设置来设置预付款计算模式。

    添加重载类函数:

    • PositionClose — 平仓标签。
    • PositionModify — 修改持仓标签。

    CAccountInfo
    改变类函数:

    • MarginMode — 接收预付款计算模式。直至目前,类函数的工作类似于新的StopoutMode 类函数。
    • MarginDescription — 接收预付款计算模式为字符串。直至目前,类函数的工作类似于新的StopoutModeDescription类函数。

    添加类函数:

    • StopoutMode — 接收最小预付款水平规范模式。
    • StopoutModeDescription — 接收最小预付款水平规范模式为字符串。

    CExpert
    添加类函数:

    • SelectPosition — 为进一步工作选择持仓。

  40. MQL5:对标准程序库添加一些改进。
  41. MQL5:修正卸载DLLs。
  42. MQL5:添加支持模板类构造函数。
  43. 信号:修正几个交易信号窗显示错误。
  44. Tester:修正几个交易品种类型上妨碍计算手续费的错误。
  45. Tester:修正根据相应持仓的专家字段填写激活SL/TP得到的交易订单的专家字段。之前,不填写这些内容。
  46. Tester:修正切换到通常状态并进一步优化结果的标签。
  47. Tester:修正计算和显示“轨道线”指标。
  48. Tester:优化可视化测试。
  49. Tester:优化了大量新建订单和持仓时的利润和预付款计算。
  50. Tester:优化高频交易期间的交易操作。
  51. Tester:现在,如果是非关键交易品种属性请求(不需要当前报价),则不执行历史同步。例如,SYMBOL_SELECT,SYMBOL_DIGITS,SYMBOL_SPREAD_FLOAT,SYMBOL_TRADE_CALC_MODE,SYMBOL_TRADE_MODE,SYMBOL_TRADE_STOPS_LEVEL,SYMBOL_TRADE_FREEZE_LEVEL,SYMBOL_TRADE_EXEMODE等等。之前,非关键交易品种历史记录在其属性的任何请求下都会同步。
  52. Tester:修正按照每年比例计算库存费。
  53. MetaEditor:修正“全字匹配”模式下文件的搜索词。
  54. MetaEditor:添加在所需文件的编译结果行上双击移动到一个文件。
  55. MetaEditor:修正显示Windows XP中的一些控制元素。
  56. 更新文档。


更新内容将通过LiveUpdate系统提供。

 

新的MetaTrader 5 平台 build 1340:便利的证书转移和改进的策略测试

MetaTrader 5 平台更新将于2016年5月13日,星期五,进行发布。此更新将有以下功能更改:

  1. 程序端:现在用于先进安全连接的证书可以方便地从桌面平台转移到移动程序端。

    交易平台支持扩展认证,通过使用除了密码以外的SSL证书保护交易账户。证书是一个交易服务器上为账户独立生成的文件。该文件是唯一的,没有证书无法完成账户连接。

    在早期的平台版本,所要求的从桌面程序端生成的任何证书都需要手动复制并安装在启用交易账户的MetaTrader 5 iPhone/iPadAndroid 移动设备上。现在,证书可以方便地转移了。

    证书转移过程
    通过交易服务器转移证书:

    • 证书首先在桌面程序端加密:账户所有者使用安全的AES - 256算法为证书加密设置密码。该密码只有使用者知道,而不会发送至服务器。
    • 另外,加密的证书发送至交易服务器,并在此存储直至移动程序端接收,但不会超过一个小时。
    • 若要在移动设备上接收证书,用户必须连接到移动程序端的交易账户。连接后,用户提示导入证书。进行导入时,用户需要指定桌面程序端用于证书加密的密码。

    证书转移过程非常安全:交易服务器仅用作中间存储,而证书由客户方加密。证书密码不会传到或存储在交易服务器上。

    如何转移证书
    连接您桌面程序端的账户,在快捷菜单中选择"转移证书":



    输入该账户的主密码来确认它属于您。下一步,将其发送到服务器之前,设置一个保护证书的密码。设置的密码至少8位数。

    成功发送证书到服务器之后,打开移动程序端并连接您的账户。您将被立即提示导入证书。确认并输入您在桌面程序端设置的密码。



    您可以在 "关于 — 证书" 部分查看导入证书。
    不久的将来更新的支持证书转移的MetaTrader 5 iPhone/iPad 和 Android平台将会发布。
  2. Tester:执行挂单,以及SL和TP的更新算法,它将提供更精确的测试条件。视觉测试高级选项。

    交易工具的新功能
    在真实市场中,交易所交易工具图表基于最终价信息生成(最后执行的交易价格)。止损订单也在最终价起动限价订单在卖价和买价起动。所有的订单类型经常在当前市场的卖价/买价执行。策略测试已被更新,现在更好的模拟真实的市场状况:

      之前
    之后
    起动 所有挂单类型和SL/TP的卖价/买价
    限价订单卖价/买价
    最终止损,止损限价和SL/TP订单
    执行 所有挂单类型和SL/TP的订单指定价格
    所有挂单类型和SL/TP的订单起动时的卖价/买价

    让我们考虑Si-6.16 交易品种的示例。起动价格的新买入止损订单 = 设定72580 而当前价格是:Bid=72570,Ask=72572,Last=72552。在价格流新收到的当前价格:

    • Bid=72588
    • Ask=72590
    • Last=72580


    起动交易工具止损订单的是最终价。所以价格流中收到的Last price=72580 激活买入止损订单。在早期版本中,相同价格将用于执行该订单。这个行为是错误的,因为市场中没有Ask=72580 执行买入交易。


    当前 Ask=72590 被用于更新的tester版,所以买入止损订单在该价格执行。Tester 中新的交易执行算法更接近真实市场条件。使用之前算法时,交易操作将以非市场价执行,这将会导致测试结果不准确。

    其他工具的新功能
    其他工具的算法没有改变:用于所有挂单类型,以及SL和TP 的卖价/买价。然而,执行模式已经改变:在早期版本中,以订单中指定的价格执行订单。现在使用根据订单激活时间的市场卖价和买价。

    视觉测试的新功能
    视觉测试期间,柱形图的最高买价线和最低卖价线现在显示在tester。在该图表上,更方便测试交易所工具的EA交易,因为这种工具的柱形图以及起动的订单都是根据最终价完成,而市场操作以卖价和买价执行。



    视觉测试图表的新选项:导航到指定日期。双击图表,输入想要的日期和时间。也可以导航到任何订单或交易:在交易,历史或操作选项卡双击相应的交易操作。

  3. MQL5:修正CopyTicks函数的行为:它将返回比要求更低的报价。
  4. MQL5:修正生成的模板函数。
  5. Tester:扩展测试开始前加载的有关价格和报价历史的日志记录信息。现在日志包含有关历史加载完成的信息,以及下载的数据量和花费的时间:
    2016.05.10 12:47:53    Core 1    5.10 Mb 已处理历史记录 0:00.842
    2016.05.10 12:47:53    Core 1    GBPUSD:历史同步完成 [5225 Kb]
  6. 更新文档。
  7. 修正崩溃日志中报告的错误。

更新内容将通过LiveUpdate系统提供。

原因: