如何开始学习MQL5 - 页 35

要添加评论,请登录注册
Sergey Golubev
版主
113957
Sergey Golubev  

论坛

如何开始学习MQL5

Sergey Golubev, 2013.09.17 09:59

MetaTrader 5 - 超乎您的想像!

MetaTrader 5 的开发工作始于 2007 年。MetaTrader 5 被构想为革命性、多市场的平台,而且要能运行于外汇交易及任何其它金融市场上。自此之后有大量的工作被执行,而成果则是这个可为交易者提供无限机遇的平 台。我们拟于文本中讨论有关 MetaTrader 5 的所有关键功能,并与该交易平台的前一版本进行对比分析。

  1. 图表
  2. 导航器
  3. 交易
  4. 工具箱
  5. 测试和优化
  6. 与 MQL5.community 集成
  7. MetaEditor
  8. MQL5 编程语言
  9. 针对交易者与开发人员的服务

Sergey Golubev
版主
113957
Sergey Golubev  

论坛

MetaTrader 5平台beta build 2055:集成Python域并改进策略测试

MetaQuotes Software Corp., 2019.05.23 11:00

更新的MetaTrader 5平台测试版将于2019年5月17日,星期五,进行发布。我们邀请所有交易者加入测试平台新版本,以便评估平台所有更新功能从而帮助开发者修正出现的错误。

若要将MetaTrader 5平台更新到build 2055,请转到帮助\检查桌面版更新\最新测试版:


