
Configura el mejor entorno de desarrollo para crear Expert Advisors e indicadores personalizados en MetaTrader 4
MetaEditor es el IDE oficial para MQL4, pero muchos traders-programadores prefieren el ecosistema de Visual Studio Code: Git integrado, extensiones potentes y un flujo de trabajo más moderno. En esta guía aprenderás a configurarlo correctamente y a integrarlo con MetaTrader 4.
¿Por qué usar VS Code para MQL4?
Si ya tienes experiencia desarrollando software, es probable que MetaEditor te resulte bastante limitado comparado con los editores modernos. Visual Studio Code ofrece ventajas concretas que mejoran la productividad en proyectos de automatización de trading:
- Control de versiones nativo con Git — Ideal para mantener un historial de cambios en tus EAs e indicadores, algo esencial si iteras frecuentemente sobre tu estrategia.
- Proyectos con múltiples archivos — VS Code gestiona mejor las estructuras de carpetas complejas con múltiples .mq4 y .mqh.
- Autocompletado mejorado — Con las extensiones correctas, obtienes sugerencias de código mucho más avanzadas que las de MetaEditor.
- Terminal integrada — Ejecuta scripts de build, herramientas de testing y comandos sin cambiar de ventana.
- Customización completa — Temas, atajos de teclado, snippets personalizados para MQL4.
La limitación principal: compilación
Importante: VS Code no puede compilar MQL4 de forma nativa. No existe un compilador independiente de MQL4 fuera del ecosistema de MetaTrader. Para ejecutar tu código necesitarás siempre MetaEditor o MetaTrader 4 instalados.
Dicho esto, existen formas de integrar la compilación directamente desde VS Code usando tareas personalizadas (tasks.json), lo que minimiza la necesidad de cambiar de aplicación. Lo veremos en detalle más adelante.
Extensiones recomendadas
Instala estas extensiones desde el Marketplace de VS Code (Ctrl+Shift+X) para obtener una experiencia óptima:
| Esencial MQL4/MQL5 Language Resaltado de sintaxis específico para MQL4. Busca “MQL” en el Marketplace. | Muy recomendada C/C++ (Microsoft) MQL4 deriva de C++. Esta extensión potencia el autocompletado y la navegación de código. | Productividad GitLens Visualiza el historial de cambios, compara versiones y gestiona ramas de tus EAs. |
| Productividad Todo Tree Resalta y lista todos los comentarios // TODO y // FIXME en tu proyecto. | Opcional Bracket Pair Colorizer Colorea pares de llaves/paréntesis. Muy útil en funciones largas con anidamiento. | Opcional Prettier / EditorConfig Para mantener un estilo de código consistente en proyectos con múltiples archivos. |
Configuración paso a paso
- Instala VS Code y MetaTrader 4: Descarga VS Code desde code.visualstudio.com y asegúrate de tener MetaTrader 4 instalado con MetaEditor accesible.
- Abre la carpeta de datos de MT4: En MetaTrader 4 ve a Archivo → Abrir carpeta de datos. Navega hasta MQL4/Experts (para EAs) o MQL4/Indicators y abre esa carpeta desde VS Code.
- Instala las extensiones recomendadas: Abre el panel de extensiones con Ctrl+Shift+X e instala al menos la extensión de lenguaje MQL y C/C++ de Microsoft.
- Crea el archivo .editorconfig: En la raíz del proyecto, crea un .editorconfig para unificar el formato de indentación y encoding.
- Inicializa Git (opcional pero recomendado): Ejecuta git init en la terminal integrada de VS Code para tener control de versiones desde el primer commit.
Compilar sin salir de VS Code
Esta es la parte más poderosa de la integración. Puedes crear una tarea de VS Code que invoque el compilador de MetaEditor directamente desde el editor, sin necesidad de cambiar de ventana.
Crea la carpeta .vscode en tu proyecto y dentro el archivo tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Compilar MQL4 (archivo actual)",
"type": "shell",
"command": "\"C:\\Program Files (x86)\\MetaTrader 4\\metaeditor.exe\" /compile:\"${file}\" /log",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "shared"
},
"problemMatcher": []
}
]
}
Consejo: Una vez configurado, presiona Ctrl+Shift+B para compilar el archivo MQL4 que tengas abierto en ese momento. El resultado aparecerá en la terminal integrada de VS Code.
Si tienes MetaTrader instalado en una ruta distinta, ajusta el path en el campo “command“. Para localizarlo, haz clic derecho sobre el ícono de MT4 → Abrir ubicación del archivo.
Ejemplo completo: EA básico en MQL4
A continuación un Expert Advisor de ejemplo para que veas la sintaxis con resaltado completo. Este EA imprime un mensaje al iniciar y registra cada nuevo tick:
//+------------------------------------------------------------------+
//| MiPrimerEA.mq4 |
//| TecnicasDeTrading.com — Ejemplo de estructura básica |
//+------------------------------------------------------------------+
#property copyright "TecnicasDeTrading.com"
#property version "1.00"
#property strict
// ── Parámetros de entrada ──────────────────────────────────────── //
input double LotSize = 0.1; // Tamaño de lote
input int MagicNumber= 12345; // Número mágico del EA
input int StopLoss = 50; // Stop loss en pips
input int TakeProfit = 100; // Take profit en pips
// ── OnInit — se ejecuta al cargar el EA ───────────────────────── //
int OnInit() {
Print("EA iniciado en: ", Symbol(), " - Timeframe: ", Period());
return(INIT_SUCCEEDED);
}
// ── OnDeinit — al retirar el EA ────────────────────────────────── //
void OnDeinit(const int reason) {
Print("EA detenido. Motivo: ", reason);
}
// ── OnTick — se ejecuta en cada nuevo tick ────────────────────── //
void OnTick() {
// Verificar que no hay posiciones abiertas con este EA
if(TotalOrders() > 0) return;
double ask = MarketInfo(Symbol(), MODE_ASK);
double bid = MarketInfo(Symbol(), MODE_BID);
double pip = Point() * 10;
// Ejemplo: abrir compra con SL y TP dinámicos
int ticket = OrderSend(
Symbol(), OP_BUY, LotSize,
ask,
3, // slippage en puntos
ask - StopLoss * pip, // stop loss
ask + TakeProfit * pip, // take profit
"TecnicasDeTrading EA",
MagicNumber,
0, clrGreen
);
if(ticket < 0)
Print("Error al abrir orden: ", GetLastError());
}
// ── Función auxiliar: cuenta órdenes abiertas ─────────────────── //
int TotalOrders() {
int count = 0;
for(int i = 0; i < OrdersTotal(); i++) {
if(OrderSelect(i, SELECT_BY_POS) &&
OrderMagicNumber() == MagicNumber)
count++;
}
return count;
}
Nota: Este EA es solo un ejemplo estructural con fines educativos. Para usarlo en cuenta real debes añadir gestión de riesgo adecuada, filtros de entrada y backtesting exhaustivo.
Flujo de trabajo recomendado
El flujo de trabajo para el desarrollo de indicadores o EA de MQL4 en VSC debería ser el siguiente:
| 📝 Editar Escribe o modifica tu EA/indicador en VS Code con autocompletado y resaltado de sintaxis | → | ⚙️ Compilar Presiona Ctrl+Shift+B para compilar vía MetaEditor desde dentro de VS Code |
| 🔍 Revisar errores Revisa los errores de compilación en la terminal integrada de VS Code | → | 📊 Testear Carga el EA en MetaTrader 4 y ejecuta el Strategy Tester para validar |
| ✅ Commit Una vez validado, haz commit en Git para registrar la versión que funciona | → | 🔁 Iterar Vuelve a VS Code para la siguiente mejora — el ciclo comienza de nuevo |
VS Code vs MetaEditor: comparativa
| Característica | VS Code | MetaEditor |
|---|---|---|
| Compilación MQL4 | Vía tarea externa | Nativo (F7) |
| Autocompletado | Excelente (con extensiones) | Básico |
| Control de versiones (Git) | Integrado | No disponible |
| Resaltado de sintaxis MQL4 | Sí (extensión) | Nativo |
| Depurador (Debugger) | No disponible | Sí |
| Snippets personalizados | Muy flexible | Limitado |
| Gestión de múltiples archivos | Excelente | Básica |
| Documentación integrada de MQL4 | No disponible | Sí (F1) |
| Personalización del editor | Extensísima | Muy limitada |
| Curva de aprendizaje | Media | Baja |
Conclusiones
VS Code es una opción muy válida para desarrollar en MQL4, especialmente si trabajas en proyectos medianos o grandes, valoras el control de versiones con Git o ya tienes un flujo de trabajo establecido en ese editor.
La clave es entender que VS Code y MetaEditor se complementan, no se excluyen. Lo ideal es escribir y organizar el código en VS Code, y usar MetaEditor únicamente para compilar, depurar y acceder a la documentación de la API.
Para proyectos simples de un solo archivo, MetaEditor sigue siendo la opción más directa. Pero si desarrollas sistemas de trading más complejos con múltiples módulos, librerías reutilizables y quieres mantener un historial de versiones limpio, la combinación VS Code + Git + MetaEditor es claramente superior.
¿Quieres aprender más sobre programación en MQL4?
En TecnicasDeTrading.com publicamos guías prácticas sobre automatización de trading, desarrollo de Expert Advisors y análisis técnico avanzado.
Ver más artículos → Manual de MT4












