Construimos un Expert Advisor de MetaTrader 5 que decide compra o venta lanzando una moneda. Después le cambiamos únicamente la gestión de la posición a lo largo de 7 versiones: sin nada, SL/TP fijos, trailing stops, piramidación. Esto es lo que pasó en 50 backtests sobre BTCUSD — 25 comparativos entre versiones y 25 del examen de sweet spot del ganador — con los 14 bugs que nos encontramos en el camino documentados para que no los repitas.
src/AgenteExperto_Aleatorio_v1.mq5Abre compra o venta al azar. Sin stop loss, sin take profit, sin nada.
Es la linea base: un robot sin gestion de riesgo es una moneda al aire con comisiones en contra.
src/AgenteExperto_Aleatorio_v2_SLTP.mq5Misma entrada aleatoria + Stop Loss del 1% del saldo y Take Profit del 2% del saldo (riesgo:beneficio 1:2).
Con RB 1:2 solo gana ~34% de las veces y el neto oscila alrededor de cero: la gestion fija controla el dano pero no crea ventaja.
src/AgenteExperto_Aleatorio_v3_ATRTrailing.mq5El SL persigue al precio a distancia ATR(14) x 2. La salida se vuelve dinamica.
En M15 el trailing corto multiplica los trades (~2.400 en 6 meses) y el spread se come la cuenta: morir por mil cortes.
src/AgenteExperto_Aleatorio_v4_UnaPosicion.mq5Siempre hay UNA posicion abierta (SL 1% del precio, sin TP); al saltar el SL reabre con direccion aleatoria.
Version de laboratorio para estudiar observabilidad y despliegue; corrio en demo y se apago para dar paso a v5-v7.
src/AgenteExperto_Aleatorio_v5_TrailingVariantes.mq5Un input elige el trailing: ATR, % fijo, minimo/maximo de N velas (Donchian) o escalonado (breakeven + tramos).
Tres variantes pierden; solo el trailing ESCALONADO sobrevive (+142/+179 USD): asegurar por tramos deja correr sin regalar todo al ruido.
src/AgenteExperto_Aleatorio_v6_Piramidacion.mq5Posicion base aleatoria y suma otra igual cada vez que el precio avanza 0.5% a favor (hasta 3 niveles).
Pocos trades (12-27), profit factor alto (2.8-7.1): los ciclos perdedores mueren rapido y los ganadores se apilan.
src/AgenteExperto_Aleatorio_v7_PiramidacionNiveles.mq5Niveles, paso, escalado de lote y trailing comun configurables para barrer configuraciones en el tester.
8 niveles + paso 0.5% + trailing comun gano (+1.446 a +1.865 USD en 3 semillas). El MISMO robot con paso 1.0% QUEBRO la cuenta: en piramidacion, el paso es vida o muerte.
| Corrida | Ver. | Neto USD ▼ | PF | DD máx % | Trades | Sharpe | Parámetros |
|---|---|---|---|---|---|---|---|
| v7_n8_p05_f10_comun | v7 | 1.864,55 | 3,85 | 21,71 | 171 | 1,41 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=8 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=11111 |
| v7_n8_p05_f10_comun_s2 | v7 | 1.805,95 | 3,46 | 16,98 | 176 | 1,34 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=8 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=22222 |
| v7_n8_p05_f10_comun_s3 | v7 | 1.446,2 | 2,65 | 42,51 | 189 | 0,95 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=8 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=33333 |
| v7_n5_p05_f07_comun | v7 | 1.196,35 | 5,07 | 21,67 | 64 | 1,2 | LoteBase=0.01 FactorLote=0.7 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=5 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=11111 |
| v7_n5_p05_f10_comun | v7 | 1.196,35 | 5,07 | 21,67 | 64 | 1,2 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=5 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=11111 |
| v7_n5_p05_f10_solo | v7 | 767,45 | 4,02 | 25,38 | 32 | 0,71 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=5 TrailingComun=false NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=11111 |
| v7_n3_p05_f10_comun | v7 | 549,68 | 5,76 | 10,79 | 24 | 0,82 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=3 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=11111 |
| v6_s11111 | v6 | 538,2 | 7,06 | 8,88 | 12 | 0,24 | LoteFijo=0.01 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=3 NumeroMagico=2026070806 EsperaReintento=5 SemillaAleatoria=11111 |
| v6_s33333 | v6 | 462,85 | 3,38 | 19,48 | 24 | 0,67 | LoteFijo=0.01 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=3 NumeroMagico=2026070806 EsperaReintento=5 SemillaAleatoria=33333 |
| v6_s22222 | v6 | 379,96 | 2,78 | 21,38 | 27 | 0,57 | LoteFijo=0.01 SLPorc=1.0 PasoPorc=0.5 MaxNiveles=3 NumeroMagico=2026070806 EsperaReintento=5 SemillaAleatoria=22222 |
| v5_esc_s22222 | v5 | 179 | 1,07 | 22,7 | 936 | 0,93 | ModoTrailing=3 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=22222 |
| v5_esc_s11111 | v5 | 141,83 | 1,05 | 11,2 | 1.050 | 0,65 | ModoTrailing=3 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=11111 |
| v2_s11111 | v2 | 40,34 | 1,02 | 17,14 | 254 | 0,2 | LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=2.0 NumeroMagico=2026070802 EsperaReintento=5 SemillaAleatoria=11111 |
| v2_s33333 | v2 | 33,74 | 1,02 | 18,82 | 279 | 0,16 | LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=2.0 NumeroMagico=2026070802 EsperaReintento=5 SemillaAleatoria=33333 |
| v2_s22222 | v2 | -109,18 | 0,95 | 29,32 | 325 | -0,53 | LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=2.0 NumeroMagico=2026070802 EsperaReintento=5 SemillaAleatoria=22222 |
| v5_maxmin_s11111 | v5 | -127,99 | 0,94 | 19,89 | 1.112 | -0,64 | ModoTrailing=2 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=11111 |
| v3_s33333 | v3 | -160,35 | 0,96 | 32,57 | 2.349 | -0,72 | LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=2.0 ATRPeriodo=14 ATRMultiplo=2.0 MejoraMinPuntos=100 NumeroMagico=2026070803 EsperaReintento=5 SemillaAleatoria=33333 |
| v5_pct_s11111 | v5 | -217,97 | 0,93 | 41,84 | 1.183 | -0,97 | ModoTrailing=1 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=11111 |
| v5_maxmin_s22222 | v5 | -226,04 | 0,9 | 29,88 | 1.100 | -1,19 | ModoTrailing=2 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=22222 |
| v5_atr_s22222 | v5 | -232,5 | 0,94 | 43,06 | 2.253 | -0,94 | ModoTrailing=0 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=22222 |
| v5_atr_s11111 | v5 | -329,94 | 0,92 | 39,69 | 2.294 | -1,39 | ModoTrailing=0 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=11111 |
| v3_s11111 | v3 | -390,4 | 0,91 | 43,16 | 2.462 | -1,69 | LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=2.0 ATRPeriodo=14 ATRMultiplo=2.0 MejoraMinPuntos=100 NumeroMagico=2026070803 EsperaReintento=5 SemillaAleatoria=11111 |
| v3_s22222 | v3 | -482,67 | 0,9 | 63,21 | 2.566 | -1,87 | LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=2.0 ATRPeriodo=14 ATRMultiplo=2.0 MejoraMinPuntos=100 NumeroMagico=2026070803 EsperaReintento=5 SemillaAleatoria=22222 |
| v5_pct_s22222 | v5 | -716,96 | 0,8 | 76,64 | 1.410 | -2,79 | ModoTrailing=1 LoteFijo=0.01 RiesgoSL_Pct=1.0 RiesgoTP_Pct=0.0 ATRPeriodo=14 ATRMultiplo=2.0 TrailPorc=1.0 MaxMinVelas=20 BreakevenPorc=0.5 EscalonPorc=0.5 MejoraMinPuntos=100 NumeroMagico=2026070805 EsperaReintento=5 SemillaAleatoria=22222 |
| v7_n5_p10_f10_comun | v7 | -1.002,93 | 0,55 | 100,27 | 509 | -5 | LoteBase=0.01 FactorLote=1.0 SLPorc=1.0 PasoPorc=1.0 MaxNiveles=5 TrailingComun=true NumeroMagico=2026070807 EsperaReintento=5 SemillaAleatoria=11111 |
Toda la logica colgada de OnTick; sin ticks el robot no respira. Solucion: EventSetTimer(5) y correr la logica tambien en OnTimer.
MT5 buffea el log de expertos 8+ minutos: el silencio no es diagnostico. Solucion: el EA escribe un archivo de estado en MQL5\Files cada ciclo.
Sin throttle, cada tick reintenta la orden rechazada. Solucion: guardar la hora del ultimo intento y esperar N segundos.
Dos versiones con el mismo magic se roban las posiciones en una cuenta hedging. Solucion: magic unico por version (fecha AAAAMMDD + numero).
trade.Buy() devuelve true si la orden se ENVIO, no si se ejecuto. Solucion: verificar ademas ResultRetcode()==TRADE_RETCODE_DONE.
Los caracteres acentuados se corrompen entre encodings del editor. Regla: comentarios en espanol sin acentos.
MathSrand(GetTickCount()) hace cada corrida distinta. Solucion: input SemillaAleatoria (0=reloj en vivo; fija en el tester) y comparar VARIAS semillas.
El trailing movia el SL por mejoras de centavos en cada tick. Solucion: paso minimo de mejora (input MejoraMinPuntos).
La condicion nuevoSL < slActual con slActual=0 nunca es cierta: el trailing jamas arrancaba. Solucion: tratar slActual==0 explicitamente y simetrico.
El grafico que crea [StartUp] Expert= es temporal: no queda en el perfil del terminal. Un reinicio 'apaga' el robot en silencio.
El boton global AlgoTrading apagado bloquea ordenes externas. Verificar terminal_info().trade_allowed antes de diagnosticar otra cosa.
Para garantizar que un EA no cargue: mover su .ex5 a una carpeta _apagados. Ni el perfil ni un INI pueden revivirlo.
Con lote base 0.01 (el minimo), el escalado decreciente pide 0.007 y la normalizacion lo devuelve a 0.01: la piramide decreciente resulta identica a la plana.
Con ShutdownTerminal=1 la simulacion termina pero el terminal queda vivo sin escribir el reporte (flaky, 1 de 25). Mitigacion: timeout + reintento.
| Depósito \ TF | M5 | M15 | M30 | H1 | H4 |
|---|---|---|---|---|---|
| 100 USD | 1.864,55% PF 3,85 · DD 91,26% | 1.864,55% PF 3,85 · DD 91,26% | 1.864,55% PF 3,85 · DD 91,26% | 1.864,55% PF 3,85 · DD 91,26% | 1.864,55% PF 3,85 · DD 91,26% |
| 500 USD | 372,91% PF 3,85 · DD 37,65% | 372,91% PF 3,85 · DD 37,65% | 372,91% PF 3,85 · DD 37,65% | 372,91% PF 3,85 · DD 37,65% | 372,91% PF 3,85 · DD 37,65% |
| 1.000 USD | 186,45% PF 3,85 · DD 21,71% | 186,45% PF 3,85 · DD 21,71% | 186,45% PF 3,85 · DD 21,71% | 186,45% PF 3,85 · DD 21,71% | 186,45% PF 3,85 · DD 21,71% |
| 5.000 USD | 37,29% PF 3,85 · DD 4,95% | 37,29% PF 3,85 · DD 4,95% | 37,29% PF 3,85 · DD 4,95% | 37,29% PF 3,85 · DD 4,95% | 37,29% PF 3,85 · DD 4,95% |
| 10.000 USD | 18,65% PF 3,85 · DD 2,52% | 18,65% PF 3,85 · DD 2,52% | 18,65% PF 3,85 · DD 2,52% | 18,65% PF 3,85 · DD 2,52% | 18,65% PF 3,85 · DD 2,52% |
Conclusión: La temporalidad NO afecta al modelo (no usa indicadores de vela: identica secuencia de trades de M5 a H4). El tamano de cuenta solo escala el riesgo porque el lote es fijo: +1.865 USD absolutos en todos los depositos. Con 100 USD es ruleta (DD 91%); con 500 USD el DD es 38%; con 1.000 USD rinde +186% con DD 22%; con 5.000+ el retorno se diluye (37% o menos) pero el DD baja de 5%. Sweet spot practico en Exness (1:200): cuenta de 1.000 a 2.000 USD, cualquier temporalidad (M15 por comodidad), escalando el lote 0.01 por cada 1.000 USD de deposito si se quiere sostener el retorno porcentual.
SemillaAleatoria).datos/resultados.json, que alimenta esta página.Una carpeta lista para soltar dentro de TU proyecto: batería de bugs, plantilla MQL5
validada, aprendizajes del entorno, metodología de backtests, los 7 EAs, los datos en JSON y los
50 reportes completos del Strategy Tester con sus curvas (los adjuntos). Incluye un
CLAUDE.md para que tu asistente de IA (Claude Code, Cursor...) la use como contexto
automáticamente, y un INSTRUCTIVO.md paso a paso.
Descargar base_conocimiento_agente_experto.zip
Cómo usarla (resumen del instructivo):
base_conocimiento/ dentro de la carpeta de tu proyecto.CLAUDE.md, copia el del paquete a la raíz de tu proyecto;
si ya tienes, añádele la línea "Antes de escribir o depurar un EA, lee base_conocimiento/CLAUDE.md
y docs/BUGS.md".INSTRUCTIVO.md (aprendizajes → bugs → plantilla → src).Todo el material también está navegable en GitHub: entra a una carpeta, abre cualquier archivo para leerlo en el navegador y descárgalo individualmente con el botón Download raw file (⬇) de la esquina superior derecha del archivo.
Explorar el repositorio en GitHub
Accesos directos:
Para reproducirlo necesitas MetaTrader 5 (cualquier broker con BTCUSD), compilar los .mq5 con MetaEditor y usar el Strategy Tester (los parámetros exactos de cada corrida están en la tabla de resultados).
Este caso se construyó en vivo en la Sesión 9 de Instituto Quant.
Si quieres construir tus propios sistemas con esta metodología: www.InstitutoQuant.com