Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
33
Rating:
(2)
Veröffentlicht:
\MQL5\Scripts\
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Technischer Überblick

ProjectTemplateGen.mq5 ist ein MetaTrader 5-Skriptprogramm, das die Erstellung standardisierter Expert Advisor-Projektstrukturen automatisiert. Es implementiert programmatische Dateisystem-Operationen innerhalb der Sicherheitseinschränkungen von MQL5 und schafft gleichzeitig eine konsistente Grundlage für die Entwicklung skalierbarer Handelssysteme.


Kern-Fähigkeiten

  • Programmatische Dateioperationen: Demonstration der MQL5-Dateiverarbeitungs-API zur Erstellung von Verzeichnissen und zum Schreiben strukturierter Inhalte
  • Schablonen-basierte Erzeugung: Erzeugt kompilierfertige MQL5-Quelldateien mit geeigneten Event-Handler-Skeletons
  • Konfigurierbare Ausgabe: Ermöglicht Laufzeitanpassung durch Eingabeparameter ohne Änderung des Quellcodes
  • Sandbox-Konformität: Arbeitet innerhalb der sicheren Ausführungsumgebung von MetaTrader 5

Details zur Implementierung

Architektur der Dateioperationen

Das Skript implementiert einen modularen Ansatz zur Dateierstellung, wobei verschiedene Funktionen unterschiedliche Aspekte der Projekterstellung behandeln:

// Primäre Orchestrierung in OnStart()
string projectPath = "Files\\" + ProjectName + "\\";
if(!FolderCreate(projectPath)) { /* Fehlerbehandlung */ }
if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return;
if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh");
CreateManifest(projectPath + "README.txt");

Generierte Projektstruktur

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


Technische Schlüsselkomponenten

1. Dynamische Pfadkonstruktion

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

  • Verwendet relative Pfade, die mit den MQL5-Sandbox-Einschränkungen konform sind
  • Demonstriert Stringverkettung für dynamische Dateisystemnavigation

2. Robuste Dateierstellung mit Fehlerbehandlung

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

  • Implementiert umfassende Fehlerprüfung für Dateioperationen
  • Bietet aussagekräftige Fehlermeldungen mit Systemfehlercodes
  • Sicherstellung einer ordnungsgemäßen Ressourcenbereinigung mit FileClose()-Aufrufen

3. Strukturierte Inhaltserstellung

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

  • Generiert syntaktisch gültigen MQL5-Code
  • Behält konsistente Formatierungs- und Codierungsstandards bei
  • Erzeugt kompilierbaren Boilerplate-Code

Gebrauchsanweisungen

Grundlegende Operation

  • Kompilieren: Kompilieren von ProjectTemplateGen.mq5 in MetaEditor (F7)
  • Ausführen: Skript vom Navigator auf ein beliebiges Diagramm ziehen
  • Konfiguration: Parameter im Eingabedialog einstellen:
  • Projektname: Zielordner und Dateibenennung
  • Autorenname: Copyright und Dokumentationszuordnung
  • CreateIncludeFile: Erzeugung von Header-Dateien einschalten
  • Ausgabe: Experten-Registerkarte für Generierungsstatus und Pfadinformationen prüfen

Arbeitsablauf nach der Generierung

Das Skript erstellt Projekte in MQL5\Files\[Projektname]\ aufgrund von MQL5-Skriptsicherheitseinschränkungen.

Vervollständigen Sie die Einrichtung durch:

  1. Manuelles Verschieben des Ordners nach MQL5\Experts\
  2. Öffnen der .mq5-Hauptdatei in MetaEditor
  3. Implementieren Ihrer Handelslogik in den bereitgestellten Funktionsskeletten

Erweiterungsmöglichkeiten für fortgeschrittene Workflows

Skalierbarkeitsverbesserungen

  1. Mehrdateien-Vorlagen: Erweitern Sie diese, um Indikatorskripte, Bibliotheksdateien oder Ressourcenmanifeste zu generieren.
  2. Konfigurationsdateien: Hinzufügen von JSON/XML-Konfigurationsdateien für die Parameterverwaltung
  3. Skripte erstellen: Batch-Kompilierung oder Dateien zur Verwaltung von Abhängigkeiten einbinden



Code :

//+------------------------------------------------------------------+
//|ProjectTemplateGen.mq5 |
//|Urheberrecht 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"

//--- Eingaben
input string ProjectName       = "Type your project name";//Projektname
input string AuthorName        = "Type your name eg. Clemence Benjamin"; // Autor Name
input bool   CreateIncludeFile = true;// Erzeugen einer Header-Datei

//+------------------------------------------------------------------+
//| Skript-Eintrag|
//+------------------------------------------------------------------+
void OnStart()
  {
   Print("=== MQL5 Project Template Generator Started ===");
   Print("Project Name: ", ProjectName);
   Print("Author: ", AuthorName);

//--- ALLOWED sandbox path
   string projectPath = "Files\\" + ProjectName + "\\";

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

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

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

//--- Include-Datei erstellen
   if(CreateIncludeFile)
      CreateInclude(projectPath + ProjectName + ".mqh");

//--- Manifest erstellen
   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);
  }

//+------------------------------------------------------------------+
//| Main EA erstellen|
//+------------------------------------------------------------------+
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;
  }

//+------------------------------------------------------------------+
//| Include-Datei erstellen|
//+------------------------------------------------------------------+
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);
  }

//+------------------------------------------------------------------+
//| Manifest erstellen|
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/68598

VR Breakdown Level - Handelsstrategie auf Basis des Ausbruchs über das vorherige High oder unter das vorherige Low VR Breakdown Level - Handelsstrategie auf Basis des Ausbruchs über das vorherige High oder unter das vorherige Low

Einfache Handelsstrategie auf Basis des Ausbruchs über vorherige High- oder Low-Level

Sideways Martingale Sideways Martingale

Martingale-Trend-Detektor verwenden onnx AI

EA Duplicate Detector EA Duplicate Detector

Erlauben Sie dem EA, anhand von Bedingungen zu bestimmen, ob es doppelte EAs auf dem Chart gibt.

Accelerator Oszillator (AC) Accelerator Oszillator (AC)

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.