新版MetaTrader 5平台的最终版将在公开测试版结束后发布。

  1. 程序端:通过使用Python语言的应用程序,增加MetaTrader 5程序端数据的新API启用请求。

    Python是一种用于开发脚本和应用程序的现代高水平编程语言。它包含用于机器学习、自动化处理以及数据分析和可视化的多个程序库。

    MetaTrader Python程序包是为有效快速地从MetaTrader 5程序端直接通过处理器通信获得交易所数据而设计的。通过这种方式接收的数据可以进一步用于统计计算和机器学习。



    连接

    1. https://www.python.org/downloads/windows下载最新版Python
    2. 安装Python期间,请检查“将Python X.X添加到PATH%”,以便能够从命令行启用Python脚本。
    3. 从命令行安装MetaTrader 5模块
      pip安装MetaTrader5
    4. 添加matplotlib和pytz包
      pip安装matplotlib
      pip安装pytz

    函数


  2. 程序端:优化了市场信号部分。现在,产品和信号展示的运行速度提高了7倍,从而提供了更好的浏览体验服务。




  3. 程序端:新增在Wine系统下支持“市场”、“信号”和“搜索”。LinuxMac OS用户现在可以访问最大的交易应用程序商店和复制交易服务。




  4. 程序端:内置学习程序已被翻译成30多种语言,包括西班牙语、中文、葡萄牙语和德语。若要查看所需语言的互动提示,请使用“查看”菜单切换界面语言。




  5. 程序端:新选项可以验证交易者在开设模拟账户和初始账户时指定的电话号码和电子邮箱。

    是否需要验证数据由交易商来决定。如果启用了这个选项,确认码会在账户请求时自动发送给交易者,对话框中会出现特殊代码字段:



    确认码在几分钟内有效。如果在这个时间段内没有将确认码输入到字段中,那么交易者将需要重复这个程序。

    发送确认码之前,系统将检查指定电话号码/电子邮箱是否之前已确认。如果交易者已在他或她的计算机上通过了验证,那么将无需额外确认即可开户。因此,交易者在请求账户时不会遇到额外的困难。

  6. 程序端:扩展了通过PayPal系统进行付款的MQL5.community付款选项。现在,使用该系统可实现一键购买。

    如何工作
    当您授权PayPal账户进行购买时,您将被进一步要求允许付款给我们公司:





    确认此选项后,您只需点击之前保存的账户按键,即可一键执行进一步购买:




    如果您点击“取消并返回MetaQuotes Software Corp.”,您将以正常的方式进行付款,为每次购买手动输入PayPal账户详情。
    MQL5.com网站和MetaTrader 5平台不存储您的付款详情。在汇总、“市场”购买或“信号”订阅的情况下,将在付款系统执行数据验证。
    您可以随时移除您的PayPal 账户链接。

  7. Tester:策略测试器的改进和优化。

    我们引入了大量隐藏的改进和修正的错误来优化策略测试器操作。此更新可以更快地测试一些任务类型,使操作稳定性更高。主要改进包括:

    框架操作
    本地、网络和源代码的操作框架得到优化。这类操作现在处理速度更快,永远不会跳过。

    将任务分配给代理
    测试器现在可以在优化过程中将任务重新分配给代理。如果有新代理可用(或发布之前用过的一个代理),测试器会使用之前在其他代理中分配的任务包自动创建新的任务包。如果检测出代理速度慢,任务还可以重新分配。这类代理的任务被发送至其他代理,以便更快地完成优化。

    数学计算模式下的任务分配速度会更快。

    日志中的优化统计
    优化日志记录得以扩展:它包括与MQL5云网络使用相关的详细统计,启用和禁用云代理等。

    在全优化日志模式下运行
    为了获得最佳的资源消耗,并不是所有来自代理的消息都被写到测试日志中。若要显示所有日志,您可以通过测试日志快捷菜单启用“完整优化日志”选项。此前,这个模式可以明显拖慢优化进程。而现在则不会影响计算时间。

    MQL5云网络
    优化云测试代理的运行。现在,计算任务的分配更加有效。

  8. 程序端:内置经济日历提供了18个全球大型经济体相关的900+指标,包括美国、欧盟、日本和英国等国家。相关数据都是从开放资源实时收集。通过定期查看此服务,交易者可以随时了解最新的全球新闻,并做出明智的交易决策。

    经济日历可在桌面版、网页版以及移动设备上使用。可以使用程序端的“日历”快捷菜单打开应用程序:




    选择您的平台并下载Tradays apps:


    除了桌面平台提供的日历功能之外,移动版还以图表和表格的形式提供事件提醒和访问指标的完整历史记录。

  9. 程序端:添加了在导入报价历史期间自动生成自定义交易品种柱形历史。现在,如果自定义交易品种的报价数据出现变化,对应的柱形图也自动重新计算。

    • 因此,统一的数据被保存在平台中。
    • 导入报价数据(假设有足够的数据)之后,无需导入柱形图,而由程序端自动计算。

    更改涉及通过程序端界面执行的报价导入,以及使用CustomTicks*函数从MQL5应用程序执行的报价更新。报价数据的任何变化都会导致重新计算对应的自定义交易品种的1分钟柱形图。

  10. 程序端:修正当在分离图表上使用十字光标时“数据窗口”中的数据更新。
  11. 程序端:修正报价历史保存。在早期版本中,一毫秒内的多个报价可能以错误的顺序保存。
  12. 程序端:修正基于服务器上过短的价格历史(少于一天)生成图表的问题。
  13. MQL5:添加MQL5服务调试选项。现在可以使用真实和历史数据测试这些应用程序,类似于EA交易和指标。
  14. MQL5:OnDeinit方法执行期间,MQL5应用程序不会从程序端接收任何事件。以前,由于接收到其他事件,应用程序有时无法完成去初始化(例如,删除所有创建的对象)。
  15. MQL5:修正当日更改自定义交易品种报价历史后可能发生的偶然错误。
  16. MQL5:修正使用大量图形对象(数以万计)时应用程序偶尔出现的运行速度减慢的问题。
  17. MQL5:修正从MQL5程序频繁调用交易历史的情况下出现程序端冻结的问题。
  18. MQL5:修正iBarShift函数操作。通过"exact=false"标识和数据外的请求,该函数返回最早的柱数而不是最新柱数。
  19. Tester:修正确定有多个NUMA节点的计算机处理器上的内核数。
  20. MetaEditor:现在,整码器命令可添加到工具栏以快速访问。
  21. MetaEditor:修正在函数和变量名称中使用非统一字符时切换到参数定义和查看相关数据。
  22. 文档已更新。

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


Sergey Golubev
版主
113957
Sergey Golubev  

论坛

新版MetaTrader 5平台build 2085:集成Python并改进策略测试

MetaQuotes Software Corp., 2019.06.13 13:15

