如何开始使用MT5,一个总结 ! - 页 2

 

即将推出 -
新的通信系统是Telegram的类似物--请阅读 篇文章。

 

============

一目了然


开始

  1. 简单一目连系统
  2. 简单一目连系统--系统的规则
  3. 简单 的一目连剥皮

之后

============

 

用可视化的信息创建了好的线程--提示线程
强烈建议所有新手(了解)和有经验的用户(更新知识)阅读这个小线程。

----------------

自由职业者服务

  • 如何将资金存入您的MQL5账户
  • 如何进入下一个阶段
  • 如何留下反馈意见
  • 什么是屏幕截图
  • 如何附上初步需求规格的文件/其他格式的文件
  • 如果程序出现错误,应提供给开发人员的东西
  • 如何在文本中插入图片/代码/视频/表格
  • 如何在移动设备上做一个屏幕截图
  • 如何延长订单执行期/费用
  • 设置3天的执行期后,不要消失5天客户。如何创建一个GIF图像,而不是视频,以嵌入到一个聊天室里。

----------------

平台

  • 如何安装专家顾问/指示器
  • 平台/测试器/优化器日志在哪里?
  • 哪里是MetaQuotes的ID,用于混淆推送通知
  • 如何通过图表菜单在三次点击中对一个错误进行截图
  • 在哪里启用和配置电子邮件通知
  • EA/指标所使用的文件在哪里?
  • 什么是 "描述 "和 "图标 "字段,在哪里可以找到它们?
  • 在哪里可以找到平台的构建编号如何启用数据窗口并查看指标值?
  • 如何启用精确的时间刻度
  • 如何保存一个图表模板
  • 如何通过WebRequest添加一个URL来工作在哪里可以找到EX4/EX5文件

----------------

专家顾问

  • 什么是神奇数字
  • 尾随止损是如何工作的EA的日志在哪里?
  • 为什么EA/指标在导航器中是灰色的?
  • 净值化和对冲的区别是什么?
  • 如何安装在市场上购买的产品

----------------

测试器

  • 如何保存/加载一个设定文件
  • 哪里可以找到平台/测试器/优化器的日志
  • 测试模式之间有什么不同?
  • 如何启动和使用视觉测试
  • 如何在MetaTrader 4中下载一个可用的价格历史记录

 

这是非常重要和非常有趣的更新 - 请阅读 --

关于交易、自动交易系统和测试交易策略的论坛

MetaTrader 5平台测试版Build 1910。MQL5中图表和.Net库的非绑定拖放功能

MetaQuotes软件公司。, 2018.10.12 19:43

更新后的MetaTrader 5平台的测试版将于2018年10月14日发布。我们将更新我们的公共MetaQuotes-Demo服务器,位于access.metatrader5.com:443。我们邀请所有交易者加入测试,以评估更新的平台功能,并帮助开发人员修复错误。

要更新MetaTrader 5平台至build 1910,请连接到access.metatrader5.com服务器:443。

新MetaTrader 5平台的最终构建将在公开测试后发布。

