MetaTrader 5 build 3210:修订夏普比率计算算法、新矩阵方法和对指标最小值/最大值的控制

修正夏普比率计算算法以匹配传统公式,公式值对应于一年的间隔。之前的算法基于获得的PnL的变量,却忽略了针对未结持仓的净值波动。

11 二月 2022

MQL5

  1. 为向量和矩阵添加Min、Max、ArgMin、ArgMax和Sum函数。使用函数查找最小值和最大值、相关指数和总和。
  2. 添加对矩阵平面方法的支持。使用这些方法,矩阵元素可以通过一个索引而不是两个索引来寻址。
    double matrix::Flat(ulong index) const;      // getter
    void matrix::Flat(ulong index,double value); // setter

    计算矩阵元素地址的伪代码:

    ulong row=index / mat.Cols();
    ulong col=index % mat.Cols();
    
    mat[row,col]

    例如,对于'matrix mat(3,3)',访问元素可以按如下写出:

       阅读:'x=mat.Flat(4)',相当于'x=mat[1][1]'
       书写:'mat.Flat(5, 42)',相当于'mat[1][2]=42'

    如果使用无效的矩阵索引调用函数,则会抛出OutOfRange严重执行错误

  3. 改进MQL5程序输入参数中浮点数的格式。在读取一些实数时,将带有许多零的数字代入输入参数,例如,0.4表示为0.400000000002。
  4. 修正Math\Stat\Math.mqh数学库中出现的错误。该数学库中的MathSample函数已经过修改,以匹配类似数学库在回溯采样时的传统行为。
  5. 修正当没有提供交易品种报价时,可能导致过夜返回过时数据的CopyTicks/CopyTicksRange错误。
  6. 在ENUM_CUSTOMIND_PROPERTY_INTEGER枚举中,添加INDICATOR_FIXED_MINIMUM和INDICATOR_FIXED_MAXIMUM新值。
    使用这些属性,您可以使用IndicatorSetInteger函数修正/取消修正最小和最大指标值。调用IndicatorSetInteger(INDICATOR_FIXED_MINIMUM/INDICATOR_FIXED_MAXIMUM, true)时,使用当前的最小值或最大值。





Tester

  1. 修正夏普比率计算算法以匹配传统公式,公式值对应于一年的间隔。之前的算法基于获得的PnL的变量,却忽略了针对未结持仓的净值波动。现在计算包括净值变动,而夏普比率则是按照经典方式进行解释:
    • 夏普比率 < 0 该策略无利润,也不合适。不好。
    • 0 < 夏普比率 < 1.0 风险不会得到回报。当没有其他选择时,可以考虑这种策略。不明确。
    • 夏普比率 ≥ 1.0 如果夏普比率大于 1。这可能意味着风险得到回报,并且投资组合/策略可以显示结果。好。
    • 夏普比率 ≥ 3.0 高数值表示在每笔特定交易中获得损失的概率非常低。非常好。

程序端

  1. 优化程序端的内存消耗。
  2. 通过网络子系统改进平台操作,以提高性能并减少网络延迟。
  3. 删除禁用网格渲染时指标中零网格级别的显示。