MetaTrader 5 build 3260:批量操作,矩阵和向量函数,增强聊天功能

MetaTrader 5新功能

15 四月 2022

程序端

  1. 添加批量平仓和取消挂单的命令。

    新“批量操作”命令已添加到交易选项卡的快捷菜单。可用命令列表会根据所选操作和您的账户类型自动形成。



    菜单中始终提供以下命令:
    • 关闭锁仓账户中的所有持仓,系统尝试反向平仓(Close By),然后按照常规程序关闭剩余持仓。
    • 关闭所有盈利持仓或亏损持仓
    • 删除所有挂单
    • 删除特定类型的挂单:limit(限价单)、stop(停损单)和stop limit(停损限价)

    如果您选择一个持仓,菜单中会出现其他命令:
    • 关闭交易品种的所有持仓
    • 关闭同方向的所有持仓(锁仓账户)
    • 关闭相同交易品种的反向持仓(锁仓账户)
    • 持仓逆转(单边账户)

    如果您选择挂单,菜单中会出现其他命令:
    • 删除同一交易品种的所有挂单
    • 删除相同交易品种的所有相同类型的挂单

    这些命令仅在平台设置中启用一键交易时可用:工具\选项\交易。
  2. 增强内部聊天功能:
    • 添加回复消息的功能。回复中将引用源消息文本。
    • 添加创建不同内容类型的消息的功能,例如带有文本的图像和带有附件的文本等。
    • 修正显示已读和未读消息之间的分隔符。
    • 错误修复和稳定性改进。



  3. 优化和加快程序端图形系统的运行速度。界面渲染需要的资源将会更少。
  4. 修正期货每日价格变化的计算。如果交易商提供清算价格,该价格将被用于计算。
    ((Last - Clearing Price)/Clearing Price)*100
    文档中提供了所有计算类型的详细说明。

  5. 修正购买MQL5服务时出现的错误:
    • 在某些条件下,支付系统可能为成功操作返回错误。
    • 市场中的中间产品租用环节可能会显示不正确的价格。

  6. 修正购买/下载市场产品页面上的“开始”按键的操作。现在,该按键在第一个打开的图表上正确启动应用程序。
  7. 修正生成持仓历史时,对某些交易类型的考虑。

MQL5

  1. 添加处理矩阵和向量的新函数:
    • Median — 返回矩阵或向量元素的中位数
    • Quantile — 返回矩阵/向量元素或沿指定轴的元素的第q个分位数
    • Percentile — 返回矩阵/向量元素或沿指定轴的元素的第q个百分位数
    • Std — 计算矩阵或向量元素的标准差
    • Var — 计算矩阵或向量元素的方差
    • CorrCoef — 计算矩阵/向量相关系数
    • Correlate — 计算两个向量的交叉相关
    • Convolve — 返回两个向量的离散,线性卷积
    • Cov — 计算协方差矩阵

  2. 我们已经开始为数值数组添加内置方法。新方法增强了可用性,提高代码紧凑性,并加强代码与其他语言的兼容性。

    以下三种方法已经可用:
    • ArgSort — 按指定维度对数组进行排序;默认使用最后一个 (axis=-1)。
    • Range — 返回指定数组维度中的元素数。类似于ArrayRange
    • Size — 返回数组元素的数量。类似于ArraySize

    例如:
    void OnStart()
      {
       int arr[4][5]=
         {
            {22, 34, 11, 20,  1},
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            {10, 36,  2, 12,  5},
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            {33, 37, 25, 13,  4},
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
            {14,  9, 26, 21, 59}
         };
       ulong indexes[4][5];
    //--- 排序数组
       arr.ArgSort(indexes,-1,0);
       Print("indexes");  
       ArrayPrint(indexes);
      }
    
    // 结果日志:
    // 索引
    //     [,0][,1][,2][,3][,4]
    // [0,]   4   2   3   0   1
    // [1,]   2   4   0   3   1
    // [2,]   4   3   2   0   1
    // [3,]   1   0   3   2   4

  3. 我们已开始为字符串添加内置方法。

    目前可以使用以下方法:
    • BufferSize — 返回为字符串分配的缓冲区大小。
    • Compare — 比较两个字符串并将比较结果返回为整数。
    • Length — 返回字符串中的字符数。
    • Find — 搜索字符串中的子字符串。
    • Upper — 将字符串大写。
    • Lower — 将字符串转换为小写。
    • Replace — 替换一个子字符串。
    • Reserve — 为字符串保留缓冲区。

    所有方法都类似于字符串函数

    例如:
    void OnStart()
      {
       string test="some string";
       PrintFormat("String length is %d",test.Length());
      }
    
    // 结果日志:
    // 字符串长度是11
  4. 将SYMBOL_SUBSCRIPTION_DELAY值添加到ENUM_SYMBOL_INFO_INTEGER枚举中,以延迟特定交易品种的报价交付。

    它仅用于基于订阅的交易品种。延迟通常适用于试用模式提供的数据。

    只能为在市场报价中选择的交易品种请求该属性。否则,将返回ERR_MARKET_NOT_SELECTED (4302)错误。

  5. 将ACCOUNT_HEDGE_ALLOWED属性添加到ENUM_ACCOUNT_INFO_INTEGER枚举中 — 启用反向持仓和挂单。该属性仅用于锁仓账户,以符合特定监管要求,根据该监管要求,同一交易品种的账户不能有反向持仓,但允许同向持仓。

    如果禁用此选项,则账户将不允许持有同一交易品种的反向持仓和订单。例如,如果该账户是Buy持仓,那么用户就不能建立Sell持仓或下单卖出挂单。如果用户尝试执行此类操作,则会返回TRADE_RETCODE_HEDGE_PROHIBITED错误。

  6. ENUM_SYMBOL_INFO_DOUBLE枚举中的新属性:
    • SYMBOL_SWAP_SUNDAY
    • SYMBOL_SWAP_MONDAY
    • SYMBOL_SWAP_TUESDAY
    • SYMBOL_SWAP_WEDNESDAY
    • SYMBOL_SWAP_THURSDAY
    • SYMBOL_SWAP_FRIDAY
    • SYMBOL_SWAP_SATURDAY

    使用这些值来获取一周中特定日期的库存费计算率。1 — 单库存费,3 — 三倍库存费,0 — 无库存费。

  7. 修正CopyTicksCopyTicksRange 函数操作。过夜时,该错误可能导致返回过时的数据。当没有为交易品种提供报价时会发生错误。
  8. 修复崩溃日志中报告的错误。