MetaTrader 5 Build 1430 : Onglet Exposition Mis à Jour

Implémentation du nouvel algorithme de calcul de l'onglet Exposition pour les marchés boursiers

16 septembre 2016


Terminal

  1. Implémentation du nouvel algorithme de calcul de l'onglet Exposition pour les marchés boursiers. La plateforme adapte dorénavant l'affichage des actifs suivant le système de gestion du risque appliqué au compte de trading : modèle Forex, Futures ou Boursier.

    La session Actifs est utile pour ceux tradant le Forex ou les futures en bourse affichant leur statut actuel sur le marché. Les mêmes devises peuvent être trouvées sous différents symboles : comme l'une des devises d'une paire, comme devise de base, etc. Par exemple, vous pouvez avoir des directions opposées sur les GBPUSD, USDJPY et GBPJY. Dans cette situation, il est très difficile de comprendre combien de devises vous détenez et de combien vous avez besoin. Avoir plus de trois positions complique encore plus la tâche. Dans ce cas, le statut total du compte est facilement disponible dans l'onglet Actifs.
    Utilisons les trois mêmes positions comme exemple :

    Buy GBPJPY 1 lot à 134.027 — reçus 100 000 GBP, donnés 134 027 000 JPY
    Sell USDJPY 1 lot à 102.320 — donnés 100 000 USD, reçus 102 320 000 JPY
    Sell GBPUSD 1 lot à 1.30923 — donnés 100 000 GBP, reçus 103 920 USD

    Nous avons acheté et vendu 100 000 GPB simultanément. Nous avons 0 GBP, et l'onglet Actifs n'affiche pas cette devise. Pour l'USD, nous en avons donné dans un cas et reçus dans un autre. L'onglet Actifs calcule le revenu final et l'ajoute au solde actuel puisque la devise du dépôt est également l'USD. Le JPY a participé dans deux transactions, l'onglet affiche donc sa valeur totale.




    Ceux utilisant le modèle boursier peuvent utiliser la section pour comprendre comment leur argent est utilisé. Contrairement au modèle précédent, les fonds sont retirés/ajoutés directement lorsque les transactions sont effectuées. Par exemple, si vous achetez de l'EURRUB, vous reçevez de l'EUR en une seule fois, tandis la somme appropriée en RUB est retirée du solde. Pendant le trading, le solde du compte peut même devenir négative : lorsque vous utilisez de l'argent emprunté alors que les actifs achetés sont utilisés comme collatéral. Dans ce cas, l'onglet Actifs vous permet de comprendre facilement le statut du compte de trading.

    Vous pouvez également voir la valeur de liquidation ici — le montant des fonds du compte et le prix (le résultat) de la clôture de toutes les positions actuelles au prix du marché.





  2. Correction de l'affichage du type de la transaction dans l'historique des opérations de trading.
  3. Correction de la répétition de l'affichage de la fenêtre de notification de risque lors de reconnexion à un compte de trading.
  4. Correction et optimisation de l'utilisation de la fenêtre de sélection d'un symbole de trading dans le cas d'un grand nombre de symboles (plusieurs milliers et plus).
  5. Correction de l'affichage des niveaux des indicateurs intégrés calculés sur la base d'une Moyenne Mobile (Bandes de Bollinger, Adaptive Moving Average, etc.). Auparavant, une erreur survenait lors du dessin des indicateurs dans une sous-fenêtre séparée.
  6. Correction d'une erreur qui pouvait occasionnellement interférer avec le placement d'ordres sur des contrats de futures dans le cas où le prix de l'ordre coïncide avec la limite supérieure ou inférieure du prix du contrat.