MetaTrader 5平台更新版于2019年6月13日星期四进行发布。新版将有以下变化:


  1. 程序端:添加新API,使用Python语言通过应用程序,启用MetaTrader 5程序端数据请求。

    Python是一种用于开发脚本和应用程序的现代高水平编程语言。它包含用于机器学习、自动化处理以及数据分析和可视化的多个程序库。

    MetaTrader Python程序包是为有效快速地从MetaTrader 5程序端直接通过处理器通信获得交易所数据而设计的。通过这种途径接收的数据可以进一步用于统计计算和机器学习。



    连接

    1. https://www.python.org/downloads/windows下载最新版Python
    2. 安装Python期间,请检查“将Python X.X添加到PATH%”,以便能够从命令行启用Python脚本。
    3. 从命令行安装MetaTrader 5模块
      pip安装MetaTrader5
    4. 添加matplotlib和pytz包
      pip安装matplotlib
      pip安装pytz

    函数


  2. 程序端:优化了市场信号部分。现在,产品和信号展示的运行速度提高了7倍,从而提供了更好的浏览体验服务。




  3. 程序端:新增在Wine系统下支持“市场”、“信号”和“搜索”。LinuxMac OS用户现在可以访问最大的交易应用程序商店和复制交易服务。




  4. 程序端:内置学习程序已被翻译成30多种语言,包括西班牙语、中文、葡萄牙语和德语。若要查看所需语言的互动提示,请使用“查看”菜单切换界面语言。




  5. 程序端:新选项可以验证交易者在开设模拟账户和初始账户时指定的电话号码和电子邮箱。

    是否需要验证数据由交易商来决定。如果启用了这个选项,确认码会在账户请求时自动发送给交易者,对话框中会出现特殊代码字段:




    确认码在几分钟内有效。如果在这个时间段内没有将确认码输入到字段中,那么交易者将需要重复这个程序。

    发送确认码之前,系统将检查指定电话号码/电子邮箱是否之前已确认。如果交易者已在他或她的计算机上通过了验证,那么将无需额外确认即可开户。因此,交易者在请求账户时不会遇到额外的困难。

  6. 程序端:扩展了通过PayPal系统进行付款的MQL5.community付款选项。现在,使用该系统可实现一键购买。

    如何工作
    当您使用PayPal账户登录进行购买之后,您将被要求允许进一步付款给我们公司:





    确认此选项后,您只需点击之前保存的账户按键,即可一键执行进一步购买:




    如果您点击“取消并返回MetaQuotes Software Corp.”,您将以正常的方式进行付款,为每次购买手动输入PayPal账户详情。
    MQL5.com网站和MetaTrader 5平台不存储您的付款详情。当您存款购买“市场”产品或订阅“信号”时,在付款系统端将执行数据验证。
    您可以随时移除您的PayPal 账户链接。

  7. Tester:策略测试器的改进和优化。

    我们引入了大量隐藏的改进和修正的错误来优化策略测试器操作。此更新可以更快地测试一些任务类型,使操作稳定性更高。主要改进包括:

    框架操作
    本地、网络和源代码的操作框架得到优化。这类操作现在处理速度更快,永远不会跳过。

    将任务分配给代理
    测试器现在可以在优化过程中将任务重新分配给代理。如果有新代理可用(或发布之前用过的一个代理),测试器会使用之前在其他代理中分配的任务包自动创建新的任务包。如果检测出代理速度慢,任务还可以重新分配。这类代理的任务被发送至其他代理,以便更快地完成优化。

    数学计算模式下的任务分配速度会更快。

    日志中的优化统计
    优化日志记录得以扩展:它包括与MQL5云网络使用相关的详细统计,启用和禁用云代理等。

    在全优化日志模式下运行
    为了获得最佳的资源消耗,并不是所有来自代理的消息都被记录到测试日志中。若要查看所有日志,您可以通过测试日志快捷菜单启用“完整优化日志”选项。此前,这个模式可以明显拖慢优化进程。而现在则不会影响计算时间。

    MQL5云网络
    优化云测试代理的运行。现在,计算任务的分配更加有效。

  8. 程序端:内置经济日历提供了18个全球大型经济体相关的900+指标,包括美国、欧盟、日本和英国等国家。相关数据都是从开放资源实时收集。通过定期查看此服务,交易者可以随时了解最新的全球新闻,并做出明智的交易决策。

    经济日历可在桌面版、网页版以及移动设备上使用。可以使用程序端的“日历”快捷菜单打开应用程序:




    选择您的平台并下载Tradays apps:


    除了桌面平台提供的日历功能之外,移动版还以图表和表格的形式提供事件提醒和访问指标的完整历史记录。

  9. 程序端:添加了在导入报价历史期间自动生成自定义交易品种柱形历史。现在,如果自定义交易品种的报价数据出现变化,对应的柱形图也自动重新计算。

    • 因此,统一的数据被保存在平台中。
    • 导入报价数据(假设有足够的数据)之后,因为由程序端自动计算,而无需导入柱形图。

    更改涉及通过程序端界面执行的报价导入,以及使用CustomTicks*函数从MQL5应用程序执行的报价更新。报价数据的任何变化都会导致重新计算对应的自定义交易品种的1分钟柱形图。

  10. 程序端:修正当在分离图表上使用十字光标时“数据窗口”中的数据更新。
  11. 程序端:修正报价历史保存。在早期版本中,一毫秒内的多个报价可能以错误的顺序保存。
  12. 程序端:修正基于服务器上过短的价格历史(少于一天)生成图表的问题。
  13. MQL5:添加MQL5服务调试选项。现在可以对这些应用程序进行类似于EA交易和指标的测试。
  14. MQL5:在ENUM_SYMBOL_CALC_MODE枚举中,添加了全新的盈利和预付款计算模式:

    • SYMBOL_CALC_MODE_EXCH_BONDS — 适用于交易所债券的计算。
    • SYMBOL_CALC_MODE_EXCH_STOCKS_MOEX — 适用于莫斯科交易所股票交易的计算。
    • SYMBOL_CALC_MODE_EXCH_BONDS_MOEX — 适用于莫斯科交易所债券交易的计算。

  15. MQL5:新TesterDeposit函数支持在测试期间模拟入金操作。该函数适用于测试资金管理策略。
    bool  TesterDeposit(
       double money      //入金金额
       );
  16. MQL5:OnDeinit方法执行期间,MQL5应用程序不会从程序端接收任何事件。以前,由于接收到其他事件,应用程序有时无法完成去初始化(例如,删除所有创建的对象)。
  17. MQL5:修正当日更改自定义交易品种报价历史后可能发生的偶然错误。
  18. MQL5:修正使用大量图形对象(数以万计)时应用程序偶尔出现的运行速度减慢的问题。
  19. MQL5:修正从MQL5程序频繁调用交易历史的情况下出现程序端冻结的问题。
  20. MQL5:修正iBarShift函数操作。通过"exact=false"标识和数据外的请求,该函数返回最早的柱数而不是最新柱数。
  21. Tester:修正确定有多个NUMA节点的计算机处理器上的内核数。
  22. Tester:添加使用零初始入金运行测试和优化的可能性,因为使用新TesterDeposit函数可以在测试期间模拟入金操作。
  23. MetaEditor:现在,整码器命令可添加到工具栏以快速访问。
  24. MetaEditor:修正在函数和变量名称中使用非统一字符时切换到参数定义和查看相关数据。
  25. 文档已更新。

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


