Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Twitter !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
130
Note:
(4)
Publié:
\MQL5\Scripts\
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

Aperçu technique

ProjectTemplateGen.mq5 est un utilitaire de script MetaTrader 5 qui automatise la création de structures de projet Expert Advisor standardisées. Il met en œuvre des opérations programmatiques de système de fichiers dans le cadre des contraintes de sécurité de MQL5 tout en établissant une base cohérente pour le développement de systèmes de négociation évolutifs.


Capacités principales

  • Opérations programmatiques sur les fichiers : Démonstration de l'API de gestion de fichiers de MQL5 pour la création de répertoires et l'écriture de contenu structuré.
  • Génération basée sur des modèles : Produit des fichiers sources MQL5 prêts à compiler avec des squelettes de gestionnaires d'événements appropriés.
  • Sortie configurable : Permet la personnalisation de l'exécution par le biais de paramètres d'entrée sans modifier le code source.
  • Conformité au bac à sable : Fonctionne dans l'environnement d'exécution sécurisé de MetaTrader 5

Détails de l'implémentation

Architecture des opérations de fichiers

Le script met en œuvre une approche modulaire de la création de fichiers, avec des fonctions distinctes gérant différents aspects de la génération de projets :

// Orchestration primaire dans OnStart()
string projectPath = "Files\\" + ProjectName + "\\";
if(!FolderCreate(projectPath)) { /* Gestion des erreurs */ }
if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return;
if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh");
CreateManifest(projectPath + "README.txt");

Structure du projet généré

MQL5/Files/[ProjectName]/
├── [ProjectName].mq5      #  Main Expert Advisor source file
├── [ProjectName].mqh      #  Optional header/class definition file  
└── README.txt            #  Project documentation and instructions


Composants techniques clés

1. Construction dynamique des chemins

string projectPath = "Files\\" + ProjectName + "\\";

  • Utilise des chemins relatifs conformes aux restrictions du bac à sable MQL5
  • Démonstration de la concaténation de chaînes pour la navigation dynamique dans le système de fichiers

2. Création robuste de fichiers avec gestion des erreurs

int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
if(h == INVALID_HANDLE)
{
    Print("ERROR: Cannot create main EA file. Error: ", GetLastError());
    return false;
}

  • Mise en œuvre d'un contrôle d'erreur complet pour les opérations sur les fichiers
  • Fournit des messages d'erreur significatifs avec les codes d'erreur du système
  • Assure un nettoyage correct des ressources avec les appels FileClose()

3. Génération de contenu structuré

FileWrite(h,"//+------------------------------------------------------------------+");
FileWrite(h,"//| " + ProjectName + ".mq5");
FileWrite(h,"//| Author: " + AuthorName);
FileWrite(h,"#property strict");
FileWrite(h,"int OnInit()");
FileWrite(h,"{");
FileWrite(h,"   return INIT_SUCCEEDED;");
FileWrite(h,"}");

  • Génère un code MQL5 syntaxiquement valide
  • Maintient un formatage cohérent et des normes de codage
  • Création d'un code modèle compilable

Instructions d'utilisation

Fonctionnement de base

  • Compilation : Compiler ProjectTemplateGen.mq5 dans MetaEditor (F7)
  • Exécution : Faites glisser le script depuis le Navigateur sur n'importe quel graphique
  • Configuration : Définir les paramètres dans la boîte de dialogue d'entrée :
  • ProjectName : Nom du projet : Nom du dossier de destination et du fichier
  • AuthorName : Attribution des droits d'auteur et de la documentation
  • CreateIncludeFile : Basculer la génération du fichier d'en-tête
  • Output (Sortie) : Consulter l'onglet Experts pour connaître l'état de la génération et le chemin d'accès

Flux de travail post-génération

Le script crée des projets dans MQL5\Files[ProjectName]\Nen raison des restrictions de sécurité du script MQL5.

Terminez l'installation en :

  1. Déplaçant manuellement le dossier vers MQL5\Experts\
  2. Ouvrant le fichier .mq5 principal dans MetaEditor
  3. Implémentant votre logique commerciale dans les squelettes de fonctions fournis.

Possibilités d'expansion pour les flux de travail avancés

Améliorations de l'évolutivité

  1. Modèles multi-fichiers : Extension pour générer des scripts d'indicateurs, des fichiers de bibliothèque ou des manifestes de ressources
  2. Fichiers de configuration : Génération de fichiers de configuration JSON/XML pour la gestion des paramètres
  3. Scripts de construction : Incorporer des fichiers de compilation par lots ou de gestion des dépendances



Code :

//+------------------------------------------------------------------+
//|ProjectTemplateGen.mq5 |
//|Copyright 2025, Clemence Benjamin
//|https ://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Clemence Benjamin"
#property link      "https://www.mql5.com"
#property strict
#property description "Generates EA project template in MQL5//Files"
#property script_show_inputs
#property version "2.01"

