EA de scalping en MetaTrader 5: lógica, riesgo y un ejemplo simple
Un EA de scalping en MetaTrader 5 es un Asesor Experto que busca muchos beneficios pequeños en timeframes cortos (normalmente M1 o M5), manteniendo posiciones durante minutos en lugar de horas. Como los objetivos son pequeños, el spread, el deslizamiento y la ejecución a nivel de tick importan mucho — por eso tu EA debe filtrar por spread, usar reglas de riesgo estrictas y ser probado con Cada tick en el Probador de Estrategias. Esta guía explica cómo funcionan los EAs de scalping, cómo configurar entrada/salida y riesgo, y ofrece un ejemplo simple de cruce de medias móviles en M1 en MQL5 con referencias a la documentación oficial.
¿Cuáles son los mejores ajustes MT5 para un EA de scalping?
En la mayoría de EAs de scalping: usa M1 o M5, activa un filtro de spread, mantén una sola posición y haz backtest en Cada tick antes de Demo o Live.
Antes de ejecutar un EA de scalping, verifica:
- Umbral de spread realista para tu símbolo y bróker
- Modo de ticks en Cada tick (o ticks reales)
- Stop loss / tamaño de posición con riesgo estricto
- Backtest en Probador y luego validación en Demo antes de Live
Guías relacionadas: EA scalping sin código (Strategy Builder) · Crear y editar EA en MT5 · Error 10016 · Backtest en Probador · EA sin código · EA cruce MA sin código
¿Qué es un EA de scalping?
El scalping es un estilo de trading que intenta capturar pequeños movimientos de precio muchas veces al día. Un Asesor Experto de scalping automatiza esto: abre y cierra posiciones con rapidez, a menudo en M1 o M5. En MQL5, el evento principal para reaccionar a nuevos precios es OnTick(): "The function is called in EAs when the NewTick event occurs to handle a new quote." Por tanto, los EAs de scalping suelen poner su lógica en OnTick(), comprobando condiciones en cada tick o en cada nueva vela (por ejemplo con una comprobación de "nueva vela" para evitar múltiples entradas por vela).
¿Nuevo en EAs? Empieza con Cómo crear y editar un Asesor Experto en MT5.
Checklist móvil y escritorio antes de cuenta real
El scalping falla en silencio si el spread, el modo de ticks o los stops del bróker están mal. Usa esta lista en móvil (supervisión) y escritorio (configuración y backtest).
| Paso | Móvil (app MT5) | Escritorio |
|---|---|---|
| 1 | AutoTrading activo; icono EA verde | Mismo + .ex5 correcto en el gráfico |
| 2 | Símbolo con sufijo correcto del bróker | Market Watch; anota SYMBOL_TRADE_STOPS_LEVEL |
| 3 | Diario sin 10016 repetido | Guía error 10016 |
| 4 | Spread normal para la sesión | Filtro de spread en código |
| 5 | Demo antes de real | Probador: Cada tick |
| 6 | Cuenta fondeada | Reglas prop firm |
Sin código: Strategy Builder → exportar MQL5 → backtest → Demo.
Características: timeframes y spread
| Aspecto | Elección típica para scalping | Por qué |
|---|---|---|
| Timeframe | M1, M5 | Más velas y señales; decisiones basadas en la acción de precio a corto plazo. |
| Spread | Bajo, filtrado en código | El spread se come los objetivos pequeños; usa SymbolInfoInteger(Symbol(), SYMBOL_SPREAD) o SymbolInfoTick para obtener bid/ask actual y no operar cuando el spread sea demasiado alto. |
| Símbolos | Forex mayor (ej. EURUSD), a veces índices | Mejor liquidez y spread más bajo en sesiones principales. |
MQL5 recomienda usar SymbolInfoTick() cuando necesitas los últimos precios en una sola llamada. Para scalping, eso significa bid/ask actualizados para entradas y comprobaciones de spread.
Entrada, salida y riesgo
- Entrada: A menudo basada en señales rápidas: cruces, rupturas o momentum a corto plazo. Muchos EAs de scalping permiten solo una posición a la vez y esperan la siguiente vela o una salida clara antes de volver a entrar.
- Salida: Objetivo fijo (take profit) y stop loss en pips/puntos; a veces salida por tiempo (cerrar tras N velas o N segundos).
- Riesgo: Usa tamaños de lote pequeños y stop loss estricto. Aplica los principios de gestión de riesgo en EA: limita el riesgo por operación y la exposición total. Al operar con frecuencia, pequeños márgenes pueden anularse por spread y deslizamiento si no se controlan.
Probador: usar cada tick
Al hacer backtest de un EA de scalping, el modo de generación de ticks es crítico. Según MetaTrader 5: "Every tick" se usa para asegurar la mejor precisión de prueba. Las condiciones simuladas son las más realistas en este modo. Para scalping, Cada tick (o Cada tick basado en ticks reales cuando esté disponible) es la opción adecuada; 1 minuto OHLC o Solo precios de apertura pueden dar precios de ejecución y curvas de equity engañosos. Para una guía completa, consulta Backtest de tu EA en el Probador.
Ejemplo: EA simple cruce MA M1
A continuación un EA mínimo tipo scalping en MQL5: usa M1, cruce de medias rápidas/lentas para señales, filtro de spread y una sola posición a la vez. La lógica se ejecuta en nueva vela para evitar múltiples entradas por vela.
//+------------------------------------------------------------------+
//| EA simple cruce MA M1 tipo scalping (ejemplo educativo) |
//+------------------------------------------------------------------+
#property copyright "Ejemplo"
#property version "1.00"
#property strict
input int FastMA = 8;
input int SlowMA = 21;
input int MaxSpreadPoints = 20; // spread máximo en puntos para permitir entrada
input double LotSize = 0.1;
input int Slippage = 10;
input ulong Magic = 12345;
int g_fastHandle, g_slowHandle;
int OnInit() {
g_fastHandle = iMA(_Symbol, PERIOD_M1, FastMA, 0, MODE_EMA, PRICE_CLOSE);
g_slowHandle = iMA(_Symbol, PERIOD_M1, SlowMA, 0, MODE_EMA, PRICE_CLOSE);
if (g_fastHandle == INVALID_HANDLE || g_slowHandle == INVALID_HANDLE) {
Print("Error al crear handles de MA");
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
if (g_fastHandle != INVALID_HANDLE) IndicatorRelease(g_fastHandle);
if (g_slowHandle != INVALID_HANDLE) IndicatorRelease(g_slowHandle);
}
bool isNewBar() {
static datetime lastBar = 0;
datetime curBar = iTime(_Symbol, PERIOD_M1, 0);
if (curBar != lastBar) { lastBar = curBar; return true; }
return false;
}
void OnTick() {
if (!isNewBar()) return;
// Filtro de spread (oficial: SymbolInfoInteger con SYMBOL_SPREAD)
long spreadPoints = SymbolInfoInteger(_Symbol, SYMBOL_SPREAD);
if (spreadPoints > MaxSpreadPoints) return;
if (PositionsTotal() > 0) return; // una posición a la vez
double fast[2], slow[2];
if (CopyBuffer(g_fastHandle, 0, 1, 2, fast) != 2) return;
if (CopyBuffer(g_slowHandle, 0, 1, 2, slow) != 2) return;
bool crossUp = (fast[0] > slow[0] && fast[1] <= slow[1]);
bool crossDown = (fast[0] < slow[0] && fast[1] >= slow[1]);
MqlTradeRequest req = {};
MqlTradeResult res = {};
req.symbol = _Symbol;
req.volume = LotSize;
req.deviation = Slippage;
req.magic = Magic;
req.action = TRADE_ACTION_DEAL;
if (crossUp) {
req.type = ORDER_TYPE_BUY;
req.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
OrderSend(req, res);
} else if (crossDown) {
req.type = ORDER_TYPE_SELL;
req.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
OrderSend(req, res);
}
}
Notas: Es un ejemplo simplificado. En producción añadirías take profit, stop loss y posiblemente filtros multi-timeframe o de sesión. El spread se lee con SymbolInfoInteger(_Symbol, SYMBOL_SPREAD) según la documentación MQL5.
Consejos prácticos
- Broker y símbolo: Elige un broker con spread bajo y estable en los pares que scalpées. Prueba en el Probador de Estrategias con Cada tick.
- Sesiones: El scalping suele rendir mejor en sesiones de alta liquidez (ej. Londres, Nueva York). Puedes añadir filtros de tiempo o sesión a tu EA.
- VPS: Para ejecución 24/7 sin cortes, considera ejecutar el EA en un VPS cerca del servidor del broker.
- Oro (XAUUSD): Si scalpéas oro, ten en cuenta mayor volatilidad y spread; consulta EA para oro (XAUUSD) para consideraciones por símbolo.
Próximos pasos
- EA scalping sin código — receta M5 + filtros spread/sesión en Strategy Builder.
- Crear y editar EA en MT5.
- EA sin código (visión general) — Strategy Builder.
- Backtest en Cada tick.
- Error 10016.
- Desplegar y mantener.
Referencias: MQL5 OnTick, SymbolInfoInteger, SymbolInfoTick, Probador de Estrategias MetaTrader 5.