该更新将有以下变化:

  1. 终端。现在你可以从交易终端窗口中分离出金融符号图表。

    这个功能在使用多个显示器时很方便。因此,你可以在一个显示器上设置主平台窗口来控制你的账户状态,并将图表移到第二个屏幕上观察市场情况。要把图表从终端上分离出来,在其上下文菜单中禁用停靠选项。之后,将图表移到所需的显示器上。



    分离的图表上有一个单独的工具栏,可以应用分析对象和指标,而不必在显示器之间切换。使用工具条的上下文菜单来管理可用的命令集或隐藏它。

  2. 终端。全面更新了内置的聊天工具。现在它们支持小组对话和频道。在一个统一的环境中与一群人进行私人讨论,无需在不同的对话框之间切换,并根据你的兴趣和语言创建频道。在MQL5.community与同事和朋友进行交流,而无需访问网站。

    小组聊天和频道可以是公开的或私人的。它们的创建者决定是否可以自由加入,或只有通过邀请才能加入。您还可以为频道和聊天室指定主持人,以加强沟通控制。



  3. 终端。增加了对加密货币交易量准确性的支持。现在,最小可能的交易操作量是0.00000001手。市场深度,时间和销售,以及其他界面元素现在具有显示精确到小数点后8位的交易量的能力。

    最小交易量和其变化步骤取决于经纪人方面的金融工具设置。




  4. 终端。在工具箱窗口中增加了MQL5.community 上发布的文章标签。 现在,无需离开终端,就可以获得600多份关于在MQL5中开发交易策略的详细材料。每周都有新的文章发表。



  5. 终端。在Wine下工作时,增加了对使用证书的扩展认证 的支持。
  6. 终端。固定显示市场深度,当它被限制在一个级别。
  7. 终端。在标准工具条上增加了 "保存为图片 "命令。现在,拍摄图表的照片并在社区中分享它们要容易得多。




  8. 终端。修正了在导入条形图和点阵图时应用时间转移的问题。以前,在某些情况下没有应用移位。



  9. MQL5。增加了对具有 "智能 "函数导入的.NET库的本地支持。现在可以使用.NET库,而不需要编写特殊的封装器--MetaEditor自己就能做到。

    要使用.NET库函数,只需导入DLL本身,无需定义具体的函数。MetaEditor会自动导入所有可以使用的函数:
    • 简单的结构(POD,普通的旧数据)
    • 具有简单数据类型的结构
    • 有参数的公共静态函数,其中只使用简单类型和POD结构或其数组

    要调用库中的函数,只需导入它:
    #import "TestLib.dll"
    
    //+------------------------------------------------------------------+
    //| Script program start function                                    |
    //+------------------------------------------------------------------+
    void OnStart()
      {
       int x=6;
       TestClass::Inc(x);
       Print(x);
      }
    TestClass的Inc函数的C#代码看起来如下:
    public class TestClass
    {
       public static void Inc(ref int x)
       {
        x++;
       }
    }
    执行的结果是,脚本返回值为7。

  10. MQL5。在解析代码时,增加了对内联、__内联和__强制内联指定符的支持。代码中的指定符的存在不会导致错误,也不会影响编译。目前,这个功能简化了将С++代码转移到MQL5的过程。
    MSDN 找到更多关于指定器的信息。

  11. MQL5。明显优化了MQL5程序的执行。在某些情况下,性能改进可以达到10%。在新的MetaEditor版本中重新编译你的程序,使其运行更快。
    不幸的是,由于这个额外的优化,新的程序将不能与以前的终端版本兼容。在MetaEditor 1910版及以后版本中编译的程序不能在1880以下的终端版本中启动。在早期MetaEditor版本中编译的程序可以在新终端中运行。

  12. MQL5。大幅优化了多个MQL5函数。
  13. MQL5。增加了新的属性,用于从终端主窗口附加/删除图表并管理其位置。

    ENUM_CHART_PROPERTY_INTEGER 枚举中增加了以下属性:

    • CHART_IS_DOCKED - 图表窗口是停靠的。如果设置为'false',图表可以被拖到终端区域之外。
    • CHART_FLOAT_LEFT - 未停靠的图表窗口相对于虚拟屏幕的左坐标。
    • CHART_FLOAT_TOP - 未锁定的图表窗口相对于虚拟屏幕的上坐标。
    • CHART_FLOAT_RIGHT - 未锁定的图表窗口相对于虚拟屏幕的右坐标。
    • CHART_FLOAT_BOTTOM - 未锁定的图表窗口相对于虚拟屏幕的底部坐标。

    ENUM_TERMINAL_INFO_INTEGER 枚举添加了以下功能:

    • TERMINAL_SCREEN_LEFT - 虚拟屏幕的左坐标。一个虚拟屏幕是一个覆盖所有显示器的矩形。如果系统有两个从右到左的显示器,那么虚拟屏幕的左坐标可以在两个显示器的边界上。
    • TERMINAL_SCREEN_TOP - 虚拟屏幕的顶部坐标。
    • TERMINAL_SCREEN_WIDTH - 终端宽度。
    • TERMINAL_SCREEN_HEIGHT - 终端高度。
    • TERMINAL_LEFT - 终端相对于虚拟屏幕的左坐标。
    • TERMINAL_TOP - 终端相对于虚拟屏幕的顶部坐标。
    • TERMINAL_RIGHT - 终端相对于虚拟屏幕的右坐标。
    • TERMINAL_BOTTOM - 终端相对于虚拟屏幕的底部坐标。

  14. MQL5。在MqlTick和MqlBookInfo结构中增加了volume_real字段。它被设计为与增加精度的体积一起工作。volume_real值比'volume'有更高的优先级。如果指定的话,服务器将使用这个值。

    struct  MqlTick
      {
       datetime         time;          // Last price update time
       double           bid;           // Current Bid price
       double           ask;           // Current Ask price
       double           last;          // Current price of the Last trade
       ulong            volume;        // Volume for the current Last price
       long             time_msc;      // Last price update time in milliseconds
       uint             flags;         // Tick flags
       double           volume_real;   // Volume for the current Last price with greater accuracy
      };

    struct MqlBookInfo
      {
       ENUM_BOOK_TYPE   type;            // order type from the ENUM_BOOK_TYPE enumeration
       double           price;           // price
       long             volume;          // volume
       double           volume_real;     // volume with greater accuracy
      };

  15. MQL5。为ENUM_SYMBOL_INFO_DOUBLE 枚举增加了新的属性:

    • SYMBOL_VOLUME_REAL - 最后执行的交易的体积;
    • SYMBOL_VOLUMEHIGH_REAL - 当前一天的最高交易量;
    • SYMBOL_VOLUMELOW_REAL - 当前一天的最低交易量;

    使用SymbolInfoDouble 函数来获得这些属性。

  16. MQL5:在ENUM_MQL_INFO_INTEGER 枚举中增加了MQL_FORWARD属性 -前进测试 模式标志。
  17. MQL5:放宽了对铸造枚举的要求。在隐式铸造的情况下,编译器会自动替换正确的枚举值,并显示一个警告。

    对于下面的代码:
    enum Main
      {
       PRICE_CLOSE_,
       PRICE_OPEN_
      };
    
    input Main Inp=PRICE_CLOSE;
    //+------------------------------------------------------------------+
    //| Start function                                                   |
    //+------------------------------------------------------------------+
    void OnStart()
      {
      }
    编译器显示警告:
    implicit conversion from 'enum ENUM_APPLIED_PRICE' to 'enum Main'
    'Main::PRICE_OPEN_' instead of 'ENUM_APPLIED_PRICE::PRICE_CLOSE' will be used
    以前,在这种情况下会产生以下错误。
    'PRICE_CLOSE' - cannot convert enum
    如果在函数参数中不正确地使用枚举,编译器仍然会显示错误。

  18. MQL5。修正了模板函数的编译。现在,当使用重载模板函数时,只有必要的重载,而不是所有现有的重载,才会被实例化。
    class X {  };
    
    void f(int)  {  }
      
    template<typename T>
    void a(T*) { new T(2); }  // previously, the compiler generated the error here
      
    template<typename T>
    void a()  { f(0); }
      
      
    void OnInit()  { a<X>(); }  
    
  19. MQL5:优化了通过CopyTicks*函数 访问tick历史的一些情况。
  20. 测试器。修正了在测试/优化和生成相关报告时计算存款货币的准确性。
  21. 测试员。优化并加速了策略测试器的操作。
  22. 元编辑器。修正了对整个单词的搜索。现在搜索时,下划线被算作普通字符,而不是单词分隔符。
  23. 更新了文档。

 