Sergey Golubev
版主
113957
Sergey Golubev  

论坛

下一次MetaTrader 5更新时将停止对32位版本的支持

MetaQuotes Software Corp., 2019.11.04 10:06

MetaTrader 5 build 2190将是最后一个支持32位系统的平台版本。MetaTrader 5平台的下一个正式版本将仅支持64位系统版本。Windows XP 64位版本在14年前发布。而目前对32位版本的支持已经阻碍了很多项目的开发。

停止对32位版本的支持也会影响市场。在MetaTrader 5平台的下一个正式版本发布后,将无法使用32位版本的程序端进入市场。用户将只能从64位程序端购买和启用新MetaTrader 5产品。之前在32位MetaTrader 5程序端中购买的所有产品将可以继续工作,但却无法升级到新版本。

MetaTrader 5 build 2190的32位版本将在未来6个月内可供下载和安装

Sergey Golubev
版主
113957
Sergey Golubev  

论坛

新版MetaTrader 5平台测试版build 2245:用于MQL5 3D可视化的DirectX功能和策略测试中的交易品种设置

MetaQuotes Software Corp., 2019.11.29 09:17

更新的MetaTrader 5平台测试版已于2019年11月29日发布。我们邀请所有交易者加入新平台的测试,评估其全部功能从而帮助开发者修正出现的错误。

