English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano
preview
Passer à MQL5 Algo Forge (Partie 3) : Utiliser des dépôts externes dans vos propres projets

Passer à MQL5 Algo Forge (Partie 3) : Utiliser des dépôts externes dans vos propres projets

MetaTrader 5Exemples |
49 0
Yuriy Bykov
Yuriy Bykov

Introduction

Dans la deuxième partie de notre transition vers MQL5 Algo Forge, nous nous sommes concentrés sur la résolution de l'un des principaux défis – travailler avec des dépôts multiples. En utilisant la combinaison du projet de bibliothèque Adwizard et de l’Expert Advisor Simple Candles, nous avons rencontré et résolu avec succès des problèmes principalement liés aux chemins d'inclusion des fichiers et à la fusion des branches. Nous avons également essayé d'utiliser les outils MetaEditor (dans la mesure du possible) tout au long du flux de travail, de la création d'une branche séparée pour les corrections à la fusion par le biais d'une Pull Request. Cependant, lorsque les fonctionnalités de MetaEditor n'étaient pas suffisantes, nous sommes passés à l'interface web de MQL5 Algo Forge, à un client Git externe dans Visual Studio Code, ou à des commandes de la console Git. Cela a clairement démontré que même dans le cadre d'un développement individuel, il est possible d'appliquer les meilleures pratiques de Git pour maintenir l'ordre et un historique clair des changements au sein de votre projet.

Mais ce n'était qu'un aspect : l'utilisation du stockage comme un écosystème "fermé" dans lequel le développeur possède tous les dépôts utilisés. L'étape logique suivante, et l'une des principales raisons du passage à Git, est la possibilité d'exploiter pleinement les dépôts publics des autres membres de la communauté. C'est là que se révèle le véritable potentiel du développement distribué : la possibilité de connecter et de mettre à jour facilement du code tiers, de contribuer à son amélioration et d'assembler des projets complexes à partir de composants prêts à l'emploi et bien testés. 

Dans cet article, nous nous attaquons enfin à cette tâche prometteuse, mais plus complexe : comment connecter et utiliser de manière pratique des bibliothèques provenant de dépôts tiers dans MQL5 Algo Forge. Et pas "plus tard", mais dès maintenant, sans attendre le développement des outils de dépôt de MetaEditor. 


Tracer le chemin

Dans cet article, nous continuerons à travailler avec notre dépôt de projet Simple Candles, qui servira d'excellent terrain d'essai pour l'expérimentation. La stratégie de trading existante comprend déjà un calcul de volatilité personnalisé fonctionnellement similaire à l'indicateur standard Average True Range (ATR). Mais au lieu de nous appuyer uniquement sur notre propre mise en œuvre, nous étudierons comment améliorer le code en incluant des solutions spécialisées et prêtes à l'emploi provenant de la communauté.

Pour cela, nous nous tournerons vers le dépôt public SmartATR, en supposant qu'il contienne une version plus avancée et optimisée de l'indicateur. Notre objectif pratique à long terme est de modifier l'EA afin qu'il puisse choisir entre continuer à utiliser le calcul interne ou passer à l'algorithme externe de la bibliothèque SmartATR. Cependant, dans cet article, nous ne nous concentrerons pas sur la construction d'un EA entièrement fonctionnel, mais nous examinerons plutôt les aspects clés du travail avec des dépôts externes.

