Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 47
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Visão geral técnica
O ProjectTemplateGen.mq5 é um utilitário de script do MetaTrader 5 que automatiza a criação de estruturas padronizadas de projetos de Expert Advisor. Ele implementa operações programáticas do sistema de arquivos dentro das restrições de segurança da MQL5 e, ao mesmo tempo, estabelece uma base consistente para o desenvolvimento de sistemas de negociação escalonáveis.
Principais recursos
- Operações programáticas de arquivos: Demonstra a API de manipulação de arquivos da MQL5 para criar diretórios e escrever conteúdo estruturado
- Geração baseada em modelos: Produz arquivos-fonte MQL5 prontos para compilar com esqueletos de manipuladores de eventos adequados.
- Saída configurável: Permite a personalização do tempo de execução por meio de parâmetros de entrada sem modificar o código-fonte
- Conformidade com o Sandbox: Opera no ambiente de execução seguro do MetaTrader 5
Detalhes da implementação
Arquitetura de operações de arquivos
O script implementa uma abordagem modular para a criação de arquivos, com funções distintas que lidam com diferentes aspectos da geração de projetos:
// Orquestração primária em OnStart() string projectPath = "Files\\" + ProjectName + "\\"; if(!FolderCreate(projectPath)) { /* Tratamento de erros */ } if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return; if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh"); CreateManifest(projectPath + "README.txt");
Estrutura do projeto gerado
MQL5/Files/[ProjectName]/ ├── [ProjectName].mq5 # Main Expert Advisor source file ├── [ProjectName].mqh # Optional header/class definition file └── README.txt # Project documentation and instructions
Principais componentes técnicos
1. Construção de caminho dinâmico
string projectPath = "Files\\" + ProjectName + "\\";
- Usa caminhos relativos em conformidade com as restrições de sandbox da MQL5
- Demonstra a concatenação de strings para navegação dinâmica no sistema de arquivos
2. Criação robusta de arquivos com tratamento de erros
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 verificação abrangente de erros para operações de arquivos
- Fornece mensagens de erro significativas com códigos de erro do sistema
- Garante a limpeza adequada de recursos com chamadas FileClose()
3. Geração de conteúdo estruturado
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,"}");
- Gera código MQL5 sintaticamente válido
- Mantém padrões consistentes de formatação e codificação
- Cria código boilerplate compilável
Instruções de uso
Operação básica
- Compilação: Compilar ProjectTemplateGen.mq5 no MetaEditor (F7)
- Execução: Arraste o script do Navigator para qualquer gráfico
- Configuração: Defina os parâmetros na caixa de diálogo de entrada:
- ProjectName: Pasta de destino e nome do arquivo
- AuthorName (nome do autor): Atribuição de direitos autorais e documentação
- CreateIncludeFile: alternar a geração do arquivo de cabeçalho
- Output (Saída): Verifique a guia Experts para obter informações sobre o status da geração e o caminho
Fluxo de trabalho pós-geração
O script cria projetos em MQL5\Files\[ProjectName]\ devido a restrições de segurança do script MQL5.
Conclua a configuração:
- Mover manualmente a pasta para MQL5\Experts\
- Abrir o arquivo principal .mq5 no MetaEditor
- Implementar sua lógica de negociação nos esqueletos de função fornecidos
Oportunidades de expansão para fluxos de trabalho avançados
Aprimoramentos de escalabilidade
- Modelos de vários arquivos: Ampliação para gerar scripts de indicadores, arquivos de biblioteca ou manifestos de recursos
- Arquivos de configuração: Adicione a geração de arquivos de configuração JSON/XML para gerenciamento de parâmetros
- Scripts de compilação: Incorporar compilação em lote ou arquivos de gerenciamento de dependências

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";//Nome do projeto input string AuthorName = "Type your name eg. Clemence Benjamin"; // Nome do autor input bool CreateIncludeFile = true;// Gerar um arquivo de cabeçalho //+------------------------------------------------------------------+ //| Entrada de script| //+------------------------------------------------------------------+ void OnStart() { Print("=== MQL5 Project Template Generator Started ==="); Print("Project Name: ", ProjectName); Print("Author: ", AuthorName); //--- caminho da sandbox ALLOWED string projectPath = "Files\\" + ProjectName + "\\"; Print("Target path (sandbox-safe): ", projectPath); //--- Criar pasta de projeto if(!FolderCreate(projectPath)) { Print("ERROR: Cannot create project folder. Error: ", GetLastError()); return; } //--- Criar arquivo EA if(!CreateMainEA(projectPath + ProjectName + ".mq5")) return; //--- Criar arquivo de inclusão if(CreateIncludeFile) CreateInclude(projectPath + ProjectName + ".mqh"); //--- Criar 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); } //+------------------------------------------------------------------+ //| Criar 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; } //+------------------------------------------------------------------+ //| Criar arquivo de inclusão| //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+ //| Criar 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); } //+------------------------------------------------------------------+
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/68598
VR Breakdown level - Estratégia de negociação baseada na ruptura do High ou Low anterior
Estratégia de negociação baseada na simples ruptura dos níveis anteriores de High ou Low
Sideways Martingale
O detector de tendências Martingale usa a IA onnx
EA Duplicate Detector
Permitir que o EA determine se há EAs duplicados no gráfico com base em condições.
Accelerator Oscillator (AC)
O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.