若要将MetaTrader 5平台更新到2245,请转到帮助\检查桌面版更新\最新测试版:


新版MetaTrader 5平台的最终版将在公开测试版结束后发布。

新版将有以下变化:

  1. 程序端:有更多列可显示在市场报价中。现在,还提供之前只显示在“详细信息”选项卡中的额外40种交易品种参数。




  2. 程序端:添加在导航中突出显示当前连接的账户和当前服务器。这个功能在您有多个不同交易商账户的情况下,将非常实用。




  3. 程序端:更新图表框架设计。框架更小,因此为有用信息留出更多空间。




  4. 程序端:改进将交易历史显示为持仓时计算交易总量的算法。现在根据实际记录计算该数值。

    要将交易历史显示为持仓,程序端会使用请求期间执行的交易信息。只有在此期间关闭的持仓才会显示在历史中。如果持仓仍未完结或平仓时间超出所选间隔,则将不会显示在历史记录中。因此,持仓模式下的总盈利和手续费可能不同于“订单/交易”历史模式下的总盈利和手续费。

    例如,您正在查看过去一周的历史。在此期间,执行了100笔交易,其中98笔开设和关闭了20个持仓。最近两笔交易开设新持仓,目前尚未结束。在这种情况下,交易历史包含100条记录和基于这些交易计算的总值。当以持仓的形式查看历史时,您将看到基于98笔交易收集的20条记录。当计算总值时,只有这些数据将被考虑。如果交易商收取入市交易费,那么交易历史中的最终手续费值将不同于持仓历史中显示的手续费,因为在后一种情况下,最后两笔交易将被忽略。

  5. 程序端:实现更快启动MQL5程序。
  6. 程序端:程序端安装文件中添加了新/beta键,可以下载测试版。在正常模式下,应该先安装发布版,然后才可更新到测试版。现在跳过这一步骤,从而节省时间和流量。安装开始示例:

    C:\mt5setup.exe /beta
  7. 程序端:修正显示“交易所股票”类型交易品种的预付款需求。
  8. 程序端:通过使用Clang/LLVM编译器,加速所有平台组件的操作。在某些情况下,编译速度可提高20%。
  9. MQL5:为3D可视化添加新DirectX 11功能和着色器。现在,可以用MQL5直接创建3D图形。

    新CCanvas3D类是CCanvas自定义图形类的扩展。它位于\MQL5\Include\Canvas\目录。这个类的功能是可通过DirectX API渲染3D对象。

    • 创建 — 创建一个场景。
    • 附加 — 将场景绑定到图表。
    • 破坏 — 破坏一个场景。
    • ObjectAdd — 将继承自CDXObject基类的子对象添加到场景中。
    • 渲染 — 通过ObjectAdd方法添加的完整渲染循环,包括所有CDXObject的缓冲区清除和渲染。
    • RenderBegin — 启动场景渲染,使用指定颜色(如果设置DX_CLEAR_COLOR标识)和深度缓冲区(使用DX_CLEAR_DEPTH时)填充渲染缓冲区,并为默认着色器设置DXInputScene场景缓冲区。
    • RenderEnd — 完成场景渲染并将结果接收到内部缓冲区。如果redraw==true,在图像运行的图表上显示图像。
    • ViewMatrixGet — 接收视图矩阵。
    • ViewMatrixSet — 设置视图矩阵。矩阵不兼容ViewPositionSet、ViewRotationSet、ViewTargetSet和ViewUpDirectionsSet方法。
    • ViewPositionSet — 设置视图位置。
    • ViewRotationSet — 设置视图旋转矩阵。
    • ViewTargetSet — 设置视图指向的点。与ViewUpDirectionsSet一起,是ViewRotationSet的另一种选择。
    • ViewUpDirectionsSet — 设置视图的垂直位置。与ViewTargetSet一起,是ViewRotationSet的另一种选择。
    • ProjectionMatrixGet — 接收投影矩阵。
    • ProjectionMatrixSet — 设置投影矩阵。

    关于新程序库的详细文档将很快发布。




  10. MQL5:添加支持直接从MQL5操作SQLite数据库。现在可以使用MQL5函数实现到数据库的连接和SQL查询的执行。内部操作通过新的标准库扩展实现。

    提供以下函数:
     //--- 打开和关闭数据库
      int  DatabaseOpen(string filename,UINT flags);
      void DatabaseClose(int database);
      
      //---  处理表格
      bool DatabaseTableExists(int database,string table_name);
    
      //--- 准备SQL查询
      int  DatabasePrepare(int database,string sql,...);
      void DatabaseFinalize(int request);
      
      //--- 读取绑定/没有绑定到MQL5结构的查询结果
      int  DatabaseRead(int request);
      int  DatabaseReadBind(int request,struct or var);
      
      //--- 将查询结果的数据提取到不同的数据类型
      int  DatabaseGetColumnCount(int request);
      int  DatabaseGetColumnSize(int request,int column);
      int  DatabaseGetColumnType(int request,int column);
      int  DatabaseGetColumnText(int request,int column,string &value);
      int  DatabaseGetColumnInteger(int request,int column,int &value);
      int  DatabaseGetColumnLong(int request,int column,long &value);
      int  DatabaseGetColumnDouble(int request,int column,double &value);
      int  DatabaseGetColumnBlob(int request,int column,void &data[]);
    
      //--- 处理事务
      int  DatabaseExecute(int db_id,string request);  
      int  DatabaseBeginTransaction(int db_id);
      int  DatabaseCommitTransaction(int db_id);
      int  DatabaseRollbackTransaction(int db_id);
  11. MQL5:添加MQL5程序的新属性,可以选择默认的可视化方法。
    #property optimization_chart_mode "3d,InpX,InpY"
    该属性可以设置优化结束时打开的图表类型,以及X和Y轴的程序参数。

    该属性仅设置默认图表视图。它可以随时使用快捷菜单手动更改。

  12. MQL5:MathArctan2新函数。返回角度的弧度值,其正切值等于两个指定数值的比率。
    double  MathArctan2(
       double  y      // 点的y坐标
       double  x      // 点的x坐标
       );
  13. MQL5:我们对程序进行了总体优化,提高性能并降低资源消耗。
  14. MQL5:添加可在策略测试中执行的数学计算示例。这些在\MQL5\Experts\Examples\Math 3D\目录下提供。
  15. MQL5:引入对namespaces(命名空间)更严格控制。
  16. MQL5:添加在MQL5程序中使用.NET库时加载链接库。如果使用的.NET程序库需要其他程序库才可运行,编译器将尝试从\MQL5\Libraries自动下载所需的程序端。
  17. MQL5:修正用于Python集成的MetaTrader模块中的时间操作。现在,所有输出数据都使用程序端连接的交易服务器的时间。
  18. Tester:添加许多新功能和改进:


    交易品种的自定义设置
    现在您可以更改主要交易品种的设置,并通过它执行测试/优化。几乎所有规格参数都可以重写:交易量、交易模式、预付款需求、执行模式和其他设置。因此,如果您需要在不同条件下检查EA,则无需创建单独的自定义交易品种和下载其历史记录。这可以通过更改标准的交易品种设置来完成。



    如果交易品种规格为自定义,则齿轮图标和交易品种图标将用星号标记。这表示自定义参数用于当前测试。




    最后设置/EA交易/图表
    使用新快捷菜单命令进行快速测试或优化设置。选择最后使用的测试设置、最近图表或应用程序:




  19. MetaEditor:添加直接从MetaEditor与C/C++和Python合作的能力。现在,可以使用内置编辑器管理多语言项目。

    如果您的电脑安装了对应的编译器,MetaEditor将进行检测并添加到设置中。同时,您还可以在“编译器”选项卡下指定所需组件的路径。在相同的选项卡中,您可以通过点击相应字段旁边的“安装”来下载组件。





    然后,您就可以如同编译MQL5程序一样,与C/C++和Python合作。

  20. MetaEditor:添加支持Shared Project目录中的子项目,旨在通过MQL5存储开发共享项目。以前,只能在顶层创建单个项目。
  21. MetaEditor:内置调试程序更新。
  22. MetaEditor:修正在使用代码样式(styler)时添加函数标题。
  23. MetaEditor:“跳转到上一个/下一个光标位置”命令现在不仅在“查看”菜单提供,还显示在工具栏上。
  24. MetaEditor:现在可以在项目名称中使用空格。
  25. Android:添加在交易商网站快速切换到入金/出金页面的能力。

    无需在交易商网站的交易者室中搜索对应的功能。可在程序端中直接获得快速导航命令:用户可以从“账户”和“交易”部分切换到入金和出金页面:



    • 只有在交易商对交易账户启用对应的功能,才可以进行入金/出金操作。
    • 交易程序端不执行任何账户入金/出金操作。集成功能将用户重新定向到对应的交易商网站页面。

  26. Android:现在,历史持仓可按平仓日期进行排序。
  27. Android:添加在历史部分用红色和绿色垂直线标记“止损”平仓或“止盈”平仓。
  28. Android:在交易品种规格中添加新字段:

    • 分类 — 这个属性用于额外标记交易品种。例如,这可以是该交易品种所属的市场行业:农业、石油&天然气等。只有在交易商提供对应信息的情况下才显示分类。
    • 交易所 — 进行证券交易的交易所名称。只有在交易商提供对应信息的情况下才显示分类。

  29. Android:在交易部分添加“追加预付款”状态的显示。在这种状态出现时,“预付款”、“可用预付款”和“预付款水平”参数显示为红色。
  30. Android:修正在平板电脑上显示OTP部分打开按键。
  31. Android:其他修复和改进。
  32. iPhone/iPad:添加在交易商网站快速切换到入金/出金页面的能力。更多详细信息请参阅“MetaTrader 5 Android版新功能列表”。



  33. iPhone/iPad:添加对iOS/iPadOS暗模式的支持。
  34. iPhone/iPad:在iPad版本中已提供动态密码部分。
  35. iPhone/iPad:在历史部分用红色和绿色垂直线标记“止损”平仓或“止盈”平仓。
  36. iPhone/iPad:现在,历史持仓可按平仓日期进行排序。如果持仓尚未关闭,则使用开仓日期进行排序。
  37. iPhone/iPad:其他修复和改进。
  38. 基于崩溃日志进行修复。

