Unisciti alla nostra fan page
- Visualizzazioni:
- 52
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Panoramica tecnica
ProjectTemplateGen.mq5 è un'utility di script MetaTrader 5 che automatizza la creazione di strutture di progetto Expert Advisor standardizzate. Implementa operazioni programmatiche di file system all'interno dei vincoli di sicurezza di MQL5, creando al contempo una base coerente per lo sviluppo di sistemi di trading scalabili.
Funzionalità principali
- Operazioni programmatiche sui file: Dimostra l'API di gestione dei file di MQL5 per la creazione di directory e la scrittura di contenuti strutturati.
- Generazione basata su modelli: Produce file sorgente MQL5 pronti per la compilazione con scheletri di gestori di eventi adeguati
- Output configurabile: Permette la personalizzazione del runtime attraverso i parametri di input senza modificare il codice sorgente
- Conformità alla Sandbox: Funziona all'interno dell'ambiente di esecuzione sicuro di MetaTrader 5
Dettagli di implementazione
Architettura delle operazioni sui file
Lo script implementa un approccio modulare alla creazione dei file, con funzioni distinte che gestiscono diversi aspetti della generazione del progetto:
// Orchestrazione primaria in OnStart() string projectPath = "Files\\" + ProjectName + "\\"; if(!FolderCreate(projectPath)) { /* Gestione degli errori */ } if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return; if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh"); CreateManifest(projectPath + "README.txt");
Struttura del progetto generato
MQL5/Files/[ProjectName]/ ├── [ProjectName].mq5 # Main Expert Advisor source file ├── [ProjectName].mqh # Optional header/class definition file └── README.txt # Project documentation and instructions
Componenti tecnici chiave
1. Costruzione dinamica dei percorsi
string projectPath = "Files\\" + ProjectName + "\\";
- Utilizza percorsi relativi conformi alle restrizioni della sandbox MQL5.
- Dimostra la concatenazione di stringhe per la navigazione dinamica nel file system.
2. Creazione robusta di file con gestione degli errori
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 un controllo completo degli errori per le operazioni sui file
- Fornisce messaggi di errore significativi con i codici di errore del sistema
- Assicura la corretta pulizia delle risorse con le chiamate a FileClose().
3. Generazione di contenuti strutturati
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 codice MQL5 sintatticamente valido
- Mantiene standard coerenti di formattazione e codifica
- Crea codice boilerplate compilabile
Istruzioni d'uso
Operazioni di base
- Compilazione: Compilazione di ProjectTemplateGen.mq5 in MetaEditor (F7)
- Esecuzione: Trascinare lo script dal Navigatore su qualsiasi grafico
- Configurazione: Impostare i parametri nella finestra di dialogo di input:
- NomeProgetto: Cartella di destinazione e nome del file
- Nomeautore: Attribuzione del copyright e della documentazione
- CreateIncludeFile: alterna la generazione di un file di intestazione.
- Output: Controllare la scheda Experts per lo stato di generazione e le informazioni sul percorso.
Flusso di lavoro post-generazione
Lo script crea i progetti in MQL5\Files\[NomeProgetto]\ a causa delle restrizioni di sicurezza dello script MQL5.
Completare la configurazione con:
- Spostando manualmente la cartella in MQL5\Esperti\
- Aprire il file principale .mq5 in MetaEditor
- Implementare la logica di trading negli scheletri di funzione forniti.
Opportunità di espansione per flussi di lavoro avanzati
Miglioramenti della scalabilità
- Modelli multi-file: Estensione per generare script di indicatori, file di libreria o manifesti di risorse.
- File di configurazione: Aggiunta della generazione di file di configurazione JSON/XML per la gestione dei parametri
- Script di compilazione: Incorporare file di compilazione batch o di gestione delle dipendenze.

Codice :
//+------------------------------------------------------------------+ //|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" //--- Ingressi input string ProjectName = "Type your project name";//Nome del progetto input string AuthorName = "Type your name eg. Clemence Benjamin"; // Nome dell'autore input bool CreateIncludeFile = true;// Generare un file di intestazione //+------------------------------------------------------------------+ //| Voce di script| //+------------------------------------------------------------------+ void OnStart() { Print("=== MQL5 Project Template Generator Started ==="); Print("Project Name: ", ProjectName); Print("Author: ", AuthorName); //--- Percorso sandbox consentito string projectPath = "Files\\" + ProjectName + "\\"; Print("Target path (sandbox-safe): ", projectPath); //--- Creare la cartella del progetto if(!FolderCreate(projectPath)) { Print("ERROR: Cannot create project folder. Error: ", GetLastError()); return; } //--- Creare il file EA if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return; //--- Creare il file di inclusione if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh"); //--- Creare il manifesto 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); } //+------------------------------------------------------------------+ //| Creare l'EA principale| //+------------------------------------------------------------------+ 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; } //+------------------------------------------------------------------+ //| Creare un file di inclusione| //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+ //| Creare un manifesto| //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+
Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/68598
VR Breakdown level - Strategia di trading basata sulla rottura del massimo o minimo precedente
Strategia di trading basata sulla semplice rottura dei precedenti livelli di massimo o minimo
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
Consente all'EA di determinare se ci sono EA duplicati sul grafico in base alle condizioni.
Trade With MA
Trade using MA. An easy indicator to identify the trend direction on a specific timeframe.