如何开始使用Metatrader 5 - 页 126

 

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

新版MetaTrader 5 build 2190平台

MetaQuotes软件公司。, 2019.11.12 15:28

发布了测试版2208。

  • 修复加载专家 配置文件
  • 修复了VPS标签中支付方式的显示

你可以通过帮助菜单->检查更新来进行更新。


 

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

MQL5中的新图形功能,可直接访问DirectX 11

MetaQuotes软件公司。, 2019.11.22 11:30

2019年11月27日,我们将发布一个具有新图形功能的构建,用于构建复杂的3D可视化。

我们提供看演示。


一个ex5文件形式的例子可以在当前测试版2224上运行,可以通过帮助->检查更新命令获得。


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

MQL5中的新图形功能,可直接访问DirectX 11

Renat Fatkhullin, 2019.11.22 12:12

这是新的CCanvas3D类,它扩展了CCanvas的功能。

我们在MQL5中添加了大量的本地DirectX 11方法,这样你就可以在3D投影中实现复杂模型的可视化。


在新版本中,如果我们有时间的话,MQL5中的SQLite原生工作很可能也会被提供。这将大大简化大量数据的工作,并进行快速选择。


附加的文件:
 

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

MQL5中的新图形功能,可直接访问DirectX 11

Renat Fatkhullin, 2019.11.24 20:10

没有必要担心终端的大小--它在其能力范围内非常紧凑和完整。

我们添加了DirectX,以便能够创建一个新的程序类别。由于高质量的可视化,功能强大,更加专业。

SQLite将极大地简化处理海量和异质数据的工作。不需要处理原始的文件绑定,只需要保存到数据库中。


我们走得更远。

  1. 我们在编辑器中加入Clang / LLVM对C / C ++的支持,以便在本地编译DLL / EXE项目



  2. 更重要的是,我们正在开辟一类新的程序,其形式是用C / C ++编写的模块,并安全地转换为EX5。

    将有可能在EX5中编译现有的库,并进行小的修正。所有潜在的危险的api调用将被MQL5控制包装器所取代。



  3. 我们增加了对Python的支持,使其能够轻松地从编辑器中运行Python脚本,为MQL5生成/处理数据。

  4. 除了在测试版中已经重新定义的符号设置外,我们还扩大了测试者的佣金和滑点的详细设置。

  5. 我们减少了资源成本和向本地代理商提供历史数据的非常方案


有些东西将在11月27日的发布中提供,其余的在下一个测试版和版本中提供。



 

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

MQL5中的新图形功能,可直接访问DirectX 11

Renat Fatkhullin, 2019.11.25 20:13

Build 2228可用。


现在,在MQL5中使用标准的CCanvas3D库可以很容易地直接完成这种可视化。


附加的文件:
 

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

新的MetaTrader 5平台测试版构建2245。MQL5中3D可视化的DirectX功能和策略测试器的符号设置

MetaQuotes软件公司。, 2019.11.29 13:41

更新的MetaTrader 5平台的测试版将于2019年11月29日发布。 我们邀请所有交易者加入新平台的测试,以评估其所有功能,并帮助开发人员修复错误。

要将MetaTrader 5平台更新到Build 2245,请导航到Help / Check Desktop Updates / Latest Beta Version。


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