MQL5

  1. Compilation optimisée et accélerée des applications MQL5.
  2. Ajout du support des modificateurs 'final' et 'override' pour les classes, les structures et les fonctions.

    Modificateur 'final' pour les classes et les structures
    La présence du modificateur 'final' dans la déclaration d'une structure ou d'une classe interdit tout héritage ultérieur. S'il n'y a pas besoin de faire des changements supplémentaires dans la classe (structure) ou si ces changements ne sont pas acceptables pour des raisons de sécurité, déclarez cette classe (structure) avec le modificateur 'final'. Dans ce cas, toutes les méthodes de la classe sont également considérée implicitement comme 'final'.
    class CFoo final
      {
      //--- corps de la classe
      };
     
    class CBar : public CFoo
      {
      //--- corps de la classe
      };
    Lors de la tentative d'héritage d'une classe ayant le modificateur 'final' comme ci-dessus, le compilateur affiche une erreur :
    cannot inherit from 'CFoo' as it has been declared as 'final'
    see declaration of 'CFoo'

    Modificateur 'override' pour les fonctions
    Le modificateur 'override' signifie qu'une fonction déclarée devrait toujours redéfinir la méthode de la classe parent. L'utilisation des modificateurs vous permet d'éviter des erreurs lors des spécialisations, telles qu'un changement de signature de la méthode. Par exemple, la méthode 'func' acceptant une variable de type 'int' est définie dans la classe de base :
    class CFoo
      {
       void virtual func(int x) const { }
      };
    La méthode est surchargée dans la classe héritée :
    class CBar : public CFoo
      {
       void func(short x) { }
      };
    Mais le type de l'argument est changé par erreur de 'int' en 'short'. En fait, la surcharge de la méthode au lieu de sa spécialisation est effectuée dans ce cas. Tout en se conformant à l'algorithme de surcharge de la définition d'une fonction, le compilateur peut dans certains cas sélectionner une méthode définie dans la classe de base au lieu de celle spécialisée.

    Pour éviter ce genre d'erreurs, le modificateur 'override' devrait être explicitement ajouté à la méthode spécialisée.
    class CBar : public CFoo
      {
       void func(short x) override { }
      };
    Si la signature de la méthode est changée pendant la spécialisation, le compilateur ne peut pas trouver la méthode de la classe parent ayant la même signature, provoquant l'erreur de compilation :
    'CBar::func' method is declared with 'override' specifier but does not override any base class method

    Modificateur 'final' pour les fonctions

    Le modificateur 'final' agit de la façon inverse — il empêche la spécialisation d'une méthode dans les classe dérivées. Si l'implémentation de la méthode est auto-suffisante et complète, déclarez-la avec le modificateur 'final' pour vous assurer qu'elle ne sera pas changée ultérieurement.
    class CFoo
      {
       void virtual func(int x) final { }
      };
     
    class CBar : public CFoo
      {
       void func(int) { }
      };
     
    Lors de la tentative de spécialisation d'une méthode ayant le modificateur 'final' comme ci-dessus, le compilateur affiche une erreur :
    'CFoo::func' method declared as 'final' cannot be overridden by 'CBar::func'
    see declaration of 'CFoo::func'
  3. Correction de la compilation des fonctions template avec des paramètres par défaut.

Market

  1. Correction de quelques erreurs dans le tri des produits du Market.

Tester

  1. Correction de la mise à jour des prix actuels du marché pour les ordres et positions ouvertes dans le mode de test visuel.
  2. Suppression du slippage pendant l'exécution des ordres Buy Limit et Sell Limit lors du test de symboles boursiers.
  3. Correction de la génération occasionnelle de prix incorrects dans le mode de test "Prix d'ouverture".
  4. Correction de la génération d'évènements OnTradeTransaction lors du test.
  5. Lors d'un test basé sur les ticks réels, les données incorrectes des prix des ticks (bid ou last suivant le prix utilisé pour générer une barre) et les valeurs low et high de la barre de la minute existante apparaissent dans le journal du testeur.

MetaEditor

  1. Correction de l'affichage du profilage des données dans les fichiers de code source.

Documentation mise à jour.