Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 44
- Ranking:
- Publicado:
-
¿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:
- Moviendo manualmente la carpeta a MQL5\Experts\
- Abrir el archivo principal .mq5 en MetaEditor
- 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
- Plantillas multi-archivo: Ampliación para generar scripts de indicadores, archivos de biblioteca o manifiestos de recursos
- Archivos de configuración: Añada la generación de archivos de configuración JSON/XML para la gestión de parámetros
- 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
Estrategia de trading basada en la simple ruptura de los niveles anteriores de máximo (High) o mínimo (Low)
Sideways Martingale
Martingala detector de tendencias uso onnx AI
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)
El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.