新版本具有以下变化。

  1. 终端。市场观察 中出现了更多的栏目。主要部分现在有40个额外的符号参数,这些参数以前只在细节标签下可用。




  2. 终端。在导航器中增加了当前连接账户和当前服务器的高亮显示。如果你有不同经纪商的多个账户,该功能将非常有用。




  3. 终端。更新了图表的框架设计。框架变得更小,因此现在有更多的空间可用于有用的信息。




  4. 终端。修改了在以头寸 显示交易历史 时计算交易总额的算法。现在的数值是根据实际记录计算的。

    为了将交易历史显示为头寸,终端使用在要求的期间内执行的交易信息。只有在这段时间内关闭的头寸才会显示在历史中。如果头寸仍未平仓或其平仓时间不在所选区间内,它将不会显示在历史记录中。因此,"头寸 "模式下的总利润和佣金可能与 "订单/交易 "历史模式下的不同。

    例如,您正在查看过去一周的历史。在此期间,有100笔交易被执行,其中98笔打开和关闭了20个头寸。最后两笔交易建立了新的头寸,到现在为止还没有关闭。在这种情况下,交易历史包含100条记录和基于这些交易计算的适当的总价值。当作为头寸查看历史时,你会看到基于98个交易收集的20条记录。在计算总价值时,只有这些数据会被考虑进去。如果经纪人收取进场交易费,交易历史中的最终佣金值将与头寸历史中显示的佣金不同,因为在后一种情况下,最后两个交易将被忽略。

  5. 终端。实现了MQL5程序的快速启动。
  6. 终端。在终端安装文件中增加了新的/beta密钥,允许下载beta版本。在正常模式下,应首先安装发布版本,然后可以更新到测试版本。通过跳过这一步,你可以节省时间和流量。安装开始的例子。
    C:\mt5setup.exe /beta
  7. 终端。固定显示 "交易所股票 "类型的工具的保证金要求。
  8. 终端。通过使用Clang/LLVM编译器,加速了所有平台组件的运行。在某些情况下,编译的速度要快20%。
  9. MQL5。增加了新的DirectX 11功能和3D可视化的着色器。现在,强大的三维图形可以直接在MQL5中创建。

    新的CCanvas3D类是CCanvas自定义图形类 的一个扩展。它可以在\MQL5\Include\Canvas\目录中使用。该类具有通过DirectX API 渲染三维物体的功能。

    • 创建 - 创建一个场景。
    • 附加 - 将一个场景绑定到图表上。
    • 销毁 - 销毁一个场景。
    • ObjectAdd - 向场景中添加一个从基础CDXObject类继承的子对象。
    • Render - 完整的渲染循环,包括清空缓冲区和渲染所有CDXObject,通过ObjectAdd方法添加。
    • 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 - 设置投影矩阵。

    新库的详细文档将很快发布。

    新的函数使用例子可在\MQL5\Experts\Examples\下获得。

    • CorrelationMatrix3D
    • DemoMorphMath3D

    编译它们并在图表上运行,以查看MQL5中的三维可视化可能性。




  10. MQL5。增加了对直接从MQL5操作SQLite数据库的支持。与数据库的连接和执行SQL查询现在可以使用MQL5函数来实现。内部操作是由新的标准库扩展实现的。

    以下是可用的函数。
     //--- opening and closing the database
      int  DatabaseOpen(string filename,UINT flags);
      void DatabaseClose(int database);
      
      //---  working with tables
      bool DatabaseTableExists(int database,string table_name);
    
      //--- preparing an SQL query
      int  DatabasePrepare(int database,string sql,...);
      void DatabaseFinalize(int request);
      
      //--- reading a query result without/with binding to MQL5 structure
      int  DatabaseRead(int request);
      int  DatabaseReadBind(int request,struct or var);
      
      //--- extracting data from query results to different data types
      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[]);
    
      //--- working with transactions
      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      // the y coordinate of the point
       double  x      // the x coordinate of the point
       );
  13. MQL5。我们对程序进行了普遍的优化,以提高性能和减少资源消耗。
  14. MQL5。增加了数学计算的例子,可以在策略测试器中执行。它们可以在\MQL5\Experts\Examples\Math 3D\目录下获得。
  15. MQL5。引入了更严格的命名空间 控制。
  16. MQL5。在MQL5程序中使用.NET库时,增加了链接库的加载。如果使用的.NET库需要其他库来运行,编译器将尝试从MQL5\Libraries自动下载所需的库。
  17. MQL5。固定了MetaTrader模块 中的时间操作,用于Python整合。现在所有的输出数据都使用终端连接的交易服务器的时间。
  18. 测试仪。大量的新功能和改进。


    金融工具的自定义设置
    现在你可以改变主要交易工具的设置,用它来进行测试/优化。几乎所有的规格参数都可以被覆盖:交易量、交易模式、保证金要求、执行模式和其他设置。因此,如果你需要在不同的条件下检查专家顾问,没有必要创建一个单独的自定义符号并下载其历史。这可以通过改变标准符号设置来实现。



    如果符号规格是自定义的,齿轮图标和符号图标会被标记为星号。这表明自定义参数被用于当前的测试。




    最后设置/专家顾问/图表
    使用新的上下文菜单命令进行快速测试或优化设置。选择最后使用的测试器设置,最近的图表或应用程序。




  19. MetaEditor。增加了直接从MetaEditor编译C/C++和Python项目的能力。现在,可以用内置编辑器管理多语言项目。

    如果您的电脑上安装了适当的编译器,MetaEditor会检测到它们并添加到设置中。另外,您可以在编译器选项卡下指定所需组件的路径。在同一标签下,您可以点击相应字段旁边的 "安装 "来下载这些组件。



    之后,您可以像编译MQL5程序一样编译C/C++和Python项目。

  20. MetaEditor。增加了对共享项目目录内的子项目的支持,旨在通过MQL5存储 共享项目开发。以前,只能在顶层创建单一项目。
  21. MetaEditor:内置调试器更新。
  22. 元编辑器。在使用代码样式器时,固定添加了一个函数头。
  23. MetaEditor:"跳到上一个/下一个光标位置 "命令现在不仅在视图菜单中可用,而且在工具栏中也可用。
  24. 元编辑器。项目名称中现在可以使用空格了。
  25. 安卓。增加了在经纪商网站上快速切换到存款/取款页面的功能。

    不需要在经纪商网站的交易室中搜索相应的功能。终端中直接提供快速导航命令:用户可以从账户和交易部分切换到存款和提款页面。



    • 存款/取款操作只有在经纪商方面为交易账户启用适当的功能时才可用。
    • 交易终端不执行任何账户入金/出金操作。集成的功能将用户重定向到相应的经纪人网站页面。
  26. 安卓系统。历史上的头寸现在按关闭日期排序。
  27. 安卓版。在历史部分 增加了用红色和绿色的垂直线来标记通过止损或止盈关闭的头寸。
  28. 安卓系统。在交易符号规范 中增加了新的字段。

    • 类别 - 该属性用于金融工具的额外标记。例如,这可以是符号所属的市场部门。农业、石油和天然气及其他。只有当经纪人提供了适当的信息时,才会显示该类别。
    • 交易所 - 证券交易的交易所的名称。只有在经纪人提供适当信息的情况下才会显示该类别。

  29. 安卓:增加了交易符号规范中的新字段。在交易部分 增加了保证金追缴状态指示。在这种状态出现时,保证金、自由保证金和保证金水平参数显示为红色。
  30. 安卓。在平板电脑上固定显示OTP部分 的打开按钮。
  31. 安卓。其他修复和改进。
  32. iPhone/iPad。增加了在经纪商网站上快速切换到存款/取款页面的功能。更多细节,请看Android版MetaTrader 5的新内容列表。



  33. iPhone/iPad。为iOS/iPadOS增加了黑暗模式支持。
  34. iPhone/iPad。一次性密码 部分已在iPad版本中可用。
  35. iPhone/iPad:增加了对iOS/iPad的黑暗模式支持。通过止损或止盈平仓的头寸在历史记录部分 用红色和绿色垂直线标记。
  36. iPhone/iPad。历史上的头寸现在是按关闭日期排序的。如果仓位尚未关闭,则使用其开仓日期进行排序。
  37. iPhone/iPad。其他修复和改进。
  38. 基于崩溃日志的修复。

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


 

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

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

