MetaTrader 5 Build 2340: Gestion des paramètres de compte dans le Testeur et intégration étendue avec Python

Ajout de nouvelles fonctionnalités pour travailler avec les bases de données SQLite. Dans la mise à jour précédente de la plateforme, nous avons introduit la prise en charge des opérations avec les bases de données SQLite directement à partir de MQL5. Les principales fonctions sont devenues disponibles via l'interface utilisateur de MetaEditor

21 février 2020

MetaEditor

  1. Ajout de nouvelles fonctionnalités pour travailler avec les bases de données SQLite.

    Dans la mise à jour précédente de la plateforme, nous avons introduit la prise en charge des opérations avec les bases de données SQLite directement à partir de MQL5. Les principales fonctions sont devenues disponibles via l'interface utilisateur de MetaEditor :

    • Créer et connecter des bases de données
    • Afficher les tables et effectuer des requêtes de données rapides
    • Créer et exécuter des requêtes SQL, annuler les modifications

    Comment ça fonctionne
    La fonctionnalité de création rapide de base de données est disponible à partir de l'assistant MQL5. Vous pouvez facilement créer votre première table et définir ses champs.


    Lors de la création de la base de données, vous serez redirigé vers une nouvelle section du Navigateur, qui propose des commandes de gestion des données.

    Les tables de base de données sont affichées dans la fenêtre de gauche. Double-cliquez sur le nom de la table pour interroger rapidement les 1.000 premiers enregistrements. Dans cette section du navigateur, vous pouvez également créer et ouvrir d'autres bases de données, ainsi que travailler avec des tables.

    La base de données peut être gérée dans la fenêtre principale de l'éditeur, dans laquelle vous pouvez remplir le tableau, rechercher et sélectionner des données, saisir des requêtes SQL et exécuter d'autres opérations :


    Pour plus de détails sur les opérations de MetaTrader 5 avec des bases de données, veuillez lire l'article intitulé "SQLite : gestion native des bases de données SQL dans MQL5".

  2. Prise en charge étendue des projets multilingues. Cette mise à jour offre des possibilités plus larges pour travailler avec des scripts Python :

    • Désormais, ces scripts peuvent être créés à l'aide de l'assistant MQL5, tandis que vous pouvez instantanément ajouter les dépendances de bibliothèque requises dans le code.
    • Des icônes spéciales ont été ajoutées dans le navigateur et la syntaxe appropriée est disponible dans l'éditeur.
    • Lors de l'exécution d'un script via MetaEditor, les messages de la console Python (stdout, stderr) apparaissent sous la section Erreurs.


    Cliquez sur "Compiler" dans l'éditeur pour exécuter le script :



    Pour travailler avec Python, n'oubliez pas de spécifier son chemin sous la section Paramètres \ Compilateurs dans MetaEditor. Pour activer l'utilisation de la bibliothèque MetaTrader 5, installez-la à l'aide de la commande suivante :
    pip install MetaTrader 5
    Pour plus de détails sur l'intégration de Python, veuillez lire la documentation correspondante.
  3. Ajout de l'affichage des fichiers de base de données SQLite (*.db; *.Sdb; *.Sqlite; *.Db3; *.S3db; *.Sqlite3) dans le Navigateur.
  4. Correction des erreurs d'enregistrement des propriétés du projet.

