Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
52
Valutazioni:
(4)
Pubblicato:
\MQL5\Scripts\
Freelance MQL5 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:

  1. Spostando manualmente la cartella in MQL5\Esperti\
  2. Aprire il file principale .mq5 in MetaEditor
  3. Implementare la logica di trading negli scheletri di funzione forniti.

Opportunità di espansione per flussi di lavoro avanzati

Miglioramenti della scalabilità

  1. Modelli multi-file: Estensione per generare script di indicatori, file di libreria o manifesti di risorse.
  2. File di configurazione: Aggiunta della generazione di file di configurazione JSON/XML per la gestione dei parametri
  3. 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 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 - 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

Consente all'EA di determinare se ci sono EA duplicati sul grafico in base alle condizioni.

Trade With MA Trade With MA

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