更新将通过实时更新系统提供。


Sergey Golubev
版主
113957
Sergey Golubev  
MetaTrader 5新功能
MetaTrader 5新功能
  • www.metatrader5.com
新版MetaTrader 5平台build 2170:MQL5作用域,全局策略测试和内置虚拟主机更新 程序端 重新设计了内置虚拟主机管理选项。关于租用程序端以及环境迁移、停止和启动功能的所有信息,现在都可以在“工具箱”窗口的单独选项卡中获得。 在早期版本中,“虚拟主机”功能可以在“导航”窗口的快捷菜单中使用。现在所有必要的信息和控制命令都方便简捷地排列在“VPS”选项卡中: 基本订阅信息显示在左侧: 连接数据:比较您主机服务器和本地计算机上的客户端运行之间的网络延迟。 租用主机的交易账户和付款计划。 独特的订阅标识符。点击ID打开MQL5.community用户个人资料中的“主机”部分,也可以在这里管理订阅...
Sergey Golubev
版主
113957
Sergey Golubev  

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

MQL5中的SQLite:新功能和性能测试

雷纳特·法特赫林,2019.12.07 09:24

在版本2265中,我们实现了用于基于SQLite 3.30.1的数据库处理常规功能:

使用DATABASE_OPEN_MEMORY标志,数据库既可以存储在磁盘上,也可以存储在内存中。在DatabaseTransactionBegin / Commit / Rollback事务中包装大量插入/更改,可将操作加速数百倍。