MQL5

  1. Intégration de Python entièrement révisée. La mise à jour implique de nombreuses nouvelles fonctions et un nouveau nom de commande.

    Nouveau nom
    Les commandes existantes ont été renommées comme suit :
    MT5Initialize       -> initialize
    MT5Shutdown         -> shutdown
    MT5TerminalInfo     -> terminal_info
    MT5Version          -> version
    MT5CopyRatesFrom    -> copy_rates_from
    MT5CopyRatesFromPos -> copy_rates_from_pos
    MT5CopyRatesRange   -> copy_rates_range
    MT5CopyTicksFrom    -> copy_ticks_from
    MT5CopyTicksRange   -> copy_tick_range

    Nouvelles commandes
    La liste des commandes supportées a été étendue. Ajout de fonctions de trading, ainsi que des fonctions pour travailler avec l'historique de trading et pour recevoir les symboles financiers et les données du compte courant.

    • account_info() retourne les information du compte courant. Un analogue de AccountInfoInteger , AcountIndoDouble et AccountInfoString.
    • positions_total() retourne le nombre de positions ouvertes. Un analogue de PositionsTotal.
    • positions_get(symbol, ticket) retourne les positions ouvertes par symbole ou par ticket.
    • orders_total() retourne le nombre d'ordres. Un analogue de OrdersTotal.
    • orders_get(symbol, ticket) retourne les ordes d'ouverture par symbole ou par ticket.
    • history_orders_total(from, to) retourne le nombre d'ordres de l'intervalle spécifié de l'historique.
    • history_orders_get(from, to, position, ticket) retourne le nombre d'ordres de l'intervalle spécifié de l'historique, par ticket ou filtrés par position.
    • history_deals_total() retourne le nombre de transactions dans l'historique. Un analogue de HistoryDealsTotal.
    • history_deals_get(from, to, position, ticket) retourne les transactions de l'intervalle spécifié de l'historique, par ticket ou filtrées par position.
    • symbol_info(symbol) retourne les informations d'instrument financier. Un analogue de SymbolInfoInteger, SymbolInfoDouble, SymbolInfoString.
    • symbol_info_tick(symbol) retourne le dernier tick par symbole. Un analogue de SymbolInfoTick.
    • symbol_select(symbol, enable) active/désactive un symbole dans le Market Watch. Un analogue de SymbolSelect.
    • order_check(request) vérifie la marge d'un ordre. Un analogue de OrderCheck.
    • order_send(request) envoie un ordre au serveur. Un analogue de OrderSend.
    • order_calc_margin(action, symbol, volume, price) calcule la marge d'un ordre. Un analogue de OrderCalcMargin.
    • order_calc_profit(action, symbol, volume, price_open, price_close) calcule le profit. Un analogue de OrderCalcProfit.

    Exécution de scripts Python sur des graphiques
    Les scripts Python peuvent être exécutés directement sur les graphiques de la plateforme, de manière similaire aux programmes MQL5 standard. Ces scripts sont signalés par des icônes spéciales dans le Navigateur.


    Les messages de script seront affichés dans la section "Boîte à outils \ Experts". Si une bibliothèque MetaTrader 5 est utilisée dans le script, elle peut recevoir des symboles de trading et des données de compte, ainsi que réaliser des opérations de trading.

    Les scripts Python peuvent être exécutés sur le même graphique en parallèle avec d'autres scripts MQL5 et Expert Advisors. Pour arrêter un script avec une exécution en boucle, supprimez-le du graphique.

    Protection supplémentaire
    Pour activer une protection de compte supplémentaire lors de l'utilisation de bibliothèques Python tierces, vous pouvez utiliser l'option "Désactiver le trading automatisé via une API Python externe" dans les paramètres du terminal.


    Les scripts Python ne peuvent effectuer des opérations de trading que lorsque cette option est désactivée.

  2. Relance considérablement accélérée des programmes MQL5 et recréation d'indicateurs personnalisés à partir des programmes MQL5. Dans certains cas, les opérations sont effectuées 100 fois plus rapidement.
  3. Fonctions supplémentaires pour travailler avec des bases de données :

    DatabaseImport
    Importe des données d'un fichier dans une table.
    long  DatabaseImport(
       int           database,          // descripteur de base de données reçu par DatabaseOpen
       const string  table,             // nom de la table dans laquelle insérer les données
       const string  filename,          // nom du fichier à partir duquel importer les données
       uint          flags,             // combinaison de flags
       const string  separator,         // séparateur des données
       ulong         skip_rows,         // nombre de 1ères lignes à ignorer
       const string  skip_comments      // chaîne de caractères définissant les commentaires
       );

    DatabaseExport
    Exporte une table ou un résultat de requête SQL vers un fichier CSV. Le fichier est créé en encodage UTF-8.
    long  DatabaseExport( 
       int           database,           // descripteur de base de données reçu par DatabaseOpen 
       const string  table_or_sql,       // nom de la table ou requête SQL
       const string  filename,           // nom du fichier CSV pour l'export des données
       uint          flags,              // combinaison de flags
       const string  separator           // séparateur des données in the CSV file
       );

    DatabasePrint
    Imprime le résultat de la table ou de la requête SQL dans le journal Experts.
    long  DatabasePrint(
       int           database,          // descripteur de base de données reçu par DatabaseOpen
       const string  table_or_sql,      // table ou requête SQL
       uint          flags              // combinaison de flags
       );

  4. Ajout de la fonction FileSelectDialog, qui appelle la boîte de dialogue système créant/ouvrant un fichier ou un dossier.
    int  FileSelectDialog(
       string   caption,              // titre de la fenêtre
       string   initial_dir,          // répertoire initial
       string   filter,               // filtre d'extensions
       uint     flags,                // combinaison de flags
       string&  filenames[],          // tableau contenant les noms des fichiers
       string   default_filename      // nom de fichier par défaut
       );
    La nouvelle fonction permet une interaction efficace de l'utilisateur avec le programme MQL5.

  5. Nouvelle valeur DEAL_FEE dans l'énumération ENUM_DEAL_PROPERTY_DOUBLE. Elle est utilisée pour des frais de transaction. La valeur indique un type de commission distinct facturé par le courtier.

