Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
44
Ranking:
(2)
Publicado:
\MQL5\Scripts\
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Resumen Técnico

ProjectTemplateGen.mq5 es una utilidad de script de MetaTrader 5 que automatiza la creación de estructuras de proyecto de Asesor Experto estandarizadas. Implementa operaciones programáticas del sistema de archivos dentro de las restricciones de seguridad de MQL5, al tiempo que establece una base consistente para el desarrollo de sistemas de trading escalables.


Capacidades principales

  • Operaciones programáticas de archivos: Demuestra la API de manejo de archivos de MQL5 para crear directorios y escribir contenido estructurado.
  • Generación basada en plantillas: Produce archivos fuente MQL5 listos para compilar con esqueletos de manejadores de eventos adecuados
  • Salida configurable: Permite la personalización en tiempo de ejecución a través de parámetros de entrada sin modificar el código fuente
  • Conformidad con Sandbox: Funciona dentro del entorno de ejecución seguro de MetaTrader 5

Detalles de implementación

Arquitectura de operaciones de archivos

El script implementa un enfoque modular para la creación de archivos, con distintas funciones que manejan diferentes aspectos de la generación de proyectos:

// Orquestación primaria en OnStart()
string projectPath = "Files\\" + ProjectName + "\\";
if(!FolderCreate(projectPath)) { /* Tratamiento de errores */ }
if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return;
if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh");
CreateManifest(projectPath + "README.txt");

Estructura del proyecto generado

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


Componentes técnicos clave

1. Construcción dinámica de rutas

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

  • Utiliza rutas relativas que cumplen con las restricciones del sandbox MQL5
  • Demuestra la concatenación de cadenas para la navegación dinámica del sistema de archivos

2. 2. Creación Robusta de Archivos con Manejo de Errores

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;
}

  • Implementa una completa comprobación de errores en las operaciones con archivos
  • Proporciona mensajes de error significativos con códigos de error del sistema
  • Asegura la limpieza adecuada de los recursos con las llamadas FileClose()

3. 3. Generación de contenido estructurado

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,"}");

  • Genera código MQL5 sintácticamente válido
  • Mantiene estándares consistentes de formato y codificación
  • Crea código boilerplate compilable

Instrucciones de uso

Funcionamiento básico

  • Compilación: Compilar ProjectTemplateGen.mq5 en MetaEditor (F7)
  • Ejecución: Arrastre el script desde el Navegador a cualquier gráfico
  • Configuración: Establezca los parámetros en el diálogo de entrada:
  • ProjectName: Carpeta de destino y nombre del archivo
  • AuthorName: Copyright y atribución de documentación
  • CreateIncludeFile: Alternar la generación del archivo de cabecera
  • Salida: Compruebe en la pestaña Expertos el estado de la generación y la información sobre la ruta

Flujo de trabajo posterior a la generación

El script crea los proyectos en MQL5\Files\[ProjectName]\ debido a las restricciones de seguridad del script MQL5.

Complete la configuración:

  1. Moviendo manualmente la carpeta a MQL5\Experts\
  2. Abrir el archivo principal .mq5 en MetaEditor
  3. Implementar su lógica de trading en los esqueletos de función proporcionados

Oportunidades de expansión para flujos de trabajo avanzados

Mejoras de escalabilidad

  1. Plantillas multi-archivo: Ampliación para generar scripts de indicadores, archivos de biblioteca o manifiestos de recursos
  2. Archivos de configuración: Añada la generación de archivos de configuración JSON/XML para la gestión de parámetros
  3. Scripts de compilación: Incorpore archivos de compilación por lotes o de gestión de dependencias



Código :

//+------------------------------------------------------------------+
//|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"

//--- Entradas
input string ProjectName       = "Type your project name";/Nombre del proyecto
input string AuthorName        = "Type your name eg. Clemence Benjamin"; // Nombre del autor
input bool   CreateIncludeFile = true;// Generar un fichero de cabecera

//+------------------------------------------------------------------+
//| Entrada de guión|
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("=== MQL5 Project Template Generator Started ===");
   Print("Project Name: ", ProjectName);
   Print("Author: ", AuthorName);

//--- ruta de sandbox PERMITIDA
   string projectPath = "Files\\" + ProjectName + "\\";

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

//--- Crear carpeta de proyecto
   if(!FolderCreate(projectPath))
     {
      Print("ERROR: Cannot create project folder. Error: ", GetLastError());
      return;
     }

//--- Crear fichero EA
   if(!CreateMainEA(projectPath + ProjectName + ".mq5"))
      return;

//--- Crear archivo de inclusión
   if(CreateIncludeFile)
      CreateInclude(projectPath + ProjectName + ".mqh");

//--- Crear manifiesto
   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);
  }

//+------------------------------------------------------------------+
//| Crear 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;
  }

//+------------------------------------------------------------------+
//| Crear archivo de inclusión|
//+------------------------------------------------------------------+
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);
  }

//+------------------------------------------------------------------+
//| Crear manifiesto|
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/68598

VR Breakdown level - Estrategia de trading basada en la ruptura del máximo o mínimo anterior VR Breakdown level - Estrategia de trading basada en la ruptura del máximo o mínimo anterior

Estrategia de trading basada en la simple ruptura de los niveles anteriores de máximo (High) o mínimo (Low)

Sideways Martingale Sideways Martingale

Martingala detector de tendencias uso onnx AI

EA Duplicate Detector EA Duplicate Detector

Permitir que el EA determine si hay EA duplicados en el gráfico en función de las condiciones.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.