好的主题开始了 -如何开始使用MQL5

关于交易、自动交易系统和测试交易策略的论坛

如何开始使用MQL5

Vladimir Karputov, 2018.12.24 20:34

本线程讨论MQL5的代码实例。会有如何从指标中获取数据的例子,如何对顾问进行编程......总之,从初学者到MQL5语言的任何问题。


如果您刚刚开始熟悉MetaTrader 5终端,那么我可以推荐以下主题。

 

有一篇文章是市场上每个卖家都应该阅读的:它是关于市场产品的验证 -

----------------

交易机器人在市场上发布前必须通过的检查

Why products are checked before they are published in the Market 

在任何产品在市场上发布之前,它必须经过强制性的初步检查,因为专家或指标逻辑中的一个小错误可能会导致交易账户的损失。这就是为什么我们开发了一系列的基本检查,以确保市场产品的质量水平要求。

如果市场版主在检查你的产品的过程中发现任何错误,你将不得不修复所有的错误。本文考虑了开发人员在其交易机器人和技术指标中最常出现的错误。我们还建议阅读以下文章。

 

谢谢你,伙计...

非常有帮助,伟大的努力...

 

交易、自动交易系统和测试交易策略论坛

2005 年构建的新 MetaTrader 5 平台:经济日历、MQL5 应用程序即服务和 R 语言 API

MetaQuotes Software Corp. , 2019.02.20 17:20

