MetaTrader 5 build 3210 : Nouvelles méthodes matricielles et contrôle des valeurs minimales/maximales des indicateurs

Algorithme de calcul du ratio de Sharpe révisé pour correspondre à la formule traditionnelle, dans laquelle la valeur correspond à un intervalle d'un an

11 février 2022

MQL5

  1. Ajout des fonctions Min, Max, ArgMin, ArgMax et Sum pour les vecteurs et les matrices. Utilisez ces fonctions pour trouver les valeurs minimales et maximales, les indices pertinents et la somme.
  2. Ajout du support des méthodes Flat pour la matrice. Avec ces méthodes, un élément de matrice peut être atteint via un index au lieu de deux.
    double matrix::Flat(ulong index) const;      // getter
    void matrix::Flat(ulong index,double value); // setter

    Pseudocode pour calculer l'adresse d'un élément matriciel :

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

    Par exemple, pour 'matrix mat(3,3)', l'accès aux éléments peut s'écrire comme suit :

      lecture : 'x=mat.Flat(4)', qui équivaut à 'x=mat[1][1]'
      écriture : 'mat.Flat(5, 42)', équivaut à 'mat[1][2]=42'

    Si la fonction est appelée avec un index de matrice non valide, l'erreur d'exécution critique OutOfRange sera générée.

  3. Formatage amélioré des nombres à virgule flottante dans les paramètres d'entrée du programme MQL5. Lors de la lecture de certains nombres réels, des nombres avec de nombreux zéros ont été remplacés dans les paramètres d'entrée, par exemple, 0,4 était représenté par 0,400000000002.
  4. Correction d'erreurs dans la bibliothèque mathématiqueMath\Stat\Math.mqh. La fonction MathSample de cette bibliothèque a été révisée pour correspondre au comportement traditionnel des bibliothèques mathématiques similaires lors de l'échantillonnage avec retour en arrière.
  5. Correction de l'erreur CopyTicks/CopyTicksRange qui pouvait entraîner le retour de données obsolètes lors du franchissement de minuit, lorsqu'aucun tick n'est fourni pour l'instrument financier.
  6. Ajout de nouvelles valeurs INDICATOR_FIXED_MINIMUM et INDICATOR_FIXED_MAXIMUM dans l'énumération ENUM_CUSTOMIND_PROPERTY_INTEGER.
    À l'aide de ces propriétés, vous pouvez fixer ou défixer les valeurs d'indicateur minimales et maximales à l'aide de la fonction IndicatorSetInteger. Lors de l'appel de IndicatorSetInteger(INDICATOR_FIXED_MINIMUM/INDICATOR_FIXED_MAXIMUM, true), la valeur minimale ou maximale actuelle est utilisée.



Testeur

  1. Algorithme de calcul du ratio de Sharpe révisé pour correspondre à la formule traditionnelle, dans laquelle la valeur correspond à un intervalle d'un an. L'algorithme précédent était basé sur la variabilité du PnL obtenu et ignorait les fluctuations des actions par rapport aux positions ouvertes. Désormais, le calcul inclut les mouvements des actions, tandis que le ratio de Sharpe est interprété de manière classique :
    • Ratio de Sharpe < 0              La stratégie n'est pas rentable et n'est pas adaptée. Mauvais.
    • 0 < Ratio de Sharpe  < 1,0    Le risque ne paie pas. De telles stratégies peuvent être envisagées lorsqu'il n'y a pas d'alternative. Indéfini.
    • Ratio de Sharpe ≥ 1,0          Si le ratio de Sharpe est supérieur à un. Cela peut signifier que le risque est payant et que le portefeuille/stratégie peut donner des résultats. Bon.
    • Ratio de Sharpe ≥ 3,0          Une valeur élevée indique que la probabilité d'obtenir une perte dans chaque transaction particulière est très faible. Très bien.

Terminal

  1. Optimisation de la consommation mémoire du terminal.
  2. Fonctionnement amélioré de la plateforme avec un sous-système réseau pour améliorer les performances et réduire les retards du réseau.
  3. Suppression de l'affichage du niveau zéro de la grille dans les indicateurs lorsque le rendu de la grille est désactivé.