MetaTrader 5 build 3210: modificado el algoritmo de cálculo del Ratio de Sharpe e añadidos nuevos métodos de matriz

Modificado el algoritmo de cálculo del Ratio de Sharpe, ahora se calcula de forma clásica y su valor se convierte al intervalo anual

11 febrero 2022

MQL5

  1. Añadidas las funciones Min, Max, ArgMin, ArgMax y Sum para vectores y matrices, que permiten encontrar los valores mínimos y máximos, los índices adecuados y la suma.
  2. Añadido el soporte de métodos Flat para matrices. Esto permite dirigir un elemento de la matriz a través de un índice, en lugar de dos.
    double matrix::Flat(ulong index) const;      // getter
    void matrix::Flat(ulong index,double value); // setter

    Pseudocódigo para calcular la dirección de un elemento de la matriz:

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

    Por ejemplo, para una matriz mat(3,3), el acceso a los elementos puede escribirse como sigue

      en lectura —  x=mat.Flat(4), lo que equivale a escribir x=mat[1][1]
      en escritura —  mat.Flat(5, 42), lo que equivale a escribir mat[1][2]=42

    Si se llama a una función con un índice de matriz incorrecto, se generará el error crítico de ejecución OutOfRange.

  3. Mejorado el formato de los números fraccionarios en los parámetros de entrada de programas MQL5. Al leer algunos números reales en los parámetros de entrada, se sustituían los números con más ceros, por ejemplo 0,4 se representaba como 0,400000000002.
  4. Corregidos los errores en la biblioteca matemática Math\Stat\Math.mqh. Además, la función MathSample de esta biblioteca ha sido modificada para cumplir con el comportamiento clásico de las mismas bibliotecas matemáticas al realizar el muestreo con retorno.
  5. Corregido el error en el funcionamiento de CopyTicks/CopyTicksRange que provocaba que se dieran datos obsoletos a medianoche para aquellos casos en los que no se recibían ticks para un símbolo.
  6. Añadidos los nuevos valores INDICATOR_FIXED_MINIMUM e INDICATOR_FIXED_MAXIMUM en ENUM_CUSTOMIND_PROPERTY_INTEGER.
    Estas propiedades se pueden usar para activar/desactivar la fijación de los valores mínimos y máximos del indicador mediante la función IndicatorSetInteger. Al llamar a IndicatorSetInteger(INDICATOR_FIXED_MINIMUM/INDICATOR_FIXED_MAXIMUM, true) se utiliza el valor mínimo/máximo actual, respectivamente.



Tester

  1. Modificado el algoritmo de cálculo del Ratio de Sharpe, ahora se calcula de forma clásica y su valor se convierte al intervalo anual. El algoritmo anterior se basaba en la dispersión de pérdidas y ganancias (PnL), pero no tenía en cuenta las fluctuaciones de la equidad en las posiciones abiertas. Ahora se consideran las subidas y bajadas de la equidad, y el propio valor del Ratio de Sharpe se trata de forma clásica:
    • Sharpe Ratio < 0                 La estrategia no es rentable, no sirve.  Mal.
    • 0 < Sharpe Ratio  < 1.0       El riesgo no se amortiza. Estas estrategias pueden practicarse si no hay alternativas.  Incierto.
    • Ratio de Sharpe ≥ 1,0        Si el Ratio de Sharpe es superior a uno, significa que el riesgo compensa, el portafolio/estrategia funciona. Bien.
    • Ratio de Sharpe ≥ 3,0        Un indicador alto sugiere que la probabilidad de sufrir pérdidas en una operación determinada es muy baja. Muy bien.

Terminal

  1. Optimizado el consumo de memoria del terminal.
  2. Mejorado el funcionamiento del subsistema de red para aumentar el rendimiento y reducir la latencia de red.
  3. Eliminada la visualización del nivel cero de la retícula en un indicador cuando el dibujado de esta se encuentra desactivado.