Renat Fatkhullin, 2019.12.07 09:24

在build 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 




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

新版本的MetaTrader 5平台build 2265。在MQL5中实现3D可视化的DirectX功能,并在策略测试器中设置工具

Renat Fatkhullin, 2019.12.07 08:28

看看2265版中3D图形的新功能与实例。

  • /包括/画布--为DirectX提供了很多功能
  • /专家/例子/相关矩阵3D
  • /专家/例子/数学3D变形
  • / 脚本 / 示例 / Remnant 3D

还有一套用于处理SQLite数据库 的函数。


附加的文件:
SqLiteTest.zip  2709 kb
 

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

一些工具不能在MT5的新2265版本中工作--如何解决?

Aytugan Khafizov, 2019.12.09 17:30

我们发布了MT5终端测试版,对ticksize和StringTrim问题进行了修复。

请在MetaQuotes-Demo服务器上开设模拟账户,下载更新。

并向我们提供反馈。

 

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

新MetaTrader 5平台Build 2280

MetaQuotes软件公司。, 2019.12.12 15:54

MetaTrader 5平台的更新将于2019年12月13日星期五发布。该更新的特点是根据我们在之前MetaTrader 5 build 2265主要更新 后收到的反馈意见进行重要的补充和修复。

  1. 终端。修正了一个错误,该错误导致无法从没有数据的图表中删除一个专家顾问。
  2. 终端。修正了Wine下的图表标题显示。
  3. MQL5。改进了MQL5程序的加载和编译速度。
  4. MQL5。在图表上的双击现在作为单击事件 传递给MQL5程序。以前,此类事件不被处理。
  5. MQL5。修正了StringTrimRight 函数操作。
  6. 测试器。修正了一个错误,它导致设置中的测试符号为空。这个错误可能是由于在具有不同交易工具集的交易账户之间切换造成的。新的行为:如果以前选择的符号在当前连接的交易账户中找不到,则会自动选择市场观察中的第一个可用符号。
  7. MetaEditor。修正了重新打开项目属性时的应用程序图标加载。
  8. 增加了DirectX 3D可视化功能 的文档。
  9. 更新了用户界面的翻译。
  10. 基于崩溃日志的修复。

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

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

 

OpenCL


论坛

CodeBase

      这些文章

        的博客

          文档

              市场


              Taking Neural Networks to the next level
              Taking Neural Networks to the next level
              • 2019.11.29
              • www.mql5.com
              This thread won't be about a question or problem, but rather about the anouncement of the presentation and documentation of an exciting trading con...
               

              扩展策略生成器的功能--文章

              目录 简介

              在系列文章的第一部分,我们分析了美林模式,并将其应用于不同的数据阵列,如价格和基于价格的震荡器ATR、CCI和WPR等等。文章的目的是探索和评估在外汇和其他市场上使用指定模式的前景。第二部分 致力于创建一个策略生成器,使用之前讨论的模式组装简单的策略。在第三部分,我们将扩展策略创建和测试功能。我们将增加除点以外的手数工作的可能性,以及查看测试结果的功能。


              Extending Strategy Builder Functionality
              Extending Strategy Builder Functionality
              • www.mql5.com
              In the first part of the article series, we analyzed Merrill patterns and applied them to different data arrays, such as the price and price-based oscillators ATR, CCI and WPR, among others. The purpose of the article was to explore and evaluate the prospects of using the specified patterns on forex and other markets. The second part was...