由于我们尽可能地关注性能,因此这是LLVM 9.0.0与MQL5测试的结果。时间以毫秒为单位,越短越好:
Windows 10 x64, Intel Xeon  E5-2690 v3 @ 2.60GHz
                                                        LLVM   MQL5
---------------------------------------------------------------------------------
Test  1: 1000 INSERTs:                                 11572   8488
Test  2: 25000 INSERTs in a transaction:                  59     60
Test  3: 25000 INSERTs into an indexed table:            102    105
Test  4: 100 SELECTs without an index:                   142    150
Test  5: 100 SELECTs on a string comparison:             391    390
Test  6: Creating an index:                               43     33
Test  7: 5000 SELECTs with an index:                     385    307
Test  8: 1000 UPDATEs without an index:                   58      54
Test  9: 25000 UPDATEs with an index:                    161    165
Test 10: 25000 text UPDATEs with an index:               124    120
Test 11: INSERTs from a SELECT:                           84     84
Test 12: DELETE without an index:                         25     74
Test 13: DELETE with an index:                            70     72
Test 14: A big INSERT after a big DELETE:                 62     66
Test 15: A big DELETE followed by many small INSERTs:     33     33
Test 16: DROP TABLE: finished.                            42     40

MQL5中的速度与使用最佳编译器之一的本机C ++绝对相同。附带了一个基准测试包。