//--- Entrées
input string ProjectName       = "Type your project name";//Nom du projet
input string AuthorName        = "Type your name eg. Clemence Benjamin"; // Nom de l'auteur
input bool   CreateIncludeFile = true;// Générer un fichier d'en-tête

//+------------------------------------------------------------------+
//| Entrée de script|
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("=== MQL5 Project Template Generator Started ===");
   Print("Project Name: ", ProjectName);
   Print("Author: ", AuthorName);

//--- Chemin d'accès au bac à sable autorisé
   string projectPath = "Files\\" + ProjectName + "\\";

   Print("Target path (sandbox-safe): ", projectPath);

//--- Créer un dossier de projet
   if(!FolderCreate(projectPath))
     {
      Print("ERROR: Cannot create project folder. Error: ", GetLastError());
      return;
     }

//--- Création d'un fichier EA
   if(!CreateMainEA(projectPath + ProjectName + ".mq5"))
      return;

//--- Créer un fichier d'inclusion
   if(CreateIncludeFile)
      CreateInclude(projectPath + ProjectName + ".mqh");

//--- Créer un manifeste
   CreateManifest(projectPath + "README.txt");

   Print("SUCCESS: Project created in MQL5\\Files\\", ProjectName);
   Print("ACTION REQUIRED: Move folder to MQL5\\Experts\\ manually");
   Print("Folder path: ", TerminalInfoString(TERMINAL_DATA_PATH) + "\\" + projectPath);
  }

//+------------------------------------------------------------------+
//| Créer l'EA principal|
//+------------------------------------------------------------------+
bool CreateMainEA(const string filePath)
  {
   int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(h == INVALID_HANDLE)
     {
      Print("ERROR: Cannot create main EA file. Error: ", GetLastError());
      return false;
     }

   FileWrite(h,"//+------------------------------------------------------------------+");
   FileWrite(h,"//| " + ProjectName + ".mq5");
   FileWrite(h,"//| Author: " + AuthorName);
   FileWrite(h,"//+------------------------------------------------------------------+");
   FileWrite(h,"#property strict");
   FileWrite(h,"");
   FileWrite(h,"int OnInit()");
   FileWrite(h,"{");
   FileWrite(h,"   return INIT_SUCCEEDED;");
   FileWrite(h,"}");
   FileWrite(h,"");
   FileWrite(h,"void OnTick()");
   FileWrite(h,"{");
   FileWrite(h,"}");
   FileClose(h);
   return true;
  }

//+------------------------------------------------------------------+
//| Créer un fichier d'inclusion|
//+------------------------------------------------------------------+
void CreateInclude(const string filePath)
  {
   int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(h == INVALID_HANDLE)
      return;

   FileWrite(h,"#ifndef __" + ProjectName + "_MQH__");
   FileWrite(h,"#define __" + ProjectName + "_MQH__");
   FileWrite(h,"class C" + ProjectName + " {};");
   FileWrite(h,"#endif");
   FileClose(h);
  }

//+------------------------------------------------------------------+
//| Créer un manifeste|
//+------------------------------------------------------------------+
void CreateManifest(const string filePath)
  {
   int h = FileOpen(filePath, FILE_WRITE | FILE_TXT | FILE_ANSI);
   if(h == INVALID_HANDLE)
      return;

   FileWrite(h,"PROJECT TEMPLATE");
   FileWrite(h,"Name: " + ProjectName);
   FileWrite(h,"Author: " + AuthorName);
   FileWrite(h,"");
   FileWrite(h,"NOTE:");
   FileWrite(h,"Move this folder to MQL5\\Experts\\ to compile.");
   FileClose(h);
  }
//+------------------------------------------------------------------+

Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/68598

VR Breakdown level - Stratégie de trading sur rupture du plus haut ou du plus bas précédent VR Breakdown level - Stratégie de trading sur rupture du plus haut ou du plus bas précédent

Stratégie de trading basée sur la simple rupture des niveaux précédents de plus haut ou plus bas

Modern Time Panel - Candle Time Modern Time Panel - Candle Time

Modern Time Panel for MT5 The Modern Time Panel is a sleek, minimalist custom indicator for MetaTrader 5 that helps you track time with precision. Fixed neatly at the top-right corner of your chart, it displays the current Broker Time, Local Time, and a live countdown to the next candlestick (New Bar). Built with an independent 1-second timer, the countdown continuously runs even when the market is slow or there are no incoming ticks. Fully customizable and dark-mode friendly, it is the perfect non-intrusive tool to ensure you never miss a candle close.

EA Duplicate Detector EA Duplicate Detector

Permettre à l'AE de déterminer s'il existe des AE en double sur le graphique en fonction des conditions.

Trade With MA Trade With MA

Trade using MA. An easy indicator to identify the trend direction on a specific timeframe.