Tester

  1. Ajout de fonctionnalités pour spécifier les paramètres de compte de trading personnalisés lors des tests de stratégie, tels que les limitations de trading, les paramètres de marge et la commission. Les nouvelles fonctions offrent des capacités étendues pour modéliser diverses conditions de trading.



    Paramètres communs
    Dans cette section, vous pouvez définir le nombre maximal d'ordres et de positions ouverts, qui peuvent simultanément exister sur le compte. De plus, vous pouvez configurer des sessions pendant lesquelles le programme n'est pas autorisé à trader.

    Margin
    La section permet la configuration des règles de réservation de marge et des systèmes de comptabilité de position à utiliser dans les tests :

    • Gestion du risque — modèle de gestion du risque : OTC et modèle boursier, systèmes de netting et de hedging. Pour plus de détails, veuillez lire la Documentation.
    • Niveau de l'appel de marge — lorsque ce niveau est atteint, le compte bascule automatiquement dans l'état Appel de Marge.
    • Niveau de Stop out — lorsque ce niveau est atteint, tous les ordres sont annulés et toutes les positions de trading sont fermées. Ces niveaux peuvent être indiqués en pourcentage ou en monnaie. Si "en monnaie" est sélectionné, les niveaux sont définis dans la valeur des Fonds du compte. Si "en pourcentage" est sélectionné, les niveaux sont définis comme la valeur "Niveau de marge" du compte (Fonds/Marge*100).
    • Profit non réalisé — en tenant compte du résultat flottant actuel dans la marge libre :
      • Ne pas utiliser le résultat non réalisé - ne pas inclure le résultat des positions ouvertes dans le calcul.
      • Utiliser le résultat non réalisé - inclure le résultat des positions ouvertes dans le calcul.
      • Utiliser le profit non réalisé - n'inclure que le profit.
      • Utiliser la perte non réalisée - n'inclure que la perte.
    • Bénéfice fixe quotidien - prise en compte du bénéfice/perte fixe quotidien du client dans la marge libre :
      • Utiliser le profit/la perte fixe quotidien - inclure dans la marge libre le profit et la perte reçus au cours d'une journée de trading.
      • Utilisez la perte fixe quotidienne - n'inclure que la perte reçue pendant la journée de trading. Pendant la journée, le profit obtenu est accumulé dans le champ spécial du compte ("Bloqué"). À la fin de la journée de trading, le bénéfice accumulé est débloqué (mis à zéro) et ajouté au solde du compte (inclus dans la marge libre).
    • Libérer le bénéfice fixe à la fin de la journée - cette option n'est disponible que si l'option "Utiliser la perte fixe quotidienne" est sélectionnée. Si elle est activée, le profit accumulé sera débloqué (et donc inclus dans la marge libre) à la fin de la journée. Sinon, ce montant de profit restera bloqué.

    Commission
    Cette section permet de contrôler les commissions facturées pour toutes les opérations de trading.

    • La commission peut être à un niveau et à plusieurs niveaux, c'est-à-dire être égale quel que soit le volume/le chiffre d'affaires ou peut dépendre de leur taille. Les données appropriées sont affichées dans le terminal.
    • La commission peut être prélevée immédiatement lors de l'exécution de l'opération ou à la fin d'un jour/mois de trading.
    • Différentes commissions peuvent être facturées selon la direction de l'opération : entrée, sortie ou les deux types d'opération.
    • La commission peut être facturée par lot ou par transaction.
    • La commission peut être calculée en argent, en pourcentage ou en points.


  2. Travail optimisé et accéléré en mode Market Scanner, au cours duquel plusieurs tests sont exécutés pour tous les symboles disponibles dans le Market Watch.
  3. La taille de la transaction ou de la position est désormais prise en compte lors du calcul du profit en pips. Auparavant, le calcul n'était effectué que pour un lot.
  4. Amélioration du contrôle du graphique des résultats d'optimisation. L'option de défilement a été ajoutée pour un graphique d'optimisation zoomé. Un double-clic sur un point du graphe sélectionne le résultat correspondant dans le tableau des tests réussis.
Documentation mise à jour.