我们还实现了独特的DatabaseReadBind函数,该函数使您可以将记录直接读取到结构中,从而简化并加快了批量操作。

这是一个简单的示例:

 struct Person
  {
   int                id;
   string             name;
   int                age;
   string             address;
   double             salary;
  };

//+------------------------------------------------------------------+
//| Test                                                             |
//+------------------------------------------------------------------+
bool TestDB( string filename, int flags)
  {
   int db;
//--- open
   db=DatabaseOpen(filename,flags);
   if (db== INVALID_HANDLE )
     {
       Print ( "DB: " ,filename, " open failed with code " , GetLastError ());
       return ( false );
     }
//--- create a table
   if (!DatabaseTableExists(db, "COMPANY" ))
       if (!DatabaseExecute(db, "CREATE TABLE COMPANY("
                           "ID INT PRIMARY KEY     NOT NULL,"
                           "NAME           TEXT    NOT NULL,"
                           "AGE            INT     NOT NULL,"
                           "ADDRESS        CHAR(50),"
                           "SALARY         REAL );" ))
        {
         Print ( "DB: " ,filename, " create table failed with code " , GetLastError ());
         DatabaseClose(db);
         return ( false );
        }
//--- insert data
   if (!DatabaseExecute(db, "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); "
                       "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); "
                       "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );"
                       "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );" ))
     {
       Print ( "DB: " ,filename, " insert failed with code " , GetLastError ());
      DatabaseClose(db);
       return ( false );
     }
//--- prepare the request
   int request=DatabasePrepare(db, "SELECT * FROM COMPANY WHERE SALARY>15000" );

   if (request== INVALID_HANDLE )
     {
       Print ( "DB: " ,filename, " request failed with code " , GetLastError ());
      DatabaseClose(db);
       return ( false );
     }
//--- выводим записи
   Person person;

   for ( int i= 0 ; DatabaseReadBind(request,person); i++)
       Print (i, ":  " ,person.id, " " , person.name, " " ,person.age, " " ,person.address, " " ,person.salary);

   Print ( "" );
//--- close all
   DatabaseFinalize(request);
   DatabaseClose(db);
   return ( true );
  }

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   TestDB( "test.sqlite" ,DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE |DATABASE_OPEN_COMMON);
  }


Output:
0 :   1 Paul 32 California 20000.0
1 :   3 Teddy 23 Norway 20000.0
2 :   4 Mark 25 Rich-Mond   65000.0 




附加的文件:
SqLiteTest.zip 2709 kb
Sergey Golubev
版主
113957
Sergey Golubev  

论坛

新版MetaTrader 5平台Build 2280

MetaQuotes Software Corp., 2019.12.12 15:56

MetaTrader 5平台更新将于2019年12月13日,星期五进行发布。此次更新提供了我们基于之前MetaTrader 5 build 2265主要更新后收到的反馈所进行的重要补充和修正:

  1. 程序端:修正了导致无法从没有数据的图表中删除EA交易的错误。
  2. 程序端:修正Wine下图表标题显示的问题。
  3. MQL5:改善MQL5程序的加载和编译速度。
  4. MQL5:双击图表现在作为单击事件传递到MQL5程序。在此之前,此类事件并未得到处理。
  5. MQL5:修正StringTrimRight函数的操作。
  6. Tester:修正导致设置中的测试交易品种为空的错误。这个错误可能由在不同交易品种设置的交易账户之间切换引起的。新操作:如果在当前连接的交易账户中没有找到之前选择的交易品种,那么会自动选择市场报价中第一个可用的交易品种。
  7. MetaEditor:修正重新打开项目属性时加载应用程序图标的问题。
  8. 添加DirectX 3D可视化功能文档。
  9. 更新用户界面翻译。
  10. 基于崩溃日志进行修复。

更新将通过实时更新系统提供。

我们强烈建议安装此更新。

要添加评论,请登录注册