
Passer à MQL5 Algo Forge (Partie 1) : Création du Dépôt Principal
Sommaire
- Introduction
- Outils actuellement disponibles
- Commencer la transition
- Outil de gestion des dépôts
- Création du Dépôt Principal
- Cloner le dépôt
- Configuration des fichiers ignorés
- Livrer des modifications
- Création d'une branche d'archivage
- Préparation de la création de branches de projet
- Conclusion
Introduction
Lorsque l'on travaille sur un projet de taille plus ou moins importante, il est inévitablement nécessaire de suivre les modifications apportées au code, de les regrouper par sens et de pouvoir revenir aux versions précédentes. En général, cela est géré par des systèmes de contrôle de version tels que Git ou Subversion (SVN).
La plupart des environnements de développement fournissent des outils intégrés pour travailler avec des référentiels d'un système de contrôle de version. MetaEditor ne fait pas exception - il possède son propre référentiel MQL Storage basé sur SVN. Comme l'indique la documentation :
MQL5 Storage est un dépôt personnel en ligne pour les codes sources de MQL4/MQL5. Il est intégré à MetaEditor : vous pouvez enregistrer et recevoir des données du dépôt directement dans l'éditeur.
Le stockage comporte un système de contrôle des versions. Cela signifie que vous pouvez toujours savoir quand et comment les fichiers ont été modifiés, ainsi qu'annuler les modifications et revenir à la version précédente.
Avec MQL5 Storage, vos codes sources restent toujours sécurisés. Les données sont stockées sur un serveur protégé et vous êtes le seul à y avoir accès. En cas de défaillance du disque dur, tous les codes précédemment enregistrés peuvent être facilement restaurés.
Le stockage vous permet de partager et de synchroniser facilement les modèles et profils des graphiques, les ensembles de paramètres pour tester les programmes MQL5 et les ensembles d'instruments de trading entre différentes plateformes.
MQL5 Storage permet le développement à distance d'applications MQL5 au sein d'équipes grâce aux projets partagés.
Mais le système de contrôle de version Git est devenu beaucoup plus populaire - et à juste titre, selon nous. C'est peut-être pour cette raison qu'au milieu de l'année 2024, MetaQuotes a révélé son intention d'adopter Git comme système de contrôle de version intégré dans MetaEditor, ainsi que le lancement de MQL5 Algo Forge, une alternative interne à GitHub.
Au moment de la rédaction de cet article, le nouveau dépôt est déjà disponible, mais l'intégration de MetaEditor n'est pas encore terminée. Ainsi, alors que MetaEditor reste le principal environnement de développement, les développeurs sont toujours limités au stockage MQL basé sur SVN.
Dans le cadre de divers projets, nous avons utilisé activement le système de contrôle de version existant. Mais lors de la rédaction de la série d'articles "Développement d’un Expert Advisor Multi-Devises", l'absence de prise en charge du développement parallèle du code dans des branches et de leur fusion ultérieure s'est fait particulièrement sentir. Alors que SVN lui-même supporte les branchements, MetaEditor ne fournit pas d'interface pour cela. Des clients SVN externes pourraient être utilisés, mais cela nécessiterait de restructurer le flux de travail habituel.
C'est pourquoi l'annonce de MQL5 Algo Forge a été chaleureusement accueillie. Nous espérions que MetaEditor prendrait enfin en charge le branchement. Mais 7 mois plus tard, ces attentes n'ont toujours pas été satisfaites. Voyons donc comment nous pouvons améliorer le processus de développement avec les outils actuellement disponibles.
Pour une meilleure compréhension, une connaissance de base des systèmes de contrôle de version est nécessaire. Si nécessaire, nous vous recommandons de consulter des documents sur le site Web de MQL5 ou ailleurs, tels que Bien démarrer avec Git.
Outils actuellement disponibles
Peu après que MetaQuotes ait annoncé le lancement de MQL5 Algo Forge, un dépôt nommé mql5 a été créé, contenant tous les fichiers de notre stockage MQL actuel. Cependant, ils ont tous été ajoutés dans un seul commit sous l'utilisateur super.admin, ce qui signifie qu'aucun historique de commit n'a été préservé. On s'y attendait. La migration d'historiques complets entre différents systèmes de contrôle de version est pratiquement impossible.
Par la suite, certains éléments de l'interface de MetaEditor ont commencé à afficher un nouveau nom de dépôt. Par exemple, le titre de la boîte de dialogue de l'historique des versions a été modifié en "MQL5 Algo Forge" :
Pourtant, l'essentiel n'a pas changé : toutes les modifications sont toujours apportées à MQL Storage, et non à Algo Forge. Ainsi, les fichiers copiés sur Algo Forge il y a 7 mois n'ont pas été mis à jour depuis.
Ce qui a changé, en revanche, c'est que nous pouvons désormais travailler avec plusieurs dépôts. Auparavant, il n'y avait qu'un seul dépôt. Nous avons dû créer différents projets dans des dossiers distincts au sein du dossier de données MQL5, qui était toujours la racine du référentiel. Cela signifiait que lorsqu’une nouvelle instance de terminal était créée pour un nouveau projet et que le stockage était activé, tous les projets à partir du stockage étaient téléchargés, même ceux qui n'avaient pas de lien entre eux. Au fur et à mesure que leur nombre augmentait, cette situation devenait gênante.
La suppression pure et simple des projets non pertinents du dossier des données n'était pas une option, car chaque validation aurait alors nécessité d'exclure manuellement ces éléments supprimés de l'envoi vers le stockage.
Avec un dépôt Git approprié, nous disposons désormais de plusieurs options pour structurer le stockage et gérer différents projets :
- Chaque projet existe dans son propre dépôt.
- Chaque projet existe dans une branche distincte d'un dépôt unique.
- Un modèle hybride : certains projets sont situés dans des référentiels distincts, alors que d'autres coexistent en tant que branches au sein d'un même dépôt.
Chaque approche présente des avantages et des inconvénients. Par exemple, si plusieurs projets partagent la même bibliothèque, il n'est pas pratique de conserver la bibliothèque dans un dépôt séparé. Il est préférable de la maintenir dans une branche dédiée, en fusionnant les modifications dans les branches du projet si nécessaire. En revanche, pour les projets autonomes, il est préférable de créer un dépôt séparé, car cela permet d'éviter de stocker du code non lié à d'autres projets.
Commencer la transition
Lorsque l'on procède à des changements, il est judicieux de préserver ce qui existe déjà. L'utilisation du dépôt mql5 créé automatiquement n'est peut-être pas la meilleure idée, car MetaQuotes peut y effectuer des actions supplémentaires sous super.admin. Par conséquent, nous allons tout d'abord créer un nouveau dépôt pour stocker tous nos projets en cours. Pour cela, nous adopterons le modèle consistant à stocker différents projets dans différentes branches. Pour mettre en œuvre cette séparation, nous définissons les conventions suivantes :
- La branche principale appelée main restera vide ou ne contiendra qu'un ensemble minimal de code commun utilisé par tous les projets.
- Une branche séparée d’archivage appelée archive stockera tout le code disponible au moment de la migration. À partir de là, nous pouvons copier le code dans les différentes branches du projet.
- D'autres branches seront liées à des projets individuels et seront nommées en conséquence.
- Un projet peut avoir plusieurs branches actives, en fonction de la stratégie de branchement choisie (par exemple, l'approche décrite dans "A Successful Git Branching Model").
Supposons que nous ayons un dossier MetaTrader5 avec un terminal installé et un stockage MQL Storage connecté. C'est-à-dire que le dossier des données MetaTrader5/MQL5 du terminal contient, avec les fichiers standards, le code de nos projets.
Créez un nouveau dossier nommé MetaTrader5.forge et copiez-y 2 fichiers exécutables :
Lancez le terminal MetaTrader à partir de ce dossier en mode portable. Sur notre système, il a démarré dans ce mode lors d'un double clic. Sinon, vous devrez peut-être spécifier explicitement ’/portable’ lorsque vous l'exécutez à partir de la ligne de commande, ou créez un raccourci, en ajoutant cette valeur à la commande de démarrage de l'application. Il n'est pas nécessaire d'ouvrir un compte de démonstration ou de se connecter à MQL5.community à ce stade.
Une structure de dossiers initiale est créée dans le nouveau dossier, y compris un dossier de données MQL5 vide. Il ne contient pas encore nos fichiers.
Lancez MetaEditor à partir du terminal en appuyant sur F4.
Si vous cliquez avec le bouton droit de la souris sur le nom d'un dossier, le menu contextuel propose l'option d'activer le stockage MQL5 Algo Forge (bien qu'en réalité, cela activera le stockage MQL). Ne l'activez pas encore, car nous avons l'intention de migrer vers le nouveau type de dépôt.
Fermez ensuite MetaTrader et MetaEditor, car nous n'en aurons pas besoin pendant un certain temps et nous devrons effectuer certaines actions directement dans le dossier du terminal.
Outil de gestion des dépôts
L'étape suivante consiste à choisir un outil pour travailler avec le futur dépôt. Plus tard, ce rôle pourra être repris par MetaEditor lui-même, mais pour l'instant nous devons utiliser quelque chose d'autre. Vous pouvez utiliser n'importe quel outil pour travailler avec un dépôt Git, par exemple Visual Studio Code (VSCode) en combinaison avec Git. La version Windows de Git peut être téléchargée à partir de gitforwindows.org.
Il faut donc installer Git et VSCode (ou s'assurer qu'ils sont déjà installés). Dans VSCode, installez l'extension MQL Tools pour travailler avec des fichiers MQL5 :
Après avoir installé l'extension, spécifiez le chemin d'accès à l'exécutable MetaEditor dans le paramètre 'Metaeditor5 Dir' dans les paramètres. Comme il n'est pas nécessaire de travailler avec des fichiers sources MQL5 situés en dehors du dossier de travail d'une instance de terminal, vous pouvez suivre la recommandation et fournir le chemin relatif au dossier actuellement ouvert dans VSCode :
Plus loin dans les paramètres de l'extension, nous recommandons fortement d'activer l'option "Portable MT5".
Pour la coloration syntaxique, vous devez installer l'extension C/C++ pour Visual Studio Code.
Malheureusement, bien que MQL5 soit très similaire à C++, il inclut certaines constructions de langage qui ne sont pas utilisées dans le C++ standard. Par conséquent, l'extension peut occasionnellement afficher des erreurs de syntaxe qui ne sont pas pertinentes dans le contexte de MQL5.
Maintenant, ouvrez le dossier de données MetaTrader5.forge/MQL5 dans VSCode :
Essayez d'ouvrir le fichier de n'importe quel Expert Advisor :
La coloration syntaxique fonctionne correctement et le coin supérieur droit de la fenêtre de l'éditeur affiche maintenant des boutons supplémentaires pour la vérification syntaxique MQL5 et la compilation via MetaEditor. Cependant, toutes les directives #include génèrent des messages d'erreur. Cela est dû au fait que MQL5 n'est pas C++ et que l'emplacement des fichiers d'inclusion de la bibliothèque standard est différent. Pour résoudre ce problème, suivez la solution proposée : dans les paramètres de l'extension C/C++ pour VSCode, ajoutez le chemin vers MetaTrader5.forge/MQL5/Include.
Une fois cette opération effectuée, les messages d'erreur disparaissent et l'Expert Advisor se compile avec succès :
À ce stade, nous allons temporairement mettre VSCode de côté, car c'est l'acteur principal qui va maintenant entrer en scène : MQL5 Algo Forge.
Création du Dépôt Principal
Rendez-vous sur https://forge.mql5.io/ et créez un nouveau compte ou connectez-vous à l'aide de vos identifiants MQL5.community existants :
Dans le menu en haut à droite, sélectionnez "Nouveau dépôt" (ou "New repository" en anglais).
Choisissez un nom pour le dépôt (par exemple, mql5-main). Lors du clonage local du dépôt, vous pouvez spécifier n'importe quel nom pour le dossier racine, le nom du dépôt lui-même n'est pas critique. Lors de l'initialisation, ajoutez les fichiers .gitignore et README.md.
Le dépôt est maintenant créé. La première livraison est effectuée automatiquement :
Pour les étapes suivantes, copiez l'URL du dépôt. Dans notre cas, il s'agit de : https://forge.mql5.io/antekov/mql5-main.git. Nous pouvons maintenant revenir à VSCode, MetaEditor et au terminal MetaTrader 5.
Cloner le dépôt
Pour cloner le dépôt localement, nous avons besoin d'un dossier MQL5 vide dans le répertoire du terminal. Actuellement, il est déjà rempli de dossiers, nous devons donc procéder comme suit :
- Fermez VSCode, MetaEditor et MetaTrader 5.
- Renommez le dossier MQL5 existant (par exemple, en MQL6).
Il n'y a plus de dossier MQL5 dans le répertoire MetaTrader5.forge :
Ouvrez ce dossier dans VSCode et lancez le terminal VSCode en appuyant sur [Ctrl + `].
Copiez l' URL du dépôt et exécutez la commande de clonage, en spécifiant le nom du dossier racine du dépôt local après l'URL (il doit correspondre à MQL5) :
git clone https://forge.mql5.io/antekov/mql5-main.git MQL5
Si le référentiel est privé et que c'est la première fois que vous le clonez, vous serez invité à saisir vos informations d'identification. En conséquence, un nouveau sous-dossier MQL5 apparaîtra dans le répertoire du terminal, contenant .gitignore et README.md.
Déplacez maintenant tous les fichiers et dossiers de MetaTrader5.forge/MQL6 vers MetaTrader5.forge/MQL5, puis supprimez l'ancien dossier MetaTrader5.forge/MQL6.
Ouvrez le dossier MetaTrader5.forge/MQL5 dans VSCode. Dans la partie gauche du panneau Source Control, vous verrez que le dossier du dépôt contient un grand nombre de nouveaux fichiers (dans notre cas, 581) :
Mais la plupart de ces fichiers ne devraient pas se trouver dans notre dépôt puisqu'ils appartiennent à l'installation standard de MetaTrader 5. Dans les nouvelles versions, le contenu et la structure de ces bibliothèques standard et de ces projets d'exemple peuvent changer. Nous ne pouvons pas les modifier sans risquer des conflits lors de la prochaine mise à jour du terminal MetaTrader ou lors du passage à un nouveau dossier de travail. Il n'y a donc aucune raison de les inclure dans notre référentiel.
Configuration des fichiers ignorés
C'est précisément là que le fichier .gitignore devient utile. Ici, nous pouvons spécifier les fichiers et les répertoires que Git doit ignorer. Ainsi, au lieu de voir des centaines de changements non pertinents, nous ne verrons que les modifications apportées à nos propres fichiers. Comme nous n'avons pas encore ajouté de fichiers personnalisés au référentiel, tous les fichiers actuellement listés doivent être ignorés.
Ouvrez donc .gitignore et remplacez son contenu par défaut par quelque chose comme ceci :
# ---> MQL5 # VSCode Preferences .vscode/* # Executables *.ex5 # MQL5 Standard Files /Experts/Advisors/ /Experts/Examples/ /Experts/Free Robots/ /Experts/Market/ /Files/ /Images/ /Include/Arrays/ /Include/Canvas/ /Include/ChartObjects/ /Include/Charts/ /Include/Controls/ /Include/Expert/ /Include/Files/ /Include/Generic/ /Include/Graphics/ /Include/Indicators/ /Include/Math/ /Include/OpenCL/ /Include/Strings/ /Include/Tools/ /Include/Trade/ /Include/WinAPI/ /Include/MovingAverages.mqh /Include/Object.mqh /Include/StdLibErr.mqh /Include/VirtualKeys.mqh /Indicators/Examples/ /Indicators/Free Indicators/ /Libraries/ /Logs/ /Profiles/ /Scripts/Examples/ /Scripts/UnitTests/ /Services/ /Shared Projects/ /experts.dat /mql5.*
De cette façon, vous demandez au système de contrôle de version d'exclure les fichiers de paramètres VSCode, les fichiers compilés d'Expert Advisor et d'indicateurs (le dépôt ne stocke généralement que le code source), et les fichiers standard de MetaTrader 5 situés dans les dossiers listés. Seul votre propre code source sera suivi.
Livrer des modifications
Après avoir enregistré .gitignore, VSCode n'affiche qu'un seul fichier modifié - le fichier .gitignore lui-même. Tous les autres fichiers du dossier MQL5, qui est désormais le dossier racine de notre dépôt mql5-main, bien que physiquement présents, sont désormais ignorés :
Effectuer un commit dans le dépôt local en ajoutant un message comme par exemple "Ajout des fichiers standards dans .gitignore", et cliquez sur "Commit".
À ce stade, la modification n'existe que dans le dépôt local. Pour le pousser vers le dépôt distant, exécutez la commande "Push". Cela peut se faire de différentes manières, par exemple en cliquant sur "Synchroniser les Changements" dans VSCode, en sélectionnant "Push" dans le menu contextuel (...) à côté de CHANGES, ou en exécutant la commande "git push" manuellement.
Cependant, avant de pousser le dernier commit, vérifiez l'historique des commits dans le GRAPH. Vous devriez voir 2 commits : "Initial commit" et "Ajout des fichiers standards dans .gitignore". Le nom de la branche est affiché en couleur à droite, à côté des commits. La première livraison est étiquetée comme origin/mainet la seconde est simplement main. En fait, il s'agit de la même branche main. Ici, origin est un alias du dépôt distant, le préfixe origin/ signifie donc que ce commit est le dernier de la branche main du dépôt distant. Le deuxième commit apparaît sans ce préfixe, il est donc le dernier et n'existe donc que dans le dépôt local.
Appuyez sur "Synchroniser les Changements" :
Les modifications ont maintenant été poussées avec succès vers le dépôt distant, et l'étiquette violette "origin" a été déplacée vers le deuxième commit. Vous pouvez le confirmer en consultant le dépôt dans l'interface web :
À ce stade, nous avons préparé un dépôt presque vide pour notre travail. Sa seule branche nommée main contient 2 fichiers que nous avons ajoutés. Tout autre fichier présent dans le dossier des données de cette instance de terminal est ignoré par le système de contrôle de version.
Création d'une branche d'archivage
Comme indiqué précédemment, la première étape consiste à placer tous nos fichiers existants dans une branche afin qu'ils soient soumis au contrôle de version et qu'ils puissent être transférés vers le dépôt distant. Cela garantit que nous pourrons les récupérer ultérieurement sur n'importe quel autre ordinateur si nécessaire.
Comme toute autre opération dans le système de contrôle de version, les branches peuvent être créées de différentes manières. A partir de VSCode, ouvrir le menu du dépôt (...). Sélectionnez ensuite "Checkout vers...".
Ensuite, dans la liste des actions, sélectionnez "Créer une nouvelle branche...".
Dans l'interface web, à partir du dépôt distant, allez dans l'onglet branches et cliquez sur le bouton de création d'une nouvelle branche (mis en évidence par un rectangle vert ci-dessous) :
Il existe une différence entre ces deux méthodes. La première crée une nouvelle branche sur l'ordinateur local et, jusqu'à ce que vous apportiez des modifications, le dépôt distant ne sait rien de cette branche. La seconde méthode crée une nouvelle branche dans le dépôt distant, de sorte que le dépôt local n'est pas informé de l'existence de cette branche jusqu'à ce que vous récupériez les modifications à l'aide de la commande "pull". Dans tous les cas, il suffit de synchroniser en exécutant les commandes pull ou push).
La troisième méthode consiste à utiliser la ligne de commande. Pour créer une nouvelle branche nommée "archive" dans votre dépôt local, vous pouvez exécuter, par exemple, la commande suivante à partir du dossier du dépôt :
git checkout -b archive
Si vous faites cela dans le terminal intégré de VSCode, vous verrez ce qui suit :
Ce terminal vous informe que le dépôt a été basculé vers une branche "archive" nouvellement créée. Dans la liste des livraisons, le nom de la branche main a été changé en archive. Le journal des modifications vous invitera à pousser une nouvelle branche vers le dépôt distant. Cependant, nous allons d'abord ajouter nos fichiers à cette branche.
Nous avions un dossier initial avec le terminal MetaTrader, qui contenait le dossier MQL5 avec tous nos fichiers. Le dépôt a été créé dans un autre dossier du terminal. Maintenant, copiez tous les fichiers de l'ancien dossier MetaTrader5/MQL5 original dans le dossier du nouveau dépôt :
Le système de contrôle des versions a immédiatement détecté les nouveaux fichiers dans le dossier du dépôt, et certaines actions sont devenues disponibles pour eux. Vous devez ajouter tous les nouveaux fichiers à l'index (pour permettre le contrôle des versions). Ceci peut être fait soit par l'interface VSCode en sélectionnant "+" (Stage All Changes) dans l'en-tête de la liste des changements, soit en exécutant la commande
git add .
Maintenant, chaque fichier de la liste des modifications est étiqueté avec A, ce qui signifie qu'il a été indexé, au lieu de U. Ensuite, livrer et pousser les modifications vers le dépôt distant :
Comme nous pouvons le voir, le dernier commit dans la branche main est maintenant le deuxième commit, alors que le troisième commit a été fait dans la branche archive. Vérifions que la nouvelle branche a été poussée vers le dépôt distant :
Le dernier commit est visible dans le dépôt distant et appartient à la nouvelle branche archive. Cliquez dessus pour voir les changements spécifiques inclus dans ce commit.
À ce stade, tous les fichiers ont été ajoutés avec succès à la branche archive. Revenons maintenant à la branche main de notre dépôt local.
Préparation de la création de branches de projet
Pour passer à la branche principale, exécutez la commande suivante dans la console :
git checkout main
Le dépôt local devrait revenir à l'état dans lequel il se trouvait avant que nous ayons copié tous les fichiers. Cependant, en inspectant le contenu du dossier MQL5 après la bascule, vous remarquerez que de nombreux dossiers de nos Experts Advisors sont conservés.
Ces dossiers contiennent toujours des fichiers .ex5 compilés. Cela est dû au fait que Git ne supprime pas ces fichiers lorsqu'il passe de la branche archive à la branche principale, après les avoir exclus du contrôle de version. Seuls les fichiers source qui ont été staged et commités dans le dépôt ont été supprimés du dossier.
Ce n'est pas très pratique, c'est pourquoi nous devons supprimer les fichiers compilés et tous les répertoires vides qui subsistent après leur suppression. Le faire manuellement prendrait beaucoup de temps, d'autant plus que nous pourrions être amenés à le répéter à l'avenir. Il est donc plus pratique d'écrire un simple script pour gérer cette tâche automatiquement.
Au cours du développement du script, il est apparu clairement que la suppression de fichiers ne suffit pas à restaurer le dossier racine dans son état d'origine après un changement de branche. Il est également nécessaire de supprimer les répertoires devenus vides après la suppression des fichiers .ex5. Certains dossiers peuvent être intentionnellement vides et ne doivent pas être supprimés. Ceux-ci seront ajoutés à une liste d'exclusion. Cette liste comprendra tous les dossiers précédemment listés dans .gitignore ainsi que le dossier .git contenant les métadonnées de contrôle de version.
Voici un exemple de script :
import os def delete_ex5_files_and_empty_dirs(path, excluded=['.git', '.vscode']): # Exceptions excluded = {os.path.join(path, dir) for dir in excluded} # Check all folders and files in the directory tree for root, dirs, files in os.walk(path, topdown=False): is_excluded = False for ex in excluded: if root.startswith(ex): is_excluded = True break if is_excluded: continue # Delete all files with extension .ex5 for file in files: if file.endswith('.ex5'): file_path = os.path.join(root, file) os.remove(file_path) print(f'File removed: {file_path}') # Delete all folders that have become empty after deleting files for dir in dirs: dir_path = os.path.join(root, dir) # IF the directory is empty after deleting files if dir_path not in excluded and not os.listdir(dir_path): try: os.rmdir(dir_path) print(f'Empty folder removed: {dir_path}') except OSError: pass # If error occurred, ignore excluded = [ '.git', '.vscode', 'Experts\\Advisors', 'Experts\\Examples', 'Experts\\Free Robots', 'Experts\\Market' 'Files', 'Images', 'Include\\Arrays', 'Include\\Canvas', 'Include\\ChartObjects', 'Include\\Charts', 'Include\\Controls', 'Include\\Expert', 'Include\\Files', 'Include\\Generic', 'Include\\Graphics', 'Include\\Indicators', 'Include\\Math', 'Include\\OpenCL', 'Include\\Strings', 'Include\\Tools', 'Include\\Trade', 'Include\\WinAPI', 'Indicators\\Examples', 'Indicators\\Free Indicators', 'Libraries', 'Logs', 'Presets', 'Profiles', 'Scripts\\Examples', 'Scripts\\UnitTests', 'Services', 'Shared Projects', ] if __name__ == '__main__': current_dir = os.getcwd() # Current working directory delete_ex5_files_and_empty_dirs(current_dir, excluded)
Sauvegardez ce script sous le nom de clean.py à la racine du dépôt et ajoutez-le au contrôle de version dans la branche principale. Dorénavant, après avoir basculé de l'archive vers la version principale, il suffit de lancer ce script pour nettoyer automatiquement les fichiers compilés et les dossiers vides.
Conclusion
Nous concluons ici nos premières expériences avec le nouveau système de dépôt. Tous nos fichiers y ont été transférés avec succès. Nous avons jeté les bases de la création de nouvelles branches de projet pour de nouveaux projets. Comme le code est stocké en toute sécurité dans la branche archive, nous pouvons progressivement migrer les projets vers des branches distinctes si nécessaire.
Une prochaine étape intéressante consistera à essayer de créer un dépôt public pour le code source de notre série d'articles "Développement d'un Expert Advisor Multi-Devises". La manière de structurer le code dans les différentes parties de la série n'est pas encore claire, mais nous nous pencherons sur cette question dans un avenir proche.
Merci de votre attention ! A bientôt !
Contenu des archives
# | Nom | Version | Description |
---|---|---|---|
MQL5 | Dossier racine du dépôt (dossier des données du terminal) | ||
1 | .gitignore | 1.00 | Fichier listant les dossiers et fichiers à ignorer par le système de contrôle de version Git |
2 | clean.py | 1.00 | Script pour supprimer les fichiers compilés et les répertoires vides lors du passage à la branche principale du dépôt |
Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/17646
Avertissement: Tous les droits sur ces documents sont réservés par MetaQuotes Ltd. La copie ou la réimpression de ces documents, en tout ou en partie, est interdite.
Cet article a été rédigé par un utilisateur du site et reflète ses opinions personnelles. MetaQuotes Ltd n'est pas responsable de l'exactitude des informations présentées, ni des conséquences découlant de l'utilisation des solutions, stratégies ou recommandations décrites.





- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Pour être honnête, ce scénario n'a pas été envisagé. Je ne sais pas si le fait de bannir un utilisateur sur le forum restreint maintenant l'accès au dépôt actuel de MQL Storage, et si cela restreindra également l'accès au nouveau dépôt. Si c'est le cas, ce facteur de risque mérite certainement d'être pris en compte.
Il est difficile de le vérifier - l'évaluation du risque est donc théorique ;-) mais il existe un risque en tant que tel
MQLStorage nécessite une connexion à la communauté. La possibilité technique de se connecter est entre les mains des administrateurs. En théorie, si vous violez les règles sévèrement (ou quelqu'un le pensera sérieusement), vous pouvez être banni. Avec un bannissement temporaire, krode n'est qu'une "défaite dans les droits", c'est-à-dire que des composants du site et des services individuels sont interdits.
Mais il y a aussi des virtuels, des serveurs, des centres de données, des réseaux qui ont gagné un ban-po-ip . MQLStorage y est très probablement indisponible. Vous pouvez l'obtenir sans efforts personnels et même simplement grâce à une adresse IP dynamique :-)
Pour minimiser ces risques, conservez des sauvegardes complètes et un miroir indépendant du référentiel. C'est un autre plaisir...
Tout d'abord, https://forge.mql5.io/ propose deux options d'autorisation. Vous pouvez créer un compte totalement indépendant de MQL5.com
Deuxièmement, une interdiction sur le forum signifie uniquement une interdiction de poster et n'a pas d'effet sur les autres services.
Troisièmement, quel est le rapport avec les interdictions ? Participez au développement des robots, pas aux forums.
Tout d'abord, https://forge.mql5.io/ propose deux options d'autorisation. Vous pouvez créer un compte totalement indépendant de MQL5.com
Mais comment accéder aux projets ME s'il n'y a pas de dépendance vis-à-vis de mql5.com ? Il semble qu'il soit obligatoire de se connecter à la communauté sur ce site.
Et puis comment accéder aux projets depuis ME, s'il n'y a pas de dépendance vis-à-vis de mql5.com ? Il semble qu'il faille se connecter à la communauté sur ce site.
Le compte sera de toute façon créé dans MQL5.com.
Et puis comment accéder aux projets depuis ME, s'il n'y a pas de dépendance vis-à-vis de mql5.com ? Il semble qu'il faille se connecter à la communauté sur ce site.
Vous n'avez pas encore besoin de vous connecter à la communauté. Si vous clonez un dépôt depuis n'importe quel dépôt, comme Algo Forge ou GitHub, dans un dossier à l'intérieur du dossier de données MQL5, il sera visible comme un dossier avec des fichiers. C'est suffisant pour l'édition, le lancement et le débogage, mais toutes les opérations avec le référentiel devront être effectuées à l'aide d'outils tiers. J'ai utilisé cette option pendant un certain temps, alors que ME ne pouvait pas encore travailler avec Algo Forge. Mais en général, c'est plus facile avec le compte mql5.com.