Pour cela, nous devons procéder comme suit. Téléchargez le code de la bibliothèque SmartATR sur votre machine locale et configurez-le pour l'inclure dans notre projet. Nous verrons comment ajouter un dépôt externe à votre environnement de travail afin qu'il puisse être facilement mis à jour lorsque de nouvelles versions sont publiées. Ensuite, nous appliquerons des modifications à la fois au projet Simple Candles et (comme cela s'avère nécessaire) au code de la bibliothèque SmartATR elle-même. Idéalement, nous pourrions éviter la dernière étape, mais comme notre cas l'exige, nous utiliserons ceci comme un exemple pratique de la façon d'introduire des changements dans le dépôt de quelqu'un d'autre. Enfin, nous vérifierons l'intégration en testant si la bibliothèque SmartATR peut être incluse et compilée avec succès dans notre projet.

Cette approche nous permettra de suivre attentivement l'ensemble du processus d'intégration du code externe. L'expérience sera universelle : une fois que nous aurons ajouté avec succès une bibliothèque, nous pourrons inclure n'importe quel autre dépôt public de MQL5 Algo Forge dans nos projets en utilisant la même approche.


Récupération d'un code externe

À première vue, cela ne devrait pas poser de problème. Tout dépôt Git peut être cloné sur un ordinateur local à l'aide de la commande console standard :

git clone ...

Cependant, nous avons convenu de suivre un ordre précis : essayer d'abord de travailler avec l'interface MetaEditor, puis avec l'interface web de MQL5 Algo Forge, et seulement si ces approches échouent, recourir à des outils externes tels que Visual Studio Code ou les commandes de la console Git.

La première question est donc la suivante : comment voir le dépôt de quelqu'un d'autre dans MetaEditor afin de le sélectionner pour le cloner ? La réponse partielle pourrait être trouvée dans la documentation de l’aide, mais très peu d'utilisateurs sauraient où chercher immédiatement. Nous mêmes n'avons découvert cette page que plus tard. Auparavant, nous avions remarqué que le dossier Projets partagés de MetaEditor n'affichait que nos propres dépôts. Pour approfondir la question, nous avons essayé les options du menu contextuel disponibles pour ce dossier dans le navigateur de MetaEditor. 

L'option Nouveau projet n'est pas la bonne ici, car elle ne fait que créer un nouveau dépôt qui nous appartient. L'actualisation n'ajoute pas non plus de dépôts externes. L'option 'Afficher Tous les Fichiers' se comporte bizarrement : après l'avoir exécutée, des noms dupliqués sont apparus pour nos dépôts qui n'avaient pas encore été clonés localement. Heureusement, le fait d'appuyer sur Rafraîchir supprime ces noms en double. Notre dernier espoir était l'option "Afficher Tous les Projets Publics", qui n'a pas non plus produit de changements visibles.

Malheureusement, cela signifie que pour l'instant nous ne pouvons pas compter uniquement sur MetaEditor pour cloner des dépôts externes. Examinons quelques approches alternatives pour atteindre notre objectif.


Première approche : Clonage direct

Commençons par une expérience. Si nous créons un dossier vide avec un nom arbitraire (par exemple, TestRepo) à l'intérieur des Projets Partagés, il devient visible dans MetaEditor. À partir de là, nous pouvons même exécuter la commande Cloner à partir de son menu contextuel. Cependant, à en juger par les journaux, MetaEditor tente ensuite de cloner un dépôt portant le même nom (TestRepo) à partir de notre stockage personnel – un dépôt qui, bien sûr, n'existe pas :

Cela confirme que la méthode ne fonctionnera pas pour cloner le dépôt d'une autre personne. Essayons plutôt de cloner le dépôt SmartATR directement dans Shared Projects en utilisant la commande console 'git clone ...' et voyons ce qui se passe.

Après le clonage, un nouveau dossier SmartATR apparaît dans les Projets partagés, et il est affiché dans le Navigateur de MetaEditor. Plus important encore, nous pouvons non seulement visualiser ce dépôt mais aussi travailler avec lui en tant que référentiel : effectuer un Pull et visualiser l'historique des modifications (Log) directement depuis MetaEditor.

Ainsi, ce qui manque actuellement à MetaEditor est une option de menu contextuel telle que " Cloner à partir de... ", qui permettrait à l'utilisateur de spécifier l'URL d'un dépôt à partir du stockage, ou alternativement, d'ouvrir une boîte de dialogue pour rechercher et sélectionner à partir de tous les dépôt publics dans MQL5 Algo Forge (similaire à la section Explorer dans l'interface Web). Une autre amélioration possible serait d'afficher non seulement les dépôts personnels sous Projets partagés, mais aussi les dépôts publics que l'utilisateur a marqués d'un astérisque dans l'interface web (Dépôts Favoris), avec la possibilité de basculer leur visibilité. Mais ne spéculons pas trop sur les changements qui pourraient être introduits dans MetaEditor.

Pour l'instant, en revenant à notre dépôt SmartATR cloné avec succès, nous pouvons dire que l'objectif immédiat a été atteint. Le code source du projet est désormais disponible localement, ce qui signifie que nous pouvons l'utiliser dans nos propres projets. Mais attention, il y a une mise en garde. Nous ne pouvons procéder à l'utilisation directe que si le code SmartATR ne nécessite aucune modification, ce qui signifie que nous pouvons l'utiliser "prêt à l'emploi", en le mettant à jour uniquement lorsque de nouvelles versions sont publiées. Voyons si nous pouvons le faire.


Vérification de la fonctionnalité

Dans le cadre du projet SmartATR, nous avons reçu un fichier avec le code source d'un indicateur MetaTrader 5, qui (selon la description) calcule l'Average True Range (ATR) en utilisant une approche plus avancée. Essayons de le compiler... et nous rencontrons immédiatement une erreur. 

Quelle que soit la gravité de l'erreur, le point important est le suivant : nous ne pouvons pas utiliser le projet sans y apporter de modifications. À ce stade, nous devons décider si nous appliquons les correctifs uniquement pour notre usage local ou si nous les partageons et contribuons au dépôt d'origine. D'autres développeurs pourraient également rencontrer le même problème en essayant d'utiliser le code de ce projet. La deuxième option est donc préférable, car elle s'aligne sur la philosophie du développement open-source.

Mais supposons pour l'instant que nous ne publierons pas de correctifs pour le moment. Tout d'abord, nous devons résoudre les erreurs ; ce n'est qu'ensuite que nous aurons quelque chose de significatif à publier. Dans ce cas, si nous ne prévoyons d'apporter que des modifications locales au projet SmartATR, nous pouvons simplement créer une nouvelle branche locale. 

Essayons de le faire. Le dépôt original de SmartATR ne contient qu'une branche main, nous allons donc créer une nouvelle branche develop via le menu contextuel du dossier du projet dans MetaEditor. La branche apparaît dans la liste des branches affichée dans MetaEditor. Après avoir appuyé sur Push, les journaux confirment que l'opération s'est déroulée avec succès. À ce stade, on peut s'attendre à ce que la nouvelle branche ait été créée dans le dépôt d'origine. Mais la vérification de l'interface web de MQL5 Algo Forge montre le contraire : rien n'a changé.

Ensuite, essayons d'éditer le code et de valider les modifications à partir de MetaEditor. Nous ajoutons des commentaires avant chaque ligne qui a provoqué une erreur, en indiquant la nécessité d'apporter des corrections, et nous validons ces modifications. Les journaux de MetaEditor indiquent que la validation et le transfert ont été effectués avec succès.

Pourtant, une fois de plus, en vérifiant le dépôt original dans l'interface web de MQL5 Algo Forge, nous constatons que rien n'a changé. C'est pour le moins inhabituel. Vérifions le projet dans Visual Studio Code et essayons de comprendre ce qui se passe. Nous ouvrons le dossier contenant le clone de notre projet SmartATR et nous voyons ce qui suit :

Le dernier commit existe, mais VS Code suggère de publier la branche develop. Cela signifie que la branche n'existe pas encore dans le dépôt distant, pas plus que notre livraison. Nous essayons de publier la branche mais nous obtenons une erreur :

Vérifions les journaux pour en trouver la raison :

Notre compte utilisateur n'a pas les droits d'écriture sur le dépôt d'origine. C'est logique. Dans le cas contraire, le projet pourrait facilement sombrer dans le chaos avec des modifications incontrôlées de la part de n'importe qui. Cela signifie que nous ne pouvons apporter des modifications qu'à notre copie locale. Cependant, ces changements ne peuvent pas être synchronisés avec le site distant et n'existeront que dans notre clone local. Cette situation est loin d'être idéale. Au-delà des options de collaboration, les dépôts externes jouent un rôle très important : ils servent à sauvegarder les projets. Il ne serait pas judicieux de renoncer à ce filet de sécurité.

Il convient également de noter qu'en travaillant exclusivement dans MetaEditor, rien n'indiquait que quelque chose n'allait pas. D'après les journaux de MetaEditor, tout semble aller bien : aucune erreur, et tous les changements ont été poussés "avec succès"... vers un dépôt inexistant. Nous espérons que ce problème sera corrigé dans les prochaines versions.


Deuxième approche : Cloner un Fork

Essayons maintenant une autre voie. Ici aussi, nous devrons sortir des capacités actuelles de MetaEditor – cette fois, nous utiliserons en plus l'interface web de MQL5 Algo Forge. Pour les développeurs pour qui les opérations Git en ligne de commande sont un défi, il s'agit d'un compromis. Dans l'interface web de MQL5 Algo Forge, nous pouvons forker le dépôt original souhaité. 

Le fork est un concept fondamental dans les systèmes de contrôle de version et les plateformes de développement collaboratif, y compris MQL5 Algo Forge. Il s'agit du processus de création d'une copie complète et indépendante du dépôt d’origine au sein de la plateforme.

Lorsqu'un utilisateur fork le dépôt de quelqu'un d'autre, la plateforme crée une copie exacte sous le compte de l'utilisateur. Cette copie hérite de l'historique des modifications, des branches et des fichiers du projet source au moment du fork, mais à partir de ce moment, elle devient un dépôt autonome. Le nouveau propriétaire peut librement le modifier sans affecter l'original.

Ainsi, un fork permet à n'importe quel utilisateur de s'appuyer sur un projet existant et de le développer en suivant sa propre voie, créant ainsi une nouvelle branche d'évolution pour le code. Ce concept permet la création de projets dérivés et de mises en œuvre alternatives au sein de l'écosystème des logiciels libres.

Les forks sont également le principal moyen d'apporter des modifications à des projets pour lesquels l'utilisateur n'a pas d'accès direct en écriture. Le flux de travail standard est le suivant : créer un fork, y implémenter et tester les changements requis, puis notifier le mainteneur du dépôt d’origine des améliorations proposées via une Pull Request, que nous avons déjà abordée dans la partie 2. C'est la base du modèle de développement collaboratif décentralisé.

Malgré leur indépendance, les forks conservent un lien technique avec le dépôt source. Cela permet de suivre les changements dans le projet original et de les synchroniser dans votre fork, en fusionnant les nouveaux commits du projet en amont dans le vôtre.

Il est important de faire la distinction entre un fork et un simple clone. Le clonage consiste à créer une copie locale d'un dépôt sur un ordinateur spécifique, tandis qu'un fork est une copie complète sur la plateforme elle-même, établissant un nouveau dépôt distant sous la propriété d'un autre utilisateur.

Par conséquent, une fois que nous avons forké un dépôt, il devient notre propre dépôt. Il devient également visible dans la liste des projets partagés dans MetaEditor et disponible pour le clonage directement dans MetaEditor.


Tester le travail à l'aide d'un fork

Grâce à l'aimable assistance de Fernando Carreiro, nous avons pu tester ce mécanisme en pratique. Nous avons forké son dépôt FMIC, et en même temps ajouté le dépôt original à nos listes Suivis et Favoris dans l'interface web de MQL5 Algo Forge.

Comme prévu, le fork est apparu dans la liste des dépôts affichée sous Projets partagés dans MetaEditor :

Cela nous a permis de cloner avec succès notre nouveau fork du dépôt FMIC sur l'ordinateur local.

Ensuite, nous avons demandé à Fernando de livrer quelques changements afin que nous puissions tester la façon dont les mises à jour seraient reflétées dans notre fork. Il a ajouté un exemple de fichier README.md décrivant la publication Heikin Ashi et l'a intégré au dépôt.

Ensuite, dans l'interface web, nous avons effectivement vu une notification concernant les nouveaux changements :

Cependant, ces notifications n'ont pas encore affecté notre fork stocké sur MQL5 Algo Forge ni le clone local sur notre ordinateur. Essayons d'intégrer les changements de Fernando dans nos dépôts. Tout d'abord, nous vérifions que les dernières modifications sont bien absentes de notre clone local :

Le dernier engagement de notre historique local date du 27 août 2025, alors que les changements de Fernando ont été effectués plus tard.

Maintenant, si nous visitons notre fork dans l'interface web, nous voyons un message indiquant que notre branche main a 3 commits de retard sur le dépôt original :

Nous voyons également un bouton Sync, qui devrait synchroniser notre dossier main avec la branche amont. Nous vérifions ensuite l'historique des commits et voyons 3 nouveaux commits datés du 5 septembre 2025, qui étaient absents auparavant :

En d'autres termes, tous les commits effectués dans le dépôt original se sont propagés avec succès d'abord dans notre fork sur MQL5 Algo Forge, puis dans notre clone local de ce fork.

Pour ceux qui souhaitent explorer ce mécanisme plus en détail, nous recommandons de consulter les sections suivantes de la documentation GitHub : 

Bien que cette documentation ne soit pas écrite spécifiquement pour MQL5 Algo Forge, une grande partie de l'interface web se comporte de manière similaire, et les commandes Git de la console sont universellement applicables quelle que soit la plateforme d'hébergement. À condition, bien sûr, que la plateforme soit basée sur Git.

Par exemple, en suivant les directives configuration d’un dépôt distant pour une duplication, nous pouvons configurer la synchronisation de sorte que chaque opération Pull/Push mette également à jour notre clone fork par rapport au dépôt original :

Cependant, lorsque vous travaillez exclusivement avec MetaEditor et l'interface web de MQL5 Algo Forge, cette étape de configuration supplémentaire n'est pas strictement nécessaire.


Fork de SmartATR

Revenons maintenant au dépôt que nous avions prévu d'utiliser à l'origine. Nous allons répéter les mêmes étapes - créer un fork via l'interface web de MQL5 Algo Forge et le cloner localement - pour le dépôt SmartATR.

Nous commençons par rechercher le dépôt original dans la section Explorer en saisissant son nom :

Comme le dépôt possède déjà plusieurs forks créées par d'autres utilisateurs, les résultats de la recherche affichent également ces forks. Pour obtenir le véritable original, nous descendons plus bas dans les résultats et ouvrons la page steverosenstock/SmartATR.

Nous cliquons alors sur le bouton Fork :

Après avoir cliqué, nous sommes redirigés vers la page des paramètres de création d’un fork. Ici, nous pouvons renommer le dépôt forké (tel qu'il apparaîtra dans notre liste de dépôts), spécifier quelles branches de l'original doivent être incluses, et éditer la description du dépôt si désiré :

Par défaut, le fork est créé comme une copie exacte du dépôt original. Cela fonctionne parfaitement pour nous, et nous cliquons simplement sur "Fork repository".

Le fork est créé avec succès :

Ensuite, nous clonons ce dépôt sur notre ordinateur local. Avant cela, nous supprimons le dossier SmartATR original précédemment cloné de l'ordinateur local. Si MetaEditor était déjà ouvert, nous devons actualiser la liste des dossiers en sélectionnant Actualiser dans le menu contextuel Projets partagés. Après cela, le dossier SmartATR apparaît, et dans son menu contextuel, nous sélectionnons 'Git Clone' : 

Le projet SmartATR est cloné avec succès :

Nous sommes maintenant prêts à commencer à apporter des changements.


Apporter des modifications

Comme notre objectif est d'introduire des correctifs qui résolvent, ou au moins neutralisent une erreur spécifique, nous commençons par créer une nouvelle branche dont le nom reflète clairement cet objectif ; par exemple, fixes/news-impact :

Nous passons ensuite à cette branche dans le menu contextuel du projet en sélectionnant "Branches Git → fixes-news-impact".

Notez que bien que nous ayons initialement inclus un slash ("/") dans le nom de la branche, la branche a en fait été créée avec ce caractère automatiquement remplacé par un trait d'union ("-"). Il s'agit d'une limitation imposée par MetaEditor, qui n'autorise que les lettres latines et les traits d'union dans les noms de branches. Techniquement, Git lui-même autorise les slashs, et l'interface web permet de créer librement des branches qui en contiennent. 

Testons l'importance de cette restriction. Nous allons créer une autre branche directement dans l'interface web de MQL5 Algo Forge, cette fois-ci en incluant explicitement un slash dans son nom : fixes/cast-warning. Sur la page Branches, nous sélectionnons Nouvelle branche, en utilisant la branche main comme base :

La branche est créée avec succès :

Cependant, lorsque nous essayons d'exécuter un Pull dans MetaEditor, un message d'erreur s'affiche :

Malgré cela, la nouvelle branche avec le slash dans son nom apparaît dans la liste des branches de MetaEditor, et le passage à cette branche se fait sans problème :

Après avoir pris note de cette particularité, nous revenons à la branche fixes-news-impact et introduisons le correctif temporaire qui supprime la cause de l'erreur de compilation :

Une fois que l'indicateur a été compilé sans erreur, nous validons nos modifications à l'aide de l'option "Git Commit" du menu contextuel : 

Dans la boîte de dialogue de validation, nous vérifions la liste des fichiers modifiés. La vérification est simple dans ce cas, car nous n'avons modifié qu'un seul fichier. Il est fortement recommandé d'ajouter un commentaire descriptif qui explique la nature de la correction. Après avoir confirmé que tout est correct, nous appuyons sur OK.

Nos modifications sont maintenant validées et poussées vers notre fork du dépôt SmartATR dans MQL5 Algo Forge. À ce stade, la version corrigée de l'indicateur peut déjà être utilisée localement, une copie sécurisée étant également stockée dans le dépôt. En option, nous pouvons soumettre une Pull Request à l'auteur du projet original en cliquant sur 'New pull request' dans l'interface web du dépôt :

Mais c’est encore trop tôt, car notre modification ne fait que désactiver une partie de la fonctionnalité plutôt que d'améliorer le code. Pour l'instant, ne créons pas de pull request.

L'indicateur SmartATR est prêt à être intégré dans notre projet Simple Candles.


Intégration de l'indicateur

En suivant les meilleures pratiques, nous créons une nouvelle branche dans le dépôt du projet Simple Candles – article-19436-forge3 – basée sur la branche develop. Pour varier notre approche, créons cette branche en utilisant l'interface web de MQL5 Algo Forge.

Pour que la branche apparaisse localement, nous lançons 'Git Pull' dans MetaEditor, puis nous passons à la nouvelle branche article-19436-forge3.

Puisque notre intention est d'appliquer l'indicateur dans la stratégie de trading, nous l'ajoutons directement à l'implémentation de la classe de stratégie dans SimpleCandlesStrategy.mqh. Plus précisément, nous ajoutons un champ dans la classe pour stocker le handle sur l'indicateur :

//+------------------------------------------------------------------+
//| Trading strategy using unidirectional candlesticks               |
//+------------------------------------------------------------------+
class CSimpleCandlesStrategy : public CVirtualStrategy {
protected:
   //...

   int               m_iATRHandle;        // SmartATR indicator handle

   //...
};

Ensuite, nous appelons iCustom() dans le constructeur de la classe, en passant le symbole requis, la période, le chemin d'accès au fichier de l'indicateur et ses paramètres :

//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CSimpleCandlesStrategy::CSimpleCandlesStrategy(string p_params) {
// Read the parameters from the initialization string
   // ...

   if(IsValid()) {
      // Load the SmartATR indicator
      m_iATRHandle = iCustom(
                        m_symbol, m_timeframe,
                        "Shared Projects/SmartATR/SmartATR.ex5",
                        // Indicator parameters
                        m_periodATR,   // Initial ATR period (used for first calculation, adaptively changes)
                        false,         // Enable adaptive period (dynamic lookback)
                        7,             // Minimum ATR period (adaptive mode)
                        28,            // Maximum ATR period (adaptive mode)
                        false,         // Weight True Range by volume
                        false,         // Weight True Range by economic news events (MT5 Calendar)
                        2.0,           // Multiplier: alert if ATR exceeds this factor of average
                        false          // Enable pop-up & sound alerts on high volatility
                     );

      // ...
   }
}

Notez le chemin spécifié pour l'indicateur. Il commence par Shared Projects, puis le nom du dossier du projet SmartATR, suivi du nom du fichier de l'indicateur SmartATR.ex5. L'ajout de l'extension .ex5 est facultatif, mais son maintien permet d'éviter toute confusion.

Il y a une nuance importante à prendre en compte lorsque l'on travaille dans le dossier Projets partagés. Cela concerne à la fois votre propre projet et les projets forkés. Tous les exécutables compilés ne sont pas placés directement dans le dossier du dépôt. En effet, le dossier Shared Projects est situé dans le dossier racine des données du terminal : MQL5/Shared Projects. D'une part, c'est une bonne chose puisque le système de contrôle de version n'essaiera pas de suggérer l'indexation des fichiers exécutables. D'un autre côté, cela peut être un peu déroutant au début : Où trouver les fichiers compilés de l'Expert Advisor et de l'indicateur ?

Ils sont en fait créés dans leurs dossiers standards respectifs, tels que MQL5/Experts pour les EA ou MQL5/Indicators pour les indicateurs. Dans ces derniers, un sous-répertoire Shared Projects est automatiquement créé. Les fichiers compilés sont donc créés dans ces sous-dossiers. Cela signifie que la compilation d'un fichier de MQL5/Shared Projects/SmartATR.mq5 produira l'exécutable MQL5/Indicators/Shared Projects/SmartATR/SmartATR.ex5.

Par conséquent, l'appel iCustom() doit référencer le chemin de l'indicateur par rapport à MQL5/Indicators.

Enfin, nous compilons le fichier de l’Expert Advisor SimpleCandles.mq5 et l'exécutons dans le testeur de stratégie. Les journaux indiquent ce qui suit :

L'indicateur SmartATR a donc été chargé avec succès, initialisé et est prêt à être utilisé. À ce stade, nous ne faisons que démontrer son intégration. Nous pourrions ajouter l'utilisation réelle dans la logique de la stratégie plus tard. Nous validons ces changements et les poussons vers le dépôt MQL5 Algo Forge.


Conclusion

Cet article montre comment l'adoption de MQL5 Algo Forge permet un flux de travail fondamentalement plus flexible pour les développeurs. Auparavant, nous n'avons examiné que les dépôts autonomes, mais ici nous avons intégré avec succès une bibliothèque externe provenant d'un dépôt tiers dans notre projet.

Le moment clé a été le flux de travail correct basé sur le forking – la création d'une copie personnelle d'un dépôt externe qui permet une modification complète tout en restant synchronisé avec le projet en amont. L'intégration réussie de SmartATR dans Simple Candles utilise cette approche – depuis la localisation et le fork du dépôt, jusqu'à la modification et l'application de son code dans une stratégie de trading en direct.

Il est important de noter que ce processus a été entièrement réalisé avec les capacités actuelles de MetaEditor, sans attendre de futures mises à jour. Les limites de MetaEditor (telles que le manque d'accès direct aux dépôts tiers et le nommage restreint des branches) sont facilement surmontées en le complétant avec l'interface web de MQL5 Algo Forge et, si nécessaire, avec les commandes standard de la console Git. En bref, le système est déjà viable pour une utilisation pratique, et les lacunes qui subsistent au niveau de l'interface sont des inconvénients plutôt que des obstacles.

Mais ne nous arrêtons pas là. Nous continuerons à utiliser des dépôts pour séparer les projets et partager les expériences acquises en cours de route.

Merci de votre attention ! Et à bientôt !

Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/19436

Comment Échanger des Données : Une DLL pour MQL5 en 10 minutes Comment Échanger des Données : Une DLL pour MQL5 en 10 minutes
Maintenant, peu de développeurs se rappellent de la façon d'écrire une DLL simple et des caractéristiques spéciales des différentes liaisons système. À l'aide de plusieurs exemples, je vais tenter de montrer l'ensemble du processus de création de la DLL simple en 10 minutes, ainsi que de discuter de certains détails techniques de notre implémentation de liaison. Je vais montrer étape par étape le processus de la création de DLL dans Visual Studio avec des exemples d'échange de différents types de variables (nombres, tableaux, chaînes, etc.). En outre, je vais vous expliquer comment protéger votre terminal client des plantages dans les DLL personnalisées.
Passer à MQL5 Algo Forge (Partie 2) : Travailler avec plusieurs dépôts Passer à MQL5 Algo Forge (Partie 2) : Travailler avec plusieurs dépôts
Dans cet article, nous examinons l'une des approches possibles pour organiser le stockage du code source d'un projet dans un dépôt public. Nous distribuerons le code dans différentes branches afin d'établir des règles claires et pratiques pour le développement du projet.
L'Histogramme des prix (Profile du Marché) et son implémentation  en MQL5 L'Histogramme des prix (Profile du Marché) et son implémentation en MQL5
Le Profile du Marché a été élaboré par le brillant penseur Peter Steidlmayer. Il a suggéré l’utilisation de la représentation alternative de l'information sur les mouvements de marché « horizontaux » et « verticaux » qui conduit à un ensemble de modèles complètement différent. Il a assumé qu'il existe une impulsion sous-jacente du marché ou un modèle fondamental appelé cycle d'équilibre et de déséquilibre. Dans cet article, j’examinerai l'Histogramme des Prix - un modèle simplifié de profil de marché, et décrirai son implémentation dans MQL5.
La théorie du chaos dans le trading (partie 2) : Plongée en profondeur La théorie du chaos dans le trading (partie 2) : Plongée en profondeur
Nous poursuivons notre plongée dans la théorie du chaos sur les marchés financiers. Cette fois-ci, j'examinerai son applicabilité à l'analyse des devises et d'autres actifs.