und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 33
- Rating:
- Veröffentlicht:
-
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:
- Manuelles Verschieben des Ordners nach MQL5\Experts\
- Öffnen der .mq5-Hauptdatei in MetaEditor
- Implementieren Ihrer Handelslogik in den bereitgestellten Funktionsskeletten
Erweiterungsmöglichkeiten für fortgeschrittene Workflows
Skalierbarkeitsverbesserungen
- Mehrdateien-Vorlagen: Erweitern Sie diese, um Indikatorskripte, Bibliotheksdateien oder Ressourcenmanifeste zu generieren.
- Konfigurationsdateien: Hinzufügen von JSON/XML-Konfigurationsdateien für die Parameterverwaltung
- 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
Einfache Handelsstrategie auf Basis des Ausbruchs über vorherige High- oder Low-Level
Sideways Martingale
Martingale-Trend-Detektor verwenden onnx AI
EA Duplicate Detector
Erlauben Sie dem EA, anhand von Bedingungen zu bestimmen, ob es doppelte EAs auf dem Chart gibt.
Accelerator Oszillator (AC)
Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.