MetaTrader 5 平台更新将于 2019 年 2 月 21 日发布。新版本具有以下更改:

  1. 终端:完全修改了内置经济日历。

    经济日历是我们的专有解决方案。您将在其中找到与全球 13 个最大经济体相关的 600 多个财经新闻和指标:美国、欧盟、日本、英国、加拿大、澳大利亚、中国等。相关数据是从开源实时收集的。

    新版本具有更新的内容和高级事件过滤器:按时间、优先级、货币和国家。

    现在可以从 MQL5 程序访问日历数据。请参阅下面的详细资料。




  2. 程序端:添加了新型 MQL5 应用程序 — 服务。这种新类型可以为终端创建自定义价格馈送,即从外部系统实时实施价格交付,就像在经纪人的交易服务器上实施一样。

    与智能交易系统、指标和脚本不同,服务未链接到特定图表。此类应用程序在后台运行,并在终端启动时自动启动(除非此类应用程序被强制停止)。

    可以从导航器窗口中的新部分管理服务:





    如何创建服务
    要创建服务模板,请使用相应的MQL5 向导选项。服务有一个OnStart入口点,类似于脚本。此时,您可以使用网络函数实现无限的数据接收和处理循环。

    如何启动服务
    要运行具有不同参数的多个 EA 或指标副本,您应该在不同的图表上启动它们。在这种情况下,会创建不同的程序实例,然后独立运行。服务未链接到图表,因此实施了一种特殊机制来创建服务实例。

    从导航器中选择一个服务,然后在其上下文菜单中单击“添加服务”。这将打开一个标准 MQL5 程序对话框,您可以在其中启用/禁用交易和访问信号设置,以及设置各种参数。




    可以使用适当的实例菜单启动和停止服务实例。要管理所有实例,请使用服务菜单。

  3. 终端:添加了一个学习程序。

    新功能将帮助初学者学习如何与平台交互。我们添加了 100 多个有关主要平台功能的互动提示。

    • 提示无缝地显示为工具栏上的进度条,因此不会分散用户的注意力。
    • 提示仅针对您从未在平台中执行的操作显示。
    • 所有提示都包含交互式链接,您可以通过这些链接导航到相关的界面元素。例如,可以直接从提示中启动带有所需程序的交易对话框或菜单。

    每当您执行适当的操作并继续训练时,进度条的填充区域就会增加。




  4. 终端: 交易账户历史可以显示为头寸。该平台收集与头寸相关的交易数据(开仓、交易量增加、部分或全部平仓)并将信息分组到单个记录中。因此,您可以访问头寸详细信息:开仓和平仓时间、交易量、价格和结果。这种高效的演示表格现在可以在导出到文件的历史报告中使用。




  5. 终端:通过使用R 语言的应用程序添加了 MetaTrader 5 终端数据的新 API 启用请求。

    我们准备了一个特殊的 MetaTrader 包。它包含用于 R 和 MetaTrader 5 终端之间交互的 DLL、文档和辅助 r 文件。我们正在完成CRAN存储库中的包注册,之后它将可供下载和安装。




    可以使用特殊命令安装该软件包:
    R CMD INSTALL --build MetaTrader

    以下与数据请求相关的命令可用:

    • MT5Initialize 初始化并建立与 MetaTrader 5 终端的连接。如有必要,在命令执行期间启动终端。
    • MT5Shutdown 取消初始化并与 MetaTrader 5 断开连接。
    • MT5Version 获得 MetaTrader 5 终端版本。
    • MT5TerminalInfo 获取终端连接到经纪商服务器的状态和参数(账号和服务器地址)。
    • MT5WaitTerminal 等待 MetaTrader 5 终端连接到经纪商的服务器。
    • MT5CopyTicksFrom(symbol, from, count, flags) 从指定日期开始复制指定数量的刻度。自 01.01.1970 以来的日期以毫秒为单位指定。
    • MT5CopyTicksRange(symbol, from, to, flags) 复制指定周期内的报价。自 1970 年 1 月 1 日起,日期以毫秒为单位指定。
    • MT5CopyRatesFrom(symbol, timeframe, from, count) 从指定日期开始复制指定数量的一分钟柱线。日期以 1970 年 1 月 1 日以来的秒数为单位指定。
    • MT5CopyRatesFromPos(symbol, timeframe, start_pos, count) 从相对于最后一根柱线的指定位置复制一分钟柱线。
    • MT5CopyRatesFromRange(symbol, timeframe, date_from, date_to) 从指定时间段内复制柱线。自 01.01.1970 以来的日期以秒为单位指定。

    支持的命令列表将进一步扩展。

  6. 程序端:优化的关闭方式对话框,用于关闭对面的头寸。现在,即使您有大量未平仓头寸,对话也不会变慢。
  7. 程序端:修复了合成符号计算错误,导致数据偶尔会被跳过。
  8. 程序端:当自定义交易品种被删除时,存储其报价和柱历史的文件也会被删除。这避免了未使用的数据在硬盘上的累积。
  9. 程序端:修复了高 DPI 屏幕上搜索结果的显示。
  10. MQL5:实现了从 MQL5 程序访问经济日历数据。

    新功能

    CalendarCountryById — 按标识符获取国家/地区描述。
     bool CalendarCountryById(
       const long            country_id,    // country ID
       MqlCalendarCountry&  country        // country description
       );
    CalendarEventById — 按标识符获取事件描述。
     bool CalendarEventById(
       const long            event_id,      // event ID
       MqlCalendarEvent&     event           // event description
       );
    CalendarValueById — 按标识符获取事件值描述。
     bool CalendarValueById(
       const long            value_id,      // value ID
       MqlCalendarValue&     value           // value description
       );
    CalendarEventByCountry — 获取国家/地区可用事件的数组。
     bool CalendarEventByCountry(
       string                country_code,  // country code
       MqlCalendarEvent&    events[]       // array of events
       );
    CalendarEventByCurrency — 获取受影响货币的可用事件数组。
     bool CalendarEventByCurrency(
       string                currency,       // currency
       MqlCalendarEvent&    events[]       // array of events
       );
    CalendarValueHistoryByEvent — 按事件标识符获取指定时间段的值数组。
     bool CalendarValueHistoryByEvent(
       ulong                 event_id,      // event ID
       MqlCalendarValue&    values[],      // array of values
       datetime              datetime_from, // period beginning date
       datetime              datetime_to= 0  // period end date
       );
    CalendarValueHistory — 获取指定时间段内所有事件的值数组,按国家和/或货币过滤。
     bool CalendarValueHistory(
       MqlCalendarValue&    values[],           // array of values
       datetime              datetime_from,     // beginning of period
       datetime              datetime_to= 0 ,     // end of period
       string                country_code=NULL, // country code
       string               currency=NULL      // currency
       );
    CalendarValueLastByEvent — 按标识符获取最后一个事件值的数组。此功能启用自上次请求以来出现的值的请求。输入/输出参数“change_id”额外用于此操作。

    每次日历数据库更改时,都会更新“change_id”属性(最后一次更改标识符)。在数据请求期间,您指定“change_id”,终端返回该时间之后出现的事件,以及当前的“change_id”值,可用于下一次请求。在第一次函数调用期间,指定零“change_id”:该函数不会返回任何事件,但会返回当前的“change_id”以供进一步请求。
     bool CalendarValueHistory(
       ulong                 event_id,           // event ID
       ulong &               change_id,         // last calendar change ID
       MqlCalendarValue&    values[]           // array of values
       );
    CalendarValueLast — 获取所有事件的最后值数组,按国家和/或货币过滤。此功能启用自上次请求以来出现的值的请求。与 CalendarValueLastByEvent 类似,“change_id”属性用于请求。
     bool CalendarValueHistory(
       ulong                 event_id,           // event ID
       ulong &               change_id,         // last calendar change ID
       MqlCalendarValue&    values[],           // array of values
       string                country_code=NULL, // country code
       string currency=NULL                     // currency
       );

    新结构

    MqlCalendarCountry — 国家描述。
     struct MqlCalendarCountry
      {
       ulong              id;                         // country ID in ISO 3166-1
       string             name;                       // text name of the country
       string             code;                       // code name of the country in ISO 3166-1 alpha-2
       string             currency;                   // country currency code
       string             currency_symbol;           // country currency symbol/sign
       string             url_name;                   // country name used in URL on mql5.com
      };
    MqlCalendarEvent — 事件描述。
     struct MqlCalendarEvent
      {
       ulong                           id;           // event ID
       ENUM_CALENDAR_EVENT_TYPE       type;         // event type
       ENUM_CALENDAR_EVENT_SECTOR     sector;       // sector to which the event belongs
       ENUM_CALENDAR_EVENT_FREQUENCY  frequency;     // event release frequency
       ENUM_CALENDAR_EVENT_TIMEMODE   time_mode;     // event release time mode
       ulong                           country_id;   // country ID
       ENUM_CALENDAR_EVENT_UNIT       unit;         // unit for the event values
       ENUM_CALENDAR_EVENT_IMPORTANCE importance;   // event importance
       ENUM_CALENDAR_EVENT_MULTIPLIER multiplier;   // event importance multiplier
       uint                            digits;       // number of decimal places in the event value
       string                          source_url;   // source URL
       string                          event_code;   // event code
       string                          name;         // text name of the event in the terminal language
      };
    MqlCalendarValue — 事件值描述。
     struct MqlCalendarValue
      {
       ulong              id;                         // value ID
       ulong              event_id;                   // event ID
       datetime           time;                       // event date and time
       datetime           period;                     // period, for which the event is published
       int                revision;                   // published indicator revision in relation to the reported period
       long               actual_value;               // current event value
       long               prev_value;                 // previous event value
       long               revised_prev_value;         // revised previous event value
       long               forecast_value;             // forecast event value
       ENUM_CALENDAR_EVENT_IMPACRT impact_type;     // potential impact on the currency rate
      };

    新枚举

    enum ENUM_CALENDAR_EVENT_FREQUENCY
      {
       CALENDAR_FREQUENCY_NONE            = 0 ,   // not used
       CALENDAR_FREQUENCY_WEEK            = 1 ,   // weekly
       CALENDAR_FREQUENCY_MONTH           = 2 ,   // monthly
       CALENDAR_FREQUENCY_QUARTER         = 3 ,   // quarterly
       CALENDAR_FREQUENCY_YEAR            = 4 ,   // yearly
       CALENDAR_FREQUENCY_DAY             = 5 ,   // daily
      };
    
    enum ENUM_CALENDAR_EVENT_TYPE
      {
       CALENDAR_TYPE_EVENT                = 0 ,   // event (meeting, speech, etc.)
       CALENDAR_TYPE_INDICATOR            = 1 ,   // indicator
       CALENDAR_TYPE_HOLIDAY              = 2 ,   // holiday
      };
    
    enum ENUM_CALENDAR_EVENT_SECTOR
      {
       CALENDAR_SECTOR_NONE               = 0 ,   // no
       CALENDAR_SECTOR_MARKET             = 1 ,   // market
       CALENDAR_SECTOR_GDP                = 2 ,   // GDP
       CALENDAR_SECTOR_JOBS               = 3 ,   // jobs
       CALENDAR_SECTOR_PRICES             = 4 ,   // prices
       CALENDAR_SECTOR_MONEY              = 5 ,   // money
       CALENDAR_SECTOR_TRADE              = 6 ,   // trade
       CALENDAR_SECTOR_GOVERNMENT         = 7 ,   // government
       CALENDAR_SECTOR_BUSINESS           = 8 ,   // business
       CALENDAR_SECTOR_CONSUMER           = 9 ,   // consumer
       CALENDAR_SECTOR_HOUSING            = 10 ,   // housing
       CALENDAR_SECTOR_TAXES              = 11 ,   // taxes
       CALENDAR_SECTOR_HOLIDAYS           = 12 ,   // holidays
      };
      
    enum ENUM_CALENDAR_EVENT_IMPORTANCE
      {
       CALENDAR_IMPORTANCE_LOW            = 0 ,   // no
       CALENDAR_IMPORTANCE_NONE           = 1 ,   // low
       CALENDAR_IMPORTANCE_MODERATE       = 2 ,   // moderate
       CALENDAR_IMPORTANCE_HIGH           = 3 ,   // high
      };
    
    enum ENUM_CALENDAR_EVENT_UNIT
      {
       CALENDAR_UNIT_NONE                 = 0 ,   // no
       CALENDAR_UNIT_PERCENT              = 1 ,   // percent
       CALENDAR_UNIT_CURRENCY             = 2 ,   // national currency
       CALENDAR_UNIT_HOUR                 = 3 ,   // number of hours
       CALENDAR_UNIT_JOB                  = 4 ,   // number of jobs
       CALENDAR_UNIT_RIG                  = 5 ,   // number of rigs
       CALENDAR_UNIT_USD                  = 6 ,   // US dollar
       CALENDAR_UNIT_PEOPLE               = 7 ,   // number of people
       CALENDAR_UNIT_MORTGAGE             = 8 ,   // number of mortgages
       CALENDAR_UNIT_VOTE                 = 9 ,   // number of votes
       CALENDAR_UNIT_BARREL               = 10 ,   // number of barrels
       CALENDAR_UNIT_CUBICFEET            = 11 ,   // volume in cubic feet
       CALENDAR_UNIT_POSITION             = 12 ,   // number of job positions
       CALENDAR_UNIT_BUILDING             = 13    // number of buildings
      };
      
    enum ENUM_CALENDAR_EVENT_MULTIPLIER
      {
       CALENDAR_MULTIPLIER_NONE           = 0 ,   // no    
       CALENDAR_MULTIPLIER_THOUSANDS      = 1 ,   // thousands
       CALENDAR_MULTIPLIER_MILLIONS       = 2 ,   // millions
       CALENDAR_MULTIPLIER_BILLIONS       = 3 ,   // billions
       CALENDAR_MULTIPLIER_TRILLIONS      = 4 ,   // trillions
      };
      
    enum ENUM_CALENDAR_EVENT_IMPACRT
      {
       CALENDAR_IMPACT_NA                 = 0 ,   // not available
       CALENDAR_IMPACT_POSITIVE           = 1 ,   // positive
       CALENDAR_IMPACT_NEGATIVE           = 2 ,   // negative
      };
    
    enum ENUM_CALENDAR_EVENT_TIMEMODE
      {
       CALENDAR_TIMEMODE_DATETIME         = 0 ,   // the source publishes the exact time
       CALENDAR_TIMEMODE_DATE             = 1 ,   // the event takes the whole day
       CALENDAR_TIMEMODE_NOTIME           = 2 ,   // the source does not publish the event time
       CALENDAR_TIMEMODE_TENTATIVE        = 3 ,   // the source provides only date, but does not publish the exact time in advance, exact time is added when event occurs
      };

    新的错误代码

    ERR_CALENDAR_MORE_DATA             = 5400 ,   // the array is small for the whole result (values which fit in the array were passed)
    ERR_CALENDAR_TIMEOUT               = 5401 ,   // timed out waiting for a response to the calendar data request
    ERR_CALENDAR_NO_DATA               = 5402 ,   // data not found

  11. MQL5:修复和改进与分时和柱历史相关的操作速度。
  12. MQL5:与自定义交易品种、 CustomTicks*CustomRates*的分时和柱线历史修改功能相关的修复和显着的操作速度改进。
  13. MQL5:新的数据转换功能。

    CharArrayToStruct将 uchar 数组复制到 POD 结构。
     bool   CharArrayToStruct(
       void &         struct_object,    // structure
       const uchar &  char_array[],      // array
       uint           start_pos= 0         // starting position in the array
       );
    StructToCharArray将 POD 结构复制到 uchar 数组。
     bool   StructToCharArray(
       const void &  struct_object,      // structure
       uchar &       char_array[],      // array
       uint          start_pos= 0         // starting position in the array
       );

  14. 添加了 MathSwap函数,用于更改 ushort、uint 和 ulong 值中的字节顺序。
     ushort MathSwap( ushort value );
    uint    MathSwap( uint    value );
    ulong   MathSwap( ulong    value );

  15. MQL5:添加了用于通过系统套接字创建到远程主机的 TCP 连接的网络功能

    • SocketCreate 创建一个带有指定标志的套接字并返回它的句柄
    • SocketClose 关闭套接字
    • SocketConnect 连接服务器,有超时控制
    • SocketIsConnected 检查套接字当前是否已连接
    • SocketIsReadable 获取可以从套接字读取的字节数
    • SocketIsWritable 检查当前时间是否可以将数据写入此套接字
    • SocketTimeouts 设置系统套接字对象的数据接收和发送超时时间
    • SocketRead 从套接字读取数据
    • SocketSend 将数据写入套接字
    • SocketTlsHandshake 使用 TLS 握手协议启动与指定主机的安全 TLS (SSL) 连接
    • SocketTlsCertificate 接收有关用于安全网络连接的证书的信息
    • SocketTlsRead 从安全的 TLS 连接中读取数据
    • SocketTlsReadAvailable 从安全的 TLS 连接中读取所有可用数据
    • SocketTlsSend 使用安全的 TLS 连接发送数据

    使用网络功能建立连接的主机地址必须明确添加到终端设置中允许的地址列表中

    为具有网络功能的操作添加了新的错误代码

    • ERR_NETSOCKET_INVALIDHANDLE (5270):传递给函数的套接字句柄无效
    • ERR_NETSOCKET_TOO_MANY_OPENED (5271):打开的套接字过多(最多 128 个)
    • ERR_NETSOCKET_CANNOT_CONNECT (5272):连接远程主机时出错
    • ERR_NETSOCKET_IO_ERROR (5273):从套接字发送/接收数据时出错
    • ERR_NETSOCKET_HANDSHAKE_FAILED (5274):安全连接建立错误(TLS 握手)
    • ERR_NETSOCKET_NO_CERTIFICATE (5275) — 没有关于用于安全连接的证书的数据

  16. MQL5:为字符串操作添加了新函数

    StringReserve 为字符串保留指定大小的内存缓冲区。
     bool   StringReserve(
       string &        string_var,           // string
       uint            new_capacity          // buffer size for the string
       );
    StringSetLength 以字符为单位设置指定的字符串长度。
     bool   StringSetLength(
       string &        string_var,          // string
       uint            new_length           // new string length
       );

  17. MQL5:为数组操作添加了新功能

    ArrayRemove 从数组中删除从指定索引开始的指定数量的元素。
     bool   ArrayRemove(
       void &         array[],              // array of any type
       uint           start,                // the index to start removal
       uint           count=WHOLE_ARRAY      // number of elements
       );
    ArrayInsert 将源数组中指定数量的元素插入到接收器数组中,从指定的索引开始。
     bool   ArrayInsert(
       void &         dst_array[],          // receiver array
       const void &   src_array[],          // source array
       uint           dst_start,            // index in the receiver array where to insert
       uint           src_start= 0 ,           // index in the source array to start copying
       uint           count=WHOLE_ARRAY     // number of inserted elements
       );
    ArrayReverse 反转数组中从指定索引开始的指定数量的元素。
     bool   ArrayReverse(
       void &         array[],              // array of any type
       uint           start= 0 ,               // index to start reversing
       uint           count=WHOLE_ARRAY      // number of elements
       );

  18. MQL5:在函数CustomRatesUpdateCustomRatesReplaceCustomTicksAddCustomTicksReplace中添加了新的“uint count”参数。它允许指定传递数组的元素数量,这些元素将用于这些函数。 WHOLE_ARRAY 值默认用于参数。这意味着将使用整个阵列。
  19. MQL5:添加了 CustomBookAdd函数以传递自定义交易品种的市场深度状态。该功能允许广播市场深度,就好像价格来自经纪人的服务器一样。
     int   CustomBookAdd(
       const string         symbol,             // symbol name
       const MqlBookInfo&  books[]             // an array with the DOM elements descriptions
       uint                 count=WHOLE_ARRAY   // number of elements to be used
       );
  20. MQL5:添加了 CustomSymbolCreate函数重载。这允许基于现有交易品种创建自定义交易品种。创建后,可以使用相应的功能编辑任何符号属性。
     bool   CustomSymbolCreate (
       const string         symbol_name,       // custom symbol name
       const string         symbol_path= "" ,    // name of the group in which the symbol will be created
       const string         symbol_origin=NULL // name of the symbol based on which the custom symbol will be created
       );
    应从中复制自定义交易品种属性的交易品种名称在“symbol_origin”参数中指定。

  21. 将带有日期/时间的字符串转换为日期时间值的StringToTime函数已更新。现在它支持以下日期格式:

    • yyyy.mm.dd [hh:mi]
    • yyyy.mm.dd [hh:mi:ss]
    • yyyymmdd [hh:mi:ss]
    • yyyymmdd [hhmiss]
    • 年年/月/日 [hh:mi:ss]
    • yyyy-mm-dd [hh:mi:ss]

  22. MQL5: ENUM_TERMINAL_INFO_INTEGER枚举中的新 TERMINAL_VPS 属性;它显示终端正在MetaTrader 虚拟主机服务器 (MetaTrader VPS) 上运行。如果应用程序在托管服务器上运行,您可以禁用其所有可视功能,因为虚拟服务器没有图形用户界面。
  23. MQL5: ENUM_SYMBOL_INFO_INTEGER枚举中的新 SYMBOL_EXIST 属性,表示此名称下的交易品种存在。
  24. MQL5:修正了使用模板函数预声明时的类型。
  25. MQL5:添加了更改交易账户时指标的重新初始化。
  26. MQL5:优化的StringSplit函数。
  27. MQL5:修复了标准库操作中的错误。
  28. 测试器:添加了 TesterStop功能 — 例行提前关闭测试代理上的 EA 交易。现在您可以在达到指定的亏损交易数量、预设的回撤水平或任何其他标准后强制停止测试。

    使用此功能完成的测试被认为是成功的。函数调用后,将测试时获得的交易历史和所有交易统计数据传递给终端。

  29. 测试器:禁用通过MQL5 云网络在真实报价模式下测试和优化 EA 交易的能力。此模式只能在本地代理和本地网络场上使用。
  30. 测试人员:改进了可视化测试期间的指标工作。现在价格图表和指标线是同步绘制的,即使是在最大可视化速度下也是如此。
  31. 测试器:优化并显着加速测试和优化。
  32. 测试器:修复了历史数据指标的调试。现在可以正确调试 OnInit 和 OnDeinit 指标函数。
  33. 测试器:在测试多币种智能交易系统时实现了对历史数据的更快访问。
  34. 测试器:修复了在调试历史数据期间视觉测试器偶尔冻结的问题。
  35. 测试人员:在代理处理任务包时实现了更快的优化通道启动。
  36. 测试人员:更改了将任务包分发给测试代理的策略。包大小已增加,因此网络操作的资源消耗已显着减少。
  37. 测试人员:更改了启用本地、网络和云代理的选项的行为。现在,当您关闭选项时,代理会完成对收到任务的处理,而不会再给他们新任务。在早期版本中,该行为类似于立即停止代理操作的“禁用”命令。




  38. MetaEditor:在调试器中添加了对非 ANSI 字符的支持。现在,即使在 Cyrillic 中指定了变量名,表达式也会正确显示。
  39. MetaEditor:修复了高 DPI 屏幕上搜索结果的显示。
  40. 添加了克罗地亚语的用户界面翻译。
  41. 文档已更新。
该更新将通过 LiveUpdate 系统提供。

 

你好。

在安装这个2005版之前,我是否需要删除 我的Build 1940?
,我试过不卸载,安装后还是和以前一样的1940。
另外,我从去年开始就无法更新,有什么原因吗?
我是否应该删除所有的东西然后重试?


谢谢...

 
对初学者有用
原因: