Trading algoritmico – automatizacion, backtesting y trampas

El primer EA que escribi en mi vida estuvo tres semanas operando en vivo. Despues vacio el 40% de la cuenta en 11 operaciones. Hasta ese momento me sentia un genio. Un EA no imprime dinero. Un EA imprime tus errores – solo que mas rapido y sin piedad. Si tu sistema no tiene edge (art. 8.2), el bot lo ejecutara con consistencia total, sin un instante de duda, hasta dejar la cuenta a cero. En sus declaraciones de intervencion sobre CFDs de 2018, ESMA reporto que en el periodo y la muestra de proveedores de CFDs analizados, entre el 74 y el 89% de las cuentas retail perdieron dinero[1]. Un bot no cambia esa aritmetica. Solo traslada tus errores de tu mano al codigo, y puede ejecutarlos mas rapido, con mas frecuencia y sin titubear.

Trading algoritmico en Forex – un monitor con codigo de estrategia, una curva de equity de backtest y logs de ejecucion de ordenes
5 ideas que te llevaras de este articulo
  • Un bot no rompe las reglas. El problema es que si las reglas son malas, las seguira hasta dejar la cuenta a cero. El trading algoritmico es programar, testear y mantener un sistema en el tiempo. Si no entiendes la logica de tu EA, no eres un trader algo – eres un cliente que compro una caja negra.
  • Un backtest no te dice cuanto vas a ganar. Te dice que ideas descartar antes de que el mercado te cobre la leccion. Un sistema con 300% de ROI en backtest que asume un spread fijo de 0.5 pip y cero slippage pierde dinero en vivo. Spread, slippage, comision, latencia y Last Look son variables, no constantes.
  • Tu EA muere no porque el mercado se haya vuelto magicamente mas dificil – muere porque lo ajustaste al ruido del historico. Cada nuevo periodo OOS demuestra brutalmente que el sistema aprendio el historico, no el mercado. Los grados de libertad (numero de parametros libres) son el enemigo numero uno del trader algo.
  • Un ranking de EAs es un cementerio en el que de momento solo ves las lapidas que aun siguen en pie. Una gran parte de los EAs retail venden una curva de equity suavizada comprada con cola de riesgo oculta – martingala, grid, sin SL duro, averaging agresivo. Los EAs que perdieron el 80% de la cuenta desaparecen del ranking, asi que el comprador solo ve los que aun no han explotado.
  • Tu EA no opera en Forex. Opera en el feed de tu broker, en su modelo de routing, en su quote sheet. Modelo A-Book/B-Book, stack de LP, MetaTrader Bridge (PrimeXM/oneZero), Last Look del lado del LP – son variables del sistema, no decorado de fondo. Tu trabajo: medir (slippage, rejects, tiempo de ejecucion) y comparar entre venues, no asumir manipulacion.

1. Que es el trading algoritmico

Un bot no te convertira en un trader rentable. Si tu sistema no tiene edge, el algoritmo limpiara el deposito mas rapido de lo que tardes en averiguar que condicion del codigo estaba mal. Quita las emociones del proceso y deja la estadistica pura: costo por operacion x numero de operaciones = distancia hasta el margin call y el stop-out. El espectro es amplio:

  • EA simple (Expert Advisor) – un script en MT4/MT5 que ejecuta una regla del tipo "compra cuando MA(20) cruza por encima de MA(50), SL 30 pips, TP 60 pips." Esto no es una estrategia. Es un if/then con una cuenta detras.
  • Sistema sistematico – reglas definidas de entrada, salida, sizing y filtros de regimen – pero la ejecucion es manual o semiautomatica.
  • Automatizacion completa – el sistema opera solo 24/5. Requiere infraestructura (VPS, monitoreo) pero elimina las emociones de la ejecucion.
  • HFT (High-Frequency Trading) – miles de operaciones al dia, co-locacion directa junto al matching engine de la bolsa, latencia en microsegundos, no milisegundos. En HFT incluso las diferencias de longitud de cable y ruta de la senal, medidas en microsegundos, importan. Un VPS en Amsterdam intentando operar contra un matching engine en New Jersey juega en una liga de latencia completamente distinta – decenas de milisegundos en lugar de microsegundos. Inalcanzable para el trader retail: requiere millones de USD de infraestructura, presencia fisica en el data center de la bolsa y un stack de red a medida[6].

Lo que NO es trading algoritmico: descargar un EA de un foro, ponerlo en una cuenta demo y esperar el millon. Si no entiendes simultaneamente la logica de la estrategia y como se comporta el codigo en ejecucion, dependes de otra persona. Eso solo basta para perder el control del riesgo.

Espectro del trading algoritmico – desde un EA simple en MT4 pasando por un sistema sistematico hasta la automatizacion completa y el HFT, con los requisitos de capital y tecnicos destacados
Espectro del trading algoritmico – desde un EA simple en MT4 pasando por un sistema sistematico hasta la automatizacion completa y el HFT, con los requisitos de capital y tecnicos destacados

Compraste un EA de cien dolares en MQL5 Market con una curva de equity perfectamente suave? Felicidades. Acabas de patrocinar a alguien que escondio una martingala asimetrica en el codigo y reza por que el mercado no agarre una tendencia fuerte hasta el fin de semana. Las primeras semanas en demo se ven bien; en vivo – racha de perdidas, el EA abre 12 posiciones en pares correlacionados, la cuenta pierde 60%. El comprador no sabia que el EA doblaba posiciones tras una perdida – porque no podia leer el codigo. Mas sobre como verificar un EA: seccion 9.

2. Herramientas – MQL, Python, cTrader, API

La eleccion de la herramienta depende de que quieres hacer, cuanto sabes programar y con que broker operas.

HerramientaLenguajeBacktestingTrading en vivoMayor riesgo de implementacion
MQL4/MQL5tipo CIntegrado (Strategy Tester)Directo en MT4/MT5Confusion de SYMBOL_TRADE_TICK_VALUE (tick != pip), trampas del pricing 3/5 digitos, mal manejo de magic numbers y ordenes pendientes
PythonPythonBacktrader, Zipline, vectorbtMediante API de broker (OANDA, IB, cTrader)Look-ahead bias al vectorizar, ventanas de lookback que usan datos futuros, ausencia de modelado de spread/comision en plantillas por defecto
cTrader AutomateC#IntegradoDirecto en cTraderEcosistema de ejemplos mas pequeno = es facil copiar un patron defectuoso; diferencias sutiles del modelo de ejecucion frente a MT5
Pine ScriptPine ScriptIntegrado (TradingView)Limitado (alertas hacia webhook)Indicadores que repintan (los valores historicos cambian), diferencia entre barstate.isconfirmed y tick a tick, sin ejecucion real para validar costos

Si operas con un broker solo MT4 y eres un trader retail, MQL4 es una eleccion forzada, no libre – el broker dicta la plataforma. MQL5 tiene mejor backtester y arquitectura. Python te da herramientas estadisticas (walk-forward, Monte Carlo) que son dolorosas de obtener en MQL. Muchos traders algo usan ambos: Python para investigacion y validacion, MQL para ejecucion. MQL4 y MQL5 son lenguajes distintos – un EA de MT4 no corre en MT5 sin reescribirlo. La eleccion del broker determina las herramientas disponibles: antes de escribir la primera linea, asegurate de que tu broker ofrece la API que necesitas (MQL/MT4-MT5, FIX, REST), una politica clara sobre EAs y scalpers, y un tipo de cuenta (ECN/raw vs estandar) que encaje con tu estilo de estrategia – porque el tipo de cuenta afecta al modelo de ejecucion y a la disponibilidad de la API.

Realidad practica para el trader retail en 2026: la inmensa mayoria de los brokers regulados por KNF / CySEC / BaFin / FCA solo ofrecen la plataforma MT4 o MT5. Si quieres construir en Python – revisa primero si tu broker ofrece una API REST/FIX o una integracion nativa con cTrader. Sin API, te ves practicamente forzado a MQL o a un workaround con DLL, lo cual va formalmente contra los terminos de la mayoria de los brokers y puede acabar en cierre de cuenta. Antes de decidir el stack tecnologico (MQL vs Python vs cTrader Automate), comprueba la disponibilidad de API en los Terminos y Condiciones, no en el material de marketing – la diferencia entre "Python compatible" en un folleto y una API FIX real puede borrar todo el plan de implementacion.

Cadena de ejecucion de orden desde un EA – desde el codigo en VPS hasta un banco Tier 1 y de vuelta
Ruta de la orden: EA -> banco Tier 1, latencia acumulada EA / VPS MQL5/Python VPS en LD4/NY4 +pocos ms SERVIDOR BROKER routing, VDP? internalizacion? +pocos ms BRIDGE PrimeXM / oneZero Integral / cTrader GW +pocos a decenas de ms AGREGADOR LP Last Look (5 – 50 ms) accept / reject +/- LP hold BANCO TIER 1 Citi / JPM / DB / UBS LP central Vuelta: fill (precio, signo de slippage, timestamp) o reject fill / reject + timestamp Trader retail: ordenes de magnitud demasiado lento frente a un cross-connect FIX directo Los numeros exactos dependen fuertemente del broker, bridge y ubicacion del VPS – variable empirica a medir en el log de ejecucion, no constante de hoja de calculo.

3. Backtesting – la base y la mayor trampa

El backtesting es una simulacion del sistema sobre datos historicos. Es la base del trading algo – sin el no sabes si tu idea tiene alguna probabilidad de funcionar. Pero un backtest no te dice cuanto vas a ganar. Te dice que ideas descartar antes de que el mercado te cobre la leccion. La mayoria de los traders retail lo usan al reves: para buscar confirmacion de que su idea funciona.

Lo que un backtest debe modelar

  • Spread variable, no fijo – un spread fijo de 0.5 pip en EUR/USD es ficcion. El spread real cambia hora a hora y se amplia durante publicaciones de datos. Un backtest con el spread por defecto de MT4 infla los resultados.
  • Slippage – en el mercado en vivo, los fills suelen ser peores que el precio de orden. Un backtest sin modelar slippage (aunque sea 0.5 – 1 pip por operacion) sobrevalora la expectativa.
  • Comision – en cuenta ECN: 3 – 7 USD por lote round-turn. En cuenta con markup – ya esta dentro del spread. Un backtest debe incluir esto.
  • Datos de tick vs OHLC – un backtest sobre datos OHLC ignora el movimiento intra-barra. El Strategy Tester de MT5 ofrece un modo "Every tick based on real ticks" – usalo[8]. Pero ojo: "real ticks" es una mejor simulacion, no una ejecucion real. No reproduce colas, disponibilidad de liquidez ni calidad del fill.

Lo que un backtest no reproducira, ni siquiera con buenos ticks

  • Rejects y fills parciales – en el mercado en vivo el LP puede rechazar tu orden (Last Look) o llenarla parcialmente. Un backtest asume un 100% de fill rate al precio de la orden.
  • Feed vs precio ejecutable – el precio visible en el grafico no es necesariamente el precio al que conseguiras un fill. Durante noticias ves un tick que en realidad no se podia comprar.
  • Slippage asimetrico – los stops slippean peor que los limits. Un backtest no modela esto a menos que lo programes manualmente.
  • Rollover y spread overnight – entre las 23:00 y las 00:00 hora del servidor, los spreads en cruces (p. ej. GBP/NZD) pueden saltar de 3 a 40 pips. Un EA sin filtro que bloquee el trading en esa hora sera masacrado por falsos stop-outs.
  • Cambio de stack LP del broker – tu broker puede cambiar el proveedor de liquidez en cualquier momento. Los datos historicos no reflejan las condiciones de ejecucion futuras.
  • Sesgo del mid-price – una estrategia testeada sobre el mid-price (media bid/ask) puede verse mejor que sobre bid/ask reales, sobre todo con objetivos ajustados y horizonte corto. Si TP es 5 pips y el spread es 1.2 pip – un backtest sobre mid-price sobrevalora la expectativa en ~0.6 pip por lado.

No sabes que modelo usa tu broker para tu flujo y como afecta a la ejecucion? RTS 28 no es una radiografia magica de tu cuenta – es un informe de top venues/LP y politica de ejecucion que existio formalmente bajo MiFID II en la UE y el Reino Unido. El estatus del reporte cambia: en el Reino Unido la FCA, en PS21/20, retiro la obligacion de publicacion externa de RTS 27 y RTS 28 con efecto el 1 de diciembre de 2021, pero las firmas siguen sujetas a la obligacion de Best Execution bajo COBS 11.2A – deben analizar internamente la calidad de ejecucion. En la UE los informes fueron suspendidos bajo el "MiFID II quick fix". Traduccion practica para el trader retail: formalmente nadie esta obligado a publicar un informe publico, pero puedes pedir al equipo de compliance del broker datos de su revision interna de Best Execution – ese analisis existe, aunque no se publique. En cualquier caso, la prueba real de calidad de ejecucion solo viene de tu propio log: precio solicitado, precio de fill, timestamps de envio y ejecucion, spread en el fill, motivo del reject. Compara entre 200 operaciones de una cuenta live (no demo) – ese es tu auditoria del broker, no un folleto de marketing.

Volumen de ticks != volumen de mercado. En FX retail no hay volumen spot centralizado. El volumen de ticks en MT4/MT5 es el numero de cambios de cotizacion en tu broker, no el flujo real del mercado. Construir una estrategia VSA (Volume Spread Analysis) sobre el volumen de ticks de MetaTrader es leer hojas de te. Si necesitas volumen, mira los futuros del CME (6E, 6B, 6J) – ahi hay un order book central con volumen real. Pero incluso ahi: la correlacion futuros-spot no es 1:1.

Nota importante sobre el mercado: un trader retail en MT4/MT5 normalmente no testea ni opera el mercado spot FX central. Testea y opera el feed y las condiciones de un broker CFD/OTC concreto. Datos historicos, spreads, calidad de fill, disponibilidad de liquidez – todo es especifico de tu broker. Un backtest sobre datos del broker A no garantiza resultados en el broker B.

Antes de pasar a los resultados del backtest, verifica los datos de entrada – la checklist detallada de calidad de datos en la seccion 8 muestra que comprobar: fuente, zona horaria, calidad de tick, gaps y consistencia entre test y live del broker.

Data snooping: datos de broker != verdad. Los datos historicos descargados desde el MT4/MT5 de un broker estan "contaminados" – contienen spreads que el broker modifico historicamente, gaps en rollovers de CFD y errores de feed "limpiados" a posteriori. Un backtest sobre datos de broker vs tick data de fuente independiente (Dukascopy, TickData) puede diferir un 20 – 40% en expectativa. Verifica: compara el OHLC de tu broker con una fuente independiente en una semana al azar. Si discrepan – sabes que tu backtest esta testeando artefactos del feed, no la estrategia.
Reporte del MT5 Strategy Tester – ajuste Every tick based on real ticks, comision, spread variable, fragmento de reporte con DD, numero de operaciones y parametros del test
Reporte del MT5 Strategy Tester – ajuste Every tick based on real ticks, comision, spread variable, fragmento de reporte con DD, numero de operaciones y parametros del test

Backtest vs live – por que difieren los resultados

ParametroBacktestLive
SpreadFijo o promedio historicoVariable, ampliado durante publicaciones de datos
SlippageGeneralmente 0 (por defecto)0.5 – 15+ pip segun condiciones
FillInstantaneo, al precio de la ordenRetrasado, con Last Look, fills parciales
Latencia0 ms20 – 500 ms (VPS -> broker -> LP)
RequotesNingunoPosibles (especialmente B-Book)
DatosLimpios, sin gapsGaps, spikes, desconexiones del feed
Intervencion del traderNingunaEl trader cambia el SL, anade filtros, apaga el sistema en drawdown

La diferencia entre backtest y live no es marginal. Es estructural – y esa diferencia cobra peaje. Un sistema con +8 pip de expectativa en backtest, despues de contabilizar costos reales (spread variable +2 pip, slippage +1.5 pip, comision +0.7 pip = 4.2 pip de costo adicional por operacion), tiene una expectativa real de +3.8 pip. Para convertir costos en valor monetario, usa la calculadora de valor del pip. Si la latencia anade otros 1 – 2 pip – te quedan +1.8 – 2.8 pip[2].

Del parquet – 300% en backtest, -40% en vivo. Un trader construyo un sistema trend-following en EUR/USD M15. Backtest 2018 – 2023: CAGR 62%, max DD 14%, Sharpe 2.1. Lo encendio en vivo en enero de 2024. Tras 3 meses: -40% de equity. El backtest asumia spread fijo de 0.8 pip y cero slippage. En vivo, el spread medio fue 1.2 – 1.8 pip (3 – 4 pip overnight) y el slippage en stops promedio 1.1 pip. El sistema hacia 8 – 12 operaciones al dia – con un costo extra de 2 – 3 pip por operacion, la expectativa paso de +5.2 pip (backtest) a -0.3 pip (live). La estrategia podia tener sentido. La simulacion de costo y fill era inutil. Y eso basta para girar el resultado neto de positivo a negativo.
Del parquet – SNB, enero de 2015: el stop que no existia. 15 de enero de 2015, 10:30 CET. El SNB anuncio la retirada del peg EUR/CHF. EUR/CHF cayo mas de 2,500 pip en pocos minutos, con cotizaciones en algunas plataformas por debajo de la paridad. Los stop loss no se ejecutaron al precio de la orden – la liquidez se evaporo, las cotizaciones desaparecieron, las plataformas se colgaron. Algunos clientes acabaron con saldo negativo. Varios brokers europeos quebraron (Alpari UK, Excel Markets). Hoy las normas de ESMA/KNF exigen a los brokers de CFD ofrecer proteccion frente a saldo negativo a clientes retail – pero 2015 mostro que pasa sin ella. Y mostro que un "stop loss" no es una garantia – es una orden de mercado ejecutada al primer precio disponible. Un backtest sobre datos 2010 – 2023 no contiene este evento – porque no hay forma de modelarlo. Un kill switch y un limite de perdida maxima en el codigo del EA no son paranoia. Son infraestructura de seguridad.
Comparacion de la curva de equity de backtest (suave, ascendente) vs la curva de equity en vivo (con drawdowns mas profundos y CAGR menor) – el mismo sistema, costos distintos
Comparacion de la curva de equity de backtest (suave, ascendente) vs la curva de equity en vivo (con drawdowns mas profundos y CAGR menor) – el mismo sistema, costos distintos

4. Overfitting – enemigo numero uno

Tu EA muere no porque el mercado se haya vuelto magicamente mas dificil. Muere porque lo ajustaste al ruido del historico – cada nuevo periodo OOS demuestra brutalmente que el sistema aprendio el historico, no el mercado. Cuantos mas parametros optimizas, mejor encaja el sistema con los datos de entrenamiento – y peor le va con los nuevos datos[3].

Como se ve el overfitting en la practica

  1. Tienes una idea: "breakout de la consolidacion de Londres cuando el volumen de ticks en la ventana de 30 minutos previa al breakout supera X veces la media y el rango de la consolidacion es menor que Y veces ATR(14)."
  2. Test inicial: X = 1.5; Y = 0.8 – resultado OK, expectativa +3 pip por operacion en EUR/USD.
  3. Optimizas: escaneas todas las combinaciones X en {1.2; 1.3; ... 2.5} x Y en {0.5; 0.55; ... 1.2} x longitud de ventana (15, 30, 45, 60 min) x hora de inicio de la consolidacion (8:00 – 10:00 cada 15 min). Mejor combinacion: X = 1.73; Y = 0.67; ventana de 45 minutos; inicio 8:30 – expectativa +11 pip.
  4. Anades un filtro de tendencia HTF (precio sobre/bajo EMA200 D1). Optimizas EMA200 entre EMA180/220. Expectativa: +18 pip.
  5. Anades un filtro horario (operar solo en cuatro horas concretas). Expectativa: +24 pip.
  6. Anades un filtro de dia de la semana (descartar viernes y lunes). Expectativa: +31 pip.

Numero de combinaciones probadas. Antes de hacer clic en "mejor resultado", cuenta cuantas variantes comparaste realmente. En el ejemplo: 14 valores de X x 15 valores de Y x 4 ventanas x 9 horas de inicio x 5 variantes de EMA x 24 combinaciones de hora de trading x 25 combinaciones de dia de la semana = ~9 millones de tests. Con un umbral de significancia del 5%, por azar unas 450,000 pareceran "estadisticamente significativas". Tu "mejor" set de parametros es uno de cientos de miles de ganadores aleatorios del ruido, no una senal de mercado.

Overfitting en la practica – la expectativa sube con cada capa de parametros, pero en datos nuevos (OOS) el sistema pierde
0 +10 +20 +30 -5 pip / operacion IN-SAMPLE (mismos datos) OUT-OF-SAMPLE +3 MA(20/50) 2 params +11 MA(17/43) 2 params optimizados +18 + filtro RSI 4 params +24 + horas 5 params +31 + dia de semana 6+ params -4 Datos nuevos OVERFITTING mas parametros -> mejor backtest

En backtest se ve ideal. El problema: 6+ parametros optimizados sobre los mismos datos. El sistema no descubrio un patron – aprendio el historico. Bailey y Lopez de Prado mostraron que con un numero tipico de pruebas de optimizacion (1000+), la probabilidad de encontrar un sistema "rentable" por azar es muy alta – incluso sobre datos aleatorios[4].

Senales de aviso de overfitting

  • El sistema solo funciona en un par, un timeframe y un periodo.
  • Un pequeno cambio de parametro (p. ej. MA de 17 a 19) degrada drasticamente el resultado – "islas" de rentabilidad.
  • Out-of-sample es >50% peor que in-sample.
  • El sistema tiene muchos parametros (regla practica: por encima de 5 – 6 – pero es heuristica, no ley fisica).
  • La curva de equity del backtest es "demasiado suave" – la ausencia de drawdowns es bandera roja.
Heatmap de optimizacion de parametros MA fast/slow – plateau estable (parametros razonables) vs isla aislada de rentabilidad (overfitting): comparacion In-Sample vs Out-of-Sample
Heatmap de optimizacion de parametros MA fast/slow – plateau estable (parametros razonables) vs isla aislada de rentabilidad (overfitting): comparacion In-Sample vs Out-of-Sample
P-hacking en trading. P-hacking es testear muchas hipotesis hasta encontrar un resultado "estadisticamente significativo". En trading el equivalente es probar cientos de combinaciones de parametros y elegir la mejor. Si pruebas 1,000 combinaciones, estadisticamente unas 50 pareceran "significativas" al nivel del 5% – por puro azar. Por eso el walk-forward analysis es obligatorio, no opcional[13].

5. Walk-forward analysis y Monte Carlo

Si el backtest pregunta "funciono el sistema?", el walk-forward analysis (WFA) pregunta "funciono el sistema sobre datos que no vio durante la optimizacion?"[5].

Procedimiento walk-forward

  1. Divide los datos en ventanas – p. ej. 12 meses in-sample (IS), 3 meses out-of-sample (OOS).
  2. Optimiza sobre IS – encuentra los mejores parametros.
  3. Testea sobre OOS – ejecuta el sistema con esos parametros sobre datos que no ha visto.
  4. Desliza la ventana – siguiente IS: meses 4 – 15, OOS: 16 – 18. Repite.
  5. Agrega los resultados OOS – combina todos los periodos OOS. Ese es tu resultado real.

Walk-forward efficiency (WFE) = (beneficio OOS / beneficio IS) x 100%. WFE 70% no garantiza nada. Te da una probabilidad menor de haber comprado una curva ajustada al historico – y eso no es lo mismo que edge. WFE filtra parte de la basura pero no convierte un test historico en garantia de resultados futuros. He visto sistemas con WFE 70% que hicieron -15% en 6 meses live – porque el walk-forward se corrio sobre un instrumento en un regimen de mercado. WFE < 30% – probablemente overfitted. WFE < 0% – el sistema no funciona fuera de los datos de entrenamiento.

WFA anclado vs WFA rolling

Rolling WFA (descrito arriba) desliza la ventana: el IS son siempre los ultimos N meses. Anchored WFA mantiene fijo el punto de inicio y expande la ventana IS en cada paso. Responde a una pregunta distinta: "es el sistema estable cuando ve mas datos?"

Rolling vs anchored WFA en el eje temporal – dos preguntas distintas sobre la estabilidad del sistema
Rolling WFA – la ventana IS se desliza, IS tiene longitud fija m.0 m.30 IS 12 meses OOS 3 IS 12 meses (desplazado) OOS 3 IS 12 meses (mas alla) OOS Cada ventana IS tiene la misma longitud – el sistema aprende los ultimos N meses. Pregunta: "funciona el sistema sobre datos nuevos tras entrenar en la ultima ventana?" Anchored WFA – inicio fijo, IS crece m.0 m.30 IS 9 meses OOS 3 IS 12 meses (extendido) OOS 3 IS 15 meses (mas amplio) OOS 3 Pregunta: "es estable el sistema cuando ve mas historico?" Rolling WFE 60% + anchored WFE 20% = los parametros derivaron con la ventana.

Si el rolling WFA da WFE 60% pero el anchored WFA da WFE 20% – el sistema aprendio el pasado, no se adapto al futuro. Los parametros "derivaron" con la ventana en lugar de estabilizarse. Esta diferencia es critica: un sistema con buen rolling WFE y mal anchored WFE probablemente esta overfitted a regimenes locales. Ambos tests deberian dar resultados similares antes de considerar que el sistema vale la pena desplegar.

Monte Carlo – stress test de la expectativa

Monte Carlo es una simulacion: toma los resultados historicos y reordena aleatoriamente la secuencia de operaciones miles de veces. De 10,000 permutaciones obtienes una distribucion: cual es el peor drawdown en el 95% de los casos? Cual es la expectativa minima?

Ejemplo: un sistema tiene 200 operaciones con 54% de win rate, ganancia media 18 pip, perdida media -12 pip. Expectativa = 0.54 x 18 - 0.46 x 12 = +4.2 pip/operacion. Tras 10,000 permutaciones Monte Carlo: en el 95% de los escenarios, el max DD no supera el 22% de la cuenta y la expectativa no cae por debajo de +1.8 pip/operacion. Si en vivo el DD se acerca al 22% – el sistema esta en zona de peligro pero todavia dentro del rango. Si lo supera – la degradacion es probable.

La matematica de Monte Carlo es sencilla de implementar en Python (libreria numpy, 15 – 20 lineas de codigo) o en Excel (una macro con muestreo aleatorio). Detalles del metodo: art. 8.2 – la matematica del edge de mercado.

Permutacion de operaciones vs bootstrap con reemplazo – dos metodos, dos preguntas distintas. La mayoria de los tutoriales algo simplifican Monte Carlo a "reordena la secuencia de operaciones" – eso es permutacion sin reemplazo. La estadistica: reordenas las 200 operaciones originales en un nuevo orden, cada una aparece una vez, la suma de resultados es identica. La pregunta a la que responde: "que tan mala podria parecer la curva de equity si la racha de perdidas hubiese golpeado en otro momento?". Limitacion: no responde si la muestra de 200 operaciones es representativa del futuro – porque asume que toda la poblacion de resultados futuros son exactamente esas 200.

Bootstrap con reemplazo (sampling with replacement) es un procedimiento mas fuerte: en cada una de las 10,000 iteraciones extraes 200 operaciones con reemplazo del pool original. Algunas operaciones apareceran 3 – 4 veces, otras ninguna. La suma de resultados es distinta en cada iteracion – esto simula la incertidumbre de la muestra, no solo la del orden. La pregunta a la que responde: "cual es la distribucion de expectativa y DD si mi historico fuera solo una de las muchas realizaciones posibles del mismo proceso aleatorio?". Las conclusiones suelen ser mas duras que con una simple permutacion: el percentil 95 del DD es a menudo entre 30 y 60% mas profundo. Para sistemas retail recomiendo bootstrap – da una imagen mas justa del riesgo de cola que el mero reordenamiento.

Bootstrap en Python – snippet minimo:

import numpy as np

# resultados en R desde tu log de ejecucion (p. ej. +1.8R, -1.0R, +2.4R, -1.0R, ...)
trades = np.array([...])
n_sim  = 10_000
results = []

for _ in range(n_sim):
    sample = np.random.choice(trades, size=len(trades), replace=True)
    equity = np.cumsum(sample)
    dd     = np.min(equity - np.maximum.accumulate(equity))
    results.append({'final': equity[-1], 'max_dd': dd})

# percentil 5 del DD = "que tan profundo es el drawdown en el peor 5% de escenarios"
p5_dd  = np.percentile([r['max_dd'] for r in results], 5)
p50_eq = np.percentile([r['final']  for r in results], 50)
print(f"Percentil 5 max DD: {p5_dd:.2f}R | Mediana resultado: {p50_eq:.2f}R")

Es el minimo funcional. En produccion anade: estratificacion por tipo de setup, control de la autocorrelacion en la secuencia de operaciones (block bootstrap), calibracion de n_sim para estabilidad del percentil (5,000 – 20,000 iteraciones suelen bastar).

Walk-forward analysis – esquema de ventanas In-Sample y Out-of-Sample deslizantes con curva de equity OOS agregada
Walk-forward analysis – esquema de ventanas In-Sample y Out-of-Sample deslizantes con curva de equity OOS agregada

Matriz de validacion – cuando descartar, cuando seguir testeando

Despues de backtest, walk-forward (rolling y anchored) y Monte Carlo, normalmente no tienes una respuesta clara "funciona / no funciona". Tienes una combinacion de metricas que clasifica el sistema:

Expectativa ISRolling WFEAnchored WFEMC bootstrap (perc. 95 DD)Veredicto
> 0> 50%> 40%aceptableTest live en micro-lote
> 0> 50%< 30%—Overfitting a regimenes locales – vuelve a reducir parametros
> 030 – 50%——Marginal – testea robustez antes de live
> 0< 30%——Descartalo – overfitting
> 0——DD > 1.5x max DD del backtestRiesgo de cola demasiado grande – reduce sizing o descarta
<= 0———Descartar – el sistema no tiene edge ni en el test

La matriz no es definitiva – es un punto de partida. Pero elimina el 80% de las ideas que el trader, de otro modo, seguiria testeando otros 3 meses "en segundo plano". Ese es el objetivo de la validacion: rechazar mas rapido, no testear mas tiempo.

6. Del backtest al live – paper trading e infraestructura

Despues del backtest y el WFA aun no sabes como se comportara el sistema sobre el feed del broker, con routing real y errores de ejecucion reales. Asi que primero corre forward en demo, despues un micro-lote en live.

Paper trading – test tecnico, no pronostico

El demo es una pista de carreras sin trafico. El sistema conduce. Pero no hay choques, ni atascos, ni una ambulancia saliendo de una calle lateral. Los resultados de demo solo te dicen una cosa: el codigo compila. El feed puede parecerse al live, a veces incluso con spreads variables, pero la mecanica de ejecucion no es la misma: sin riesgo real de LP, sin rejects reales, sin fills parciales ni colas de liquidez, sin un humano o un LP que tenga que tomar el otro lado de tu orden. Trata el demo como un test de si el codigo funciona tecnicamente (abre, cierra, gestiona posiciones). Minimo: 50 – 100 operaciones. Los resultados del demo no predicen los resultados live.

Del parquet – demo vs live, dos mundos. Un sistema hizo +1.8% por semana en demo durante 6 semanas. En live con 0.01 lote: +0.3% la primera semana, -0.8% la segunda. En demo el sistema obtenia fills a 0.3 pip del precio de la senal. En live el primer fill llego 6.8 pip peor, el segundo fue rechazado, el tercero entro con spread ampliado. Tras 40 operaciones quedo claro que la estrategia tenia edge positivo solo cuando la entrada era casi instantanea. En ejecucion real el edge no existia. El codigo funcionaba. La idea no sobrevivio al mercado.

Infraestructura

  • VPS – el sistema debe correr 24/5 sin interrupciones. Un VPS cerca del servidor del broker: latencia 1 – 10 ms en lugar de 50 – 200 ms desde casa. Costo: 15 – 50 USD/mes.
  • Monitoreo – alertas SMS/email/Telegram cuando el sistema cae, el drawdown cruza un umbral o una posicion queda colgada. Sin monitoreo, te enteras de un fallo cuando vuelves del trabajo.
  • Kill switch – cierre automatico de todas las posiciones cuando el DD diario supera un umbral. Fail-safe ante desconexion, maximo de posiciones simultaneas, max DD.

Checklist: que verificar con el broker antes de lanzar un EA en vivo

  • Modo de ejecucion – Instant, Market, Exchange? Afecta a requotes y slippage.
  • Tasa maxima de ordenes – cuantas ordenes por segundo tolera el servidor? Un scalper enviando 5 ordenes/s puede ser throttled.
  • Stop level / freeze level – distancia minima de SL/TP al precio. Si stop level = 10 pip y tu sistema pone SL a 8 – la orden no entra. Varia segun broker y par.
  • Tabla de swaps – compara swaps long/short en los pares que operes. Las diferencias entre brokers pueden ser de 2 – 3x.
  • Proximidad de VPS – ofrece el broker VPS gratis u hosting cerca del servidor?
  • Disponibilidad de API – FIX, REST, WebSocket? Para Python y automatizacion avanzada, MT4/MT5 solo no basta.
Del parquet – NFP y la latencia como costo oculto. Viernes, 14:30 CET. NFP: 275k vs consenso 198k. EUR/USD: movimiento de 80 pip en 400 milisegundos. Un EA en un VPS de Varsovia envio la orden a las 14:30:00.340. El broker la recibio a las 14:30:00.847 – latencia 507 ms. En ese tiempo el mercado se movio 31 pip. Fill: 31 pip peor que el precio de la orden. El sistema asumia un slippage maximo de 3 pip. Una operacion que daba expectativa de +12 pip en backtest costo -19 pip. Un VPS mas cerca del servidor del broker – no por perfeccionismo. Porque la latencia durante datos no son milisegundos – es dinero.
Del parquet – el SL que no funciono. Un EA de grid/trend-following en GBP/USD. El trader dejo posiciones abiertas durante el fin de semana. El bot tenia un SL duro de 20 pip programado. El domingo por la noche el mercado abrio con un gap de 80 pip por noticias politicas en el Reino Unido. El SL (que es una orden de mercado en el servidor) se ejecuto al primer precio disponible. En lugar de arriesgar 2%, el trader perdio 14% en una sola operacion. Un stop loss no te teletransporta fuera del mercado – cuando el book esta vacio, el bot hace clic al vacio, y el fill llega donde por fin alguien quiera operar.
Logs de VPS – alerta de drawdown, reconnect, journal con error de ejecucion (requote / off quotes / failed order), monitoreo de EA
Logs de VPS – alerta de drawdown, reconnect, journal con error de ejecucion (requote / off quotes / failed order), monitoreo de EA

Sizing inicial y checklist forward/live

Primer mes en vivo: lotes minimos. El objetivo no es ganar – es validar. Si tras 30 – 50 operaciones los resultados se desvian significativamente del backtest – vuelve a diagnostico. Checklist de metricas a seguir:

  1. Spread medio por hora/sesion – entrega el broker lo que anuncia a las 3:00 AM?
  2. Slippage por tipo de orden – stop vs limit. Existe asimetria?
  3. Reject rate – cuantas ordenes ha rechazado el broker? En demo: cero. En vivo: a veces algunos por ciento.
  4. Porcentaje de fills peores que X – con que frecuencia el fill fue mas de 2 pip peor que el precio de la orden?
  5. Expectativa: test vs forward vs live – tres numeros. Si live esta por debajo del 50% del backtest – algo va mal con la ejecucion.
  6. Latencia desde el VPS al servidor del broker – haz ping con regularidad. Si crece – el broker puede haber cambiado infraestructura.
  7. Swap medio por operacion y por par – los swaps cambian con el tiempo (dependen de tasas y politica del broker). Monitorea el costo de mantener posiciones: swap medio por operacion, diferencial swap long vs short en el mismo par, cambios mensuales en la tasa de swap. Si el swap sube – el beneficio overnight del sistema se reduce sin cambio alguno en la logica.

Sizing con slippage – pseudocodigo

El articulo dice "modela el slippage" – pero donde lo metes? El ejemplo siguiente es una simplificacion conceptual, no codigo listo para produccion. En la practica, el calculo del lote debe tener en cuenta las particularidades del simbolo, los decimales (3/5-digit pricing), el tick size y la divisa de la cuenta. La logica es simple – los detalles de implementacion no:

// Boceto conceptual – sizing con slippage y comision
double slippage_pips   = 1.5;      // slippage medio empirico [pips]
double commission_pips = 0.7;      // comision convertida a pips
double nominal_SL      = 25.0;     // SL nominal en pips

double adjusted_SL_pips = nominal_SL + slippage_pips + commission_pips;
// adjusted_SL_pips = 25 + 1.5 + 0.7 = 27.2 pips

double risk_amount = AccountInfoDouble(ACCOUNT_EQUITY) * 0.01;  // 1% de la cuenta

// Valor del pip para 1 lote (depende del simbolo y la divisa de la cuenta)
// Verifica manualmente para tu instrumento!
double pip_value_per_lot = /* p. ej. ~10 USD para EUR/USD con cuenta USD */;

double lot_size = risk_amount / (adjusted_SL_pips * pip_value_per_lot);

Sin corregir por slippage y comision: el riesgo por operacion es 1% x (27.2/25.0) = 1.09% de la cuenta en lugar del 1% planeado. Sobre 200 operaciones, esa diferencia se acumula. Nota: SYMBOL_TRADE_TICK_VALUE en MQL5 devuelve el valor de un tick (no un pip) y es traicionero para instrumentos con decimales no estandar o pares denominados en divisas distintas a la divisa de la cuenta. Valida manualmente tu logica de position sizing en codigo, usando nuestra calculadora de valor de lote y pip.

Log minimo de ejecucion del EA – sin estos campos no tienes datos para TCA

El backtest muestra una curva de equity. El live muestra el resultado en la cuenta. Entre ambos esta el log de ejecucion – y es tu unica fuente de verdad sobre como el broker maneja realmente tu sistema. El conjunto minimo de columnas que el EA debe registrar para cada operacion:

CampoQue mide
signal_timeEl momento en que la estrategia genero la senal (antes del envio)
send_timeTimestamp del envio de orden desde el VPS
fill_timeTimestamp de aceptacion de la orden por el servidor del broker (hora del servidor)
symbol + sidePar y direccion (Buy/Sell)
requested_pricePrecio visto por el EA en el momento de la senal
fill_pricePrecio al que la orden fue realmente ejecutada
spread_at_signal / spread_at_fillSpread en ambos momentos – muestra si el LP amplio la cotizacion entre senal y ejecucion
slippage_pips(fill_price - requested_price) con signo; columnas separadas para slippage positivo y negativo
commission + swapCosto duro de la operacion
reject_codeCodigo de reject del broker (off quotes, requote, no money, market closed, etc.)
broker_server_timeZona horaria del servidor del broker – critica para filtros horarios y DST

Tras 50 – 100 operaciones, este log permite calcular: slippage rolling por direccion, asimetria favorable vs desfavorable, fill rate, tiempo medio de ejecucion, correlacion de rejects con horas o eventos especificos. Sin estos campos, tu journal es un diario, no datos para Transaction Cost Analysis.

Fila de log de muestra (valores ilustrativos):

signal_time:        2026-03-12 14:30:00.120
send_time:          2026-03-12 14:30:00.184  (+64 ms)
fill_time:          2026-03-12 14:30:00.412  (+228 ms servidor del broker)
symbol / side:      EURUSD / Buy
requested_price:    1.08420
fill_price:         1.08434
spread_at_signal:   0.6 pip
spread_at_fill:     2.1 pip          (3.5x ampliacion en ventana de publicacion)
slippage_pips:      -1.4 pip          (negativo, contra el cliente)
commission:         3.50 USD          (round-trip 0.1 lote)
swap:               0
reject_code:        none
broker_server_time: GMT+2 (DST aware)

Esta fila muestra que una operacion que en backtest parecia un costo de +0.6 pip en realidad costo 2.1 pip de spread + 1.4 pip de slippage + comision – un total de ~4 pip de friccion en lugar del ~1 pip asumido. Reune 50 filas asi y calcula la mediana del slippage long vs short – esa es tu primera auditoria real del broker.

Cuando no correr el sistema – filtro de sesion

Antes de CPI, NFP, FOMC y decisiones de bancos centrales, el problema no es solo la direccion del movimiento – es el cambio de mercado de continuo a entrecortado. El spread deja de ser un costo y se convierte en variable aleatoria; el Last Look del LP empieza a rechazar selectivamente; un fill parcial ECN llega en tres tramos a precios sucesivamente peores. Un backtest que asume "spread normal + slippage fijo" no modela el mercado en el que estas operando en esa ventana. +/-5 minutos en torno a eventos Tier 1 es el minimo tecnico absoluto; para estrategias sensibles al costo de ejecucion, bloquea toda la ventana de 30 – 60 minutos antes y despues de la publicacion. Un EA sin filtro duro alrededor de datos Tier 1 no es un EA – es una maquina para sobrepagar por caos.

VentanaProblemaQue hacer
5 min antes/despues de NFP, IPC, FOMCSpread x5 – 15, varios pips de slippage, vacio de liquidezDesactiva entradas, bloquea modificaciones de SL
Rollover (23:00 – 00:00 servidor)Spread x3 – 10 en cruces, falsos stop-outsFiltro horario: bloquea trading y modificacion de ordenes
Festivos US/UK (p. ej. 4 de julio, Bank Holiday)Liquidez al 30 – 50% de lo normal, spread elevadoDesactiva el sistema o reduce sizing
Apertura del domingo (primeros 15 – 30 min)Gap, spread varias veces mayorBloquea trading hasta que el spread se normalice
Viernes 20:00 – cierreRiesgo de gap de fin de semana, liquidez en descensoNo abrir nuevas posiciones. Considera cerrar o reducir posiciones si la exposicion abierta es alta respecto al plan de riesgo, el par ha hecho un movimiento anormalmente grande respecto al ATR, o el fin de semana conlleva riesgo geopolitico elevado
Cambio DST (US vs Europa)El servidor del broker (p. ej. GMT+2/3) no cambia sincronicamente con Europa o EE.UU. – los calendarios economicos muestran horas distintas a las del EA, y los filtros horarios bloquean la ventana incorrectaVerifica tras cada cambio DST (marzo, noviembre en EE.UU.; ultimo domingo de marzo y octubre en la UE): comprueba broker_server_time en el log del EA y actualiza los filtros horarios de NFP/CPI/FOMC. Escenario clasico: el filtro bloquea 14:25 – 14:35 para NFP, y tras el DST el broker opera durante 2 semanas en la ventana equivocada antes de que el trader lo note

7. Costos y realidades de operar algo

El trading algoritmico tiene costos de los que poca gente habla – porque no se ven en la curva de equity.

Costos duros

  • VPS – 15 – 50 USD/mes. Evita VPS de 5 USD – conexion inestable, alta latencia.
  • Tick data – Dukascopy (gratis con limites). Profesional: TickData, TrueFX – 100 – 500 USD/ano.
  • Herramientas – Python es gratis. Plataformas profesionales (MultiCharts, TradeStation): 50 – 200 USD/mes.
  • Spread y comision – 10 operaciones/dia x 1.5 pip de costo x 22 dias x 12 meses = 3,960 pip/ano. Sobre 0.10 lotes = ~396 USD/ano de pura friccion. La diferencia de spread entre brokers es 0.3 – 0.8 pip en majors – sobre 2,640 operaciones al ano son 800 – 2,100 pip. Mide el spread efectivo real en tu cuenta: exporta el historial de MT4/MT5, columnas requested/fill, mediana del slippage en entradas y salidas por separado. Sin ese numero, elegir broker es declaracion, no decision.

Costos ocultos

  • Tiempo de desarrollo – 100 horas para construir? Eso es solo configurar el entorno y aprender la sintaxis. La mayor parte del tiempo no se va en escribir codigo sino en validar datos, debug, analizar logs y descartar ideas que no pasan el test live. Realisticamente: 300 – 500 horas en el primer ano para construir, testear e iterar un sistema. Coste de oportunidad de referencia: a una tarifa tecnica/freelance indicativa de 100 – 150 PLN/h, 400 horas = 40,000 – 60,000 PLN. Con una cuenta inicial de 10,000 USD (~40,000 PLN) eso es 1.0 – 1.5x el valor de la cuenta al ano – el tiempo es capital, no inconveniente. Y el resultado neto despues de costos puede acabar siendo peor que un ETF indexado pasivo. Cuenta el tiempo como primer costo, antes que el segundo.
  • Swaps en sistemas overnight – un sistema swing D1 con 5 operaciones a la semana mantiene posiciones 2 – 5 dias. Los swaps en cruces (p. ej. GBP/JPY) pueden comerse, indicativamente, 1 – 3 pip al dia (segun broker y diferencial de tasas). En un sistema con expectativa de +8 pip por operacion y mantenimiento medio de 3 dias – los swaps son 3 – 9 pip extra de costo, que el backtest solo ve si lo corres con datos historicos de swap apropiados. La mayoria de brokers no publican el historico de tasas de swap.
  • Mantenimiento – minimo 5 – 10 horas/mes. Cambios de parametros del broker, actualizaciones, verificacion del edge.
  • Costo de bug de implementacion – un bug en sizing, comision mal calculada, condicion de salida equivocada. Un solo bug logico puede correr durante semanas antes de que lo notes.
  • Costo de cambiar de broker – nuevo spread, nuevo stack LP, nueva latencia. Un sistema optimizado para un broker puede no funcionar en otro.
  • Costo del "capital muerto" – dinero en cuentas de test, con brokers de respaldo, en VPS. Capital inmovilizado que no esta trabajando.
Costos de operar trading algoritmico – VPS, datos, herramientas, spread/comision, tiempo de desarrollo: desglose anual
Costos de operar trading algoritmico – VPS, datos, herramientas, spread/comision, tiempo de desarrollo: desglose anual

8. Cuando el algo deja de funcionar – cambio de regimen

Cada sistema tiene fecha de caducidad. La diferencia entre un aficionado y un trader es si lo notan antes de un drawdown del 30%. Cada EA acaba muriendo – el unico arte en el trading algo es ganar lo suficiente con el antes de que el mercado cambie de regimen y te conviertas en fuente de flujo predecible para participantes mejor armados.

Por que se degradan los sistemas

  • Cambio de regimen – un sistema trend-following de 2020 – 2021 (tendencias fuertes del dolar) puede no funcionar en 2024 (en rango). El regimen de mercado (art. 8.7) cambia, los parametros del sistema estan ajustados al regimen anterior.
  • Crowding – si una estrategia es popular, mas participantes la juegan. El edge se reduce porque el mercado arbitra la senal mas rapido.
  • Cambios de microestructura – el broker cambia el stack LP, los spreads cambian. Un sistema optimizado para el spread anterior puede no funcionar bajo el nuevo.

Senales de degradacion

  • El hit rate cae – del 55% (ultimas 500 operaciones) al 42% (ultimas 100). Mira el hit rate rolling, no el ultimo drawdown. (Las mismas metricas que monitoreas desde el principio – checklist de la seccion 6 – se convierten con el tiempo en senales de degradacion.)
  • La expectativa rolling por operacion cae sistematicamente – no una mala semana, sino tendencia bajista de 3 – 4 semanas.
  • El drawdown supera el percentil 95 de Monte Carlo.
  • El tiempo medio en posicion crece – el sistema no esta atrapando los movimientos que solia atrapar.

No esperes a un numero redondo de operaciones para empezar a diagnosticar. Un sistema mean-reversion en H1 hace 3 – 5 operaciones por semana – para una muestra "estadisticamente significativa" esperas meses. En ese tiempo el broker puede haber cambiado el stack LP y el mercado puede haber cambiado de regimen. Mira metricas rolling semana a semana: hit rate, expectativa, slippage, tiempo medio en posicion. Una tendencia bajista de 3 – 4 semanas es senal – no esperes a que se vuelva certeza.

Curva de equity del sistema con linea vertical en el momento del cambio de regimen de mercado (subida del ATR / cambio de politica del banco central) – el sistema deja de funcionar tras el cambio de entorno
Curva de equity del sistema con linea vertical en el momento del cambio de regimen de mercado (subida del ATR / cambio de politica del banco central) – el sistema deja de funcionar tras el cambio de entorno

Cuando apagar vs drawdown normal

Monte Carlo en Excel queda genial el domingo con un cafe. El jueves, cuando tienes -22% en una cuenta live y el siguiente tick decide si el broker te saca con slippage de pesadilla – la hoja de calculo acaba en la papelera y empiezas a rezar al grafico. Una decision de proceso parece facil en una hoja. Con posiciones abiertas se ve distinta. Antes de encender el sistema en vivo, escribe un umbral duro en el calendario: "DD = 22% -> apago esta noche, no manana, no despues de una operacion mas." Porque a las 23:15, con un DD del 21.8%, tu cerebro empezara a fabricar razones por las que el limite del 22% quizas sea demasiado conservador despues de todo. Define el trigger de drawdown de antemano: 1.5x max DD del backtest o el percentil 95 de Monte Carlo – y respetalo sin negociacion.

Del parquet – DD normal o degradacion? Un trader tenia un algo en GBP/USD, mean reversion. 8 meses de beneficio estable, max DD 8%. Noveno mes: DD 12%. Cundio el panico, lo apago. Decimo mes (sin el sistema): el mercado volvio a la mean reversion, el sistema habria recuperado el DD y cerrado el trimestre en +5%. El Monte Carlo del sistema mostraba un percentil 95 de DD del 15%. El 12% estaba dentro del rango normal. El trader no corrio Monte Carlo antes de pasar a vivo – "porque es trabajo extra".

Deteccion de regimen – filtro integrado en el EA

Los articulos didacticos describen el cambio de regimen como amenaza externa. Un trader sistematico construye un filtro de regimen directamente dentro del sistema:

  • ADX como interruptor – ADX < 20 = mercado en rango, sistema trend-following apagado. ADX > 25 = tendencia activa, sistema mean-reversion apagado. Uno de los enfoques mas simples y practicos para filtrar regimen.
  • Volatilidad vs media – comparar ATR de 20 dias con la media ATR de 200 dias. Si ATR(20) es 2x la media – el regimen ha cambiado, los parametros del sistema pueden no encajar.
  • COT como filtro de fondo – no como trigger de entrada, sino como contexto semanal. COT extremo (>90 percentil) en la misma direccion que el sistema = menor edge, por crowding. COT extremo en contra = squeeze potencial, un sistema trend-following puede tener viento de cola adicional. (Art. 6.6)

Mecanica de implementacion para COT en un EA: la CFTC publica el reporte COT el viernes a las 15:30 ET (21:30 hora polaca), con datos de referencia del martes anterior – 3 dias habiles de retraso. Esto significa que COT no sirve como trigger intradiario ni siquiera como senal diaria de entrada. El unico uso sensato: senal contextual semanal en D1 o W1 – un filtro "el posicionamiento del mercado es extremo?" revisado una vez por semana tras la publicacion. Si el percentil de las posiciones especulativas en una ventana rolling de 156 semanas es extremo (>90 o <10) en la direccion que coincide con la senal de la estrategia, el sistema reduce sizing o pausa entradas.

Legacy COT vs TFF – dos formatos de reporte, categorias distintas. Para futuros de divisas, usa el reporte TFF (Traders in Financial Futures) dedicado a instrumentos financieros, o marca claramente que usas el legacy COT clasico. Las categorias de participantes difieren entre formatos: legacy divide en Commercial (hedgers cubriendo exposiciones reales) y Non-Commercial (Large Speculators); TFF divide en Dealer/Intermediary, Asset Manager / Institutional, Leveraged Funds y Other Reportables. No mezcles categorias entre formatos en una regla del EA – o legacy o TFF, pero consistente. Datos COT en el EA: parsea el CSV de la CFTC manualmente o via API (p. ej. Quandl/NASDAQ Data Link, Barchart, cotpricecharts.com).

Deteccion de regimen – matriz operativa

En lugar de explicar "cambio de regimen" abstractamente, el EA debe tener una tabla de decision sencilla integrada sobre tres ejes: caracter del movimiento (tendencia / rango), volatilidad (alta / baja) y fondo risk-on/off. Corre el filtro en D1 o W1, una vez por sesion – no intradia:

RegimenTendencia / rango (estructura)Volatilidad (ATR vs media)Risk-on/off (DXY, JPY, CHF)Que enciendes, que apagas
Tendencia, vol altaHH/HL o LH/LLATR sobre percentil 75Risk-on para AUD/JPY, NZD/JPY; risk-off para USD/JPY, CHFTrend-following ON, mean reversion OFF, breakout ON con catalizador
Tendencia, vol bajaHH/HL debilATR bajo la mediana—Trend-following con sizing reducido; mean reversion OFF
Rango, vol altaSin nuevos extremos + velas ampliasATR sobre percentil 75—Todo OFF – este es "chop", donde tendencia y reversion ambas pierden frente a costos
Rango, vol bajaEl precio oscila en un rango estrechoATR bajo percentil 25Risk neutralMean reversion ON, trend-following OFF
Shock risk-offCambio brusco en 1 – 3 sesionesATR salta 2x en una semanaJPY/CHF se fortalecen bruscamenteTodo OFF hasta estabilizacion de 5 sesiones

El EA implementa el filtro como variables de estado simples refrescadas una vez al dia. Cuando el estado cambia de "tendencia, vol alta" a "rango, vol alta" – el sistema pausa entradas pero no cierra posiciones abiertas (a menos que tengan SL duro y esten cerca de el). Pausar y liquidar son decisiones distintas – la primera protege el edge, la segunda destruye expectativas de cola.

Boceto conceptual en MQL5 (codigo simplificado, a adaptar a tu arquitectura):

// Enum de estado de regimen
enum ENUM_REGIME { REGIME_TREND_HIGH, REGIME_TREND_LOW, REGIME_RANGE_LOW, REGIME_CHOP, REGIME_RISK_OFF };

ENUM_REGIME current_regime = REGIME_RANGE_LOW;
datetime last_regime_check = 0;

// Refresco una vez al dia en una nueva barra D1
void OnNewDailyBar() {
   current_regime = DetectRegime();   // implementacion: percentil ATR, estructura, DXY/JPY
   last_regime_check = TimeCurrent();
}

// En OnTick() – puerta de entrada
void OnTick() {
   if(current_regime == REGIME_CHOP || current_regime == REGIME_RISK_OFF) return; // bloquea entradas
   if(IsTrendStrategy() && current_regime != REGIME_TREND_HIGH) return;
   if(IsMeanReversion() && current_regime != REGIME_RANGE_LOW) return;
   // continua: logica de senal, sizing, SL/TP
}

Punto clave: corre el filtro una vez por sesion, no tick a tick. Cambios de regimen tick a tick producen falsas pausas y reinicios sobre movimientos minimos del ATR. Mejor una vez al dia con un umbral conservador que pulsacion constante de estado.

Test de robustez – sistema robusto vs sistema fragil

Un sistema que "funciona" no basta. El sistema debe sobrevivir condiciones peores que aquellas en las que lo testeaste. Un test de robustez consiste en empeorar deliberadamente las condiciones y comprobar si el sistema sigue teniendo expectativa positiva:

  • Spread +50% – si el sistema gana dinero con un spread de 1.0 pip, sigue ganando con 1.5 pip? Si no – es demasiado sensible al costo de entrada.
  • Latencia +200 ms – anade un retraso artificial al backtest. El resultado cae un 10% o un 60%? El scalping normalmente no sobrevive – el swing normalmente si.
  • Distintos feeds / brokers – corre el mismo sistema sobre tick data de 2 – 3 fuentes distintas. Si los resultados difieren >30% – el sistema esta operando artefactos del feed, no un patron de mercado.
  • Desplazamiento de entrada de 1 barra – retrasa la senal de entrada una vela. Si el sistema colapsa – el edge depende de una precision que no tendras en vivo.
  • Swap +50% – para sistemas overnight: aumenta el costo de swap a la mitad. Si un sistema D1 pierde rentabilidad – depende de financiacion barata, no de un patron.
  • Plateau de parametros – no busques el mejor punto. Busca una region donde toda la vecindad de parametros sea rentable. Si el parametro tiene que ser MA(17) y no MA(19) – eso es overfitting, no robustez.

En Python: la libreria vectorbt permite parametrizar spread, slippage y retraso de entrada con relativa rapidez y correr muchas variantes en bucle. En MQL: el Strategy Tester permite ajustar spread y slippage manualmente por test – tedioso, pero factible.

Sensibilidad del sistema a la ejecucion – depende del estilo

EstiloSensibilidad a spread/slippageSensibilidad a swapSensibilidad al cambio de regimenTest de robustez mas importante
ScalpingExtremadamente altaBaja (poco tiempo en posicion)MediaSpread +50%, latencia +200ms
IntradiaAltaBajaMedia – altaSpread +30%, desplazamiento de 1 barra
Swing / D1MediaAltaAltaSwap +50%, distintos feeds
Posicion / carryBajaExtremadamente altaExtremadamente altaCambio de tasas de interes, cambio de regimen

La columna "Scalping" de la tabla no es una invitacion – es una advertencia. Un trader retail en MT4/MT5 con un broker CFD no controla la latencia ni la prioridad de routing al grado necesario para construir un scalper rentable a largo plazo. Hay excepciones – pero son mas raras de lo que cree la mayoria de traders que acaban de descubrir M1.

Checklist de calidad de datos

Tres veces construi un sistema que "funcionaba" en backtest y "no funcionaba" en vivo – antes de aprender que los datos de mi broker tenian la zona horaria mal tras un cambio DST. El filtro horario que debia bloquear el trading entre las 23:00 y las 00:00 estaba bloqueando 22:00 – 23:00. El sistema operaba durante el rollover. Un problema de datos, no de logica. Comprueba los datos antes que el sistema:

  • Fuente de datos – broker (contaminado) vs independiente (Dukascopy, TickData). Compara OHLC en una semana al azar.
  • Zona horaria – UTC, GMT+2, GMT+3? Un cambio DST desplaza las horas de las velas – y el comportamiento de un sistema con filtro horario.
  • Calidad de tick – cuantos ticks por minuto? Datos con <10 ticks/min en EUR/USD son interpolacion, no mercado.
  • Gaps – fines de semana, festivos, desconexiones. Maneja el backtest los gaps correctamente, o los trata como velas de volumen cero?
  • Agregacion de velas – el broker A cuenta velas desde el bid, el broker B desde el mid. En M1/M5 marca diferencia.
  • Consistencia broker test/live – los datos del backtest vienen del mismo broker en el que operas live? Si no – estas testeando un mercado distinto.

9. EAs del mercado y social trading – que estas comprando

MQL5 Market, ZuluTrade, PAMM, copy trading – la promesa: "no tienes que aprender, otro operara por ti". La realidad es menos optimista.

MQL5 Market – ranking de supervivientes sin el historico completo de los perdedores

Miles de EAs en venta, ordenados por resultados. Un ranking de EAs es un cementerio en el que de momento solo ves las lapidas que aun siguen en pie. El comprador ve el resultado pero normalmente no ve la distribucion de riesgo completa, el historial de cambios de parametros ni las condiciones para las que el sistema fue ajustado. Los EAs que perdieron el 80% de la cuenta desaparecen del ranking. Es survivor bias clasico[7]. Peor: compras un EA con 14 meses de gran historico y estadisticamente has elegido el sistema, probablemente, en el mejor punto posible de su curva de equity – porque los sistemas con tendencia oculta a explotar primero crecen un ano y luego dejan la cuenta a cero. Survivorship bias convertido en suscripcion de pago.

Tipicas tretas del vendedor:

  • Martingala – doblar tras una perdida. Curva de equity perfecta hasta que una racha perdedora destruye la cuenta. Un track record de 12 meses sin DD no significa buen sistema – significa que la martingala aun no ha pegado con un cisne negro.
  • Grid sin SL – posiciones cada X pip sin stop loss. Funciona en rango. Una tendencia y la cuenta queda a cero.
  • Backtest cherry-picked – el vendedor muestra el mejor periodo. No muestra walk-forward.
  • Demo como "prueba live" – cuenta demo con fills ideales etiquetada como "resultados live".
Del parquet – el grid que no volvio. Un grid se ve brillante mientras el mercado revierte a la media. Luego llega un dia en que no lo hace. El algoritmo anade posiciones cada 30 pip, el margin level se derrite, y el trader mira fijamente una "perdida temporal" que se suponia iba a cerrar tras el pullback. Problema: el mercado no conoce tu precio medio y no tiene obligacion de darte respiro antes del margin call (que son margin call y stop out). USD/JPY, 2022: un movimiento de unos 3,700 pip desde el minimo (~115) al maximo (~152), seguido de una correccion brusca de 2,400 pip en sentido contrario. Un grid en cualquier direccion no sobrevivio – porque nadie disena un grid para un movimiento unidireccional de esa escala.
Closed DD vs floating DD – por que la martingala "parece estable" hasta el dia que explota
10% 30% 50% 70% 100% drawdown (%) m. 1 m. 3 m. 5 m. 7 m. 9 m. 10 Closed DD ~ 4% Floating DD sube al 50%+ margin call / stop-out Una curva de equity basada en closed DD parece un fondo de pensiones. El floating DD muestra el estado real del riesgo. Comprueba ambos antes de copiar.

Due diligence antes de comprar un EA – 7 pasos

CriterioMinimoBandera roja
Codigo fuenteDisponible o posibilidad de decompilacion"Propietario, no se puede divulgar"
Track record live (no demo)12+ meses, verificable (MyFxBook con investor rights)Demo presentada como "resultados live"
Numero de operaciones300+ (estadisticamente significativo)<100 operaciones
Max closed DD vs max floating DDAmbos divulgadosSolo closed DD (floating oculto = martingala)
SL en cada posicionSL duro por operacionSin SL, "stop mental", equity stop
Recovery factor>3 (beneficio neto / max DD)<1
El sistema anade a los perdedoresNoAveraging, grid, martingala

Social trading y copy trading

ZuluTrade, eToro CopyTrader, PAMM – copias a un "top trader". Ninguna pregunta de due diligence te protegera del hecho de que el "top trader" en ZuluTrade opera una cuenta con apalancamiento 1:400 en un broker de Vanuatu, usa martingala disfrazada de "averaging", y su DD del 4% en papel significa que una sola racha perdedora le pone a cero. Antes de copiar – comprueba donde tiene el dinero el broker de ese trader y que protecciones de cliente hay. La respuesta a menudo zanja la conversacion.

MQL5 Market – perfil de un EA tipico de martingala: linea de equity ascendente suave terminando en una caida vertical (-99%)
MQL5 Market – perfil de un EA tipico de martingala: linea de equity ascendente suave terminando en una caida vertical (-99%)

10. Algo para el trader retail – expectativas realistas

Lo que es alcanzable

  • Algo swing/posicion en D1/H4 – mean reversion o trend-following. 3 – 8 operaciones por semana. 10 – 30% CAGR suena bien sobre el papel. Pero el extremo superior de ese rango lo alcanza una pequena fraccion de traders retail construyendo sus propios sistemas, y un DD del 25% es psicologicamente algo completamente distinto a un DD del 25% en una hoja de calculo. Con una cuenta de 10,000 USD, eso son 2,500 USD desvanecidos. La mayoria de traders apaga el sistema con DD del 12% – antes de que tenga oportunidad de recuperarse. Y nota: los swaps negativos y la ampliacion del spread overnight (rollover) te comeran. Si el backtest no incluye el costo brutal de mantener overnight, el +15% sobre papel se vuelve un menos real.
  • Enfoque hibrido: algo + discrecional – el sistema genera senales, el trader decide la ejecucion segun el contexto (datos macro, regimen, COT – seccion 7). A menudo mas efectivo que el algo puro.
  • Automatizacion de gestion de riesgo – la gestion de riesgo no es plantar un SL fijo de 30 pip en cada operacion. Un algo real escala dinamicamente el tamano de posicion segun la volatilidad (ATR) y retira riesgo del mercado cuando el spread del broker se amplia a un nivel en el que el sistema pierde sentido economico. Incluso sin automatizacion de entrada – sizing automatico, trailing y un kill switch eliminan las peores decisiones emocionales.

Lo que NO es alcanzable

  • HFT sin colocation – requiere latencia en microsegundos y millones de USD. Un VPS de 30 USD con MT4 no te dara HFT[6].
  • 10% mensual constante – ningun sistema da retornos constantes. Quien promete "X% al mes constante" – o miente o usa martingala.
  • "Set and forget" – el sistema requiere monitoreo constante y recalibracion.
Cuantos sistemas sobreviven 2 anos? No hay estadistica auditada y disponible publicamente por estrategia FX. El proxy mas cercano disponible publicamente viene de plataformas con track records transparentes (Collective2, MyFxBook, Darwinex) – en sus catalogos, la gran mayoria de sistemas publicados publicamente en un ano dado o se vuelven inactivos en los siguientes 12 – 24 meses, caen en CAGR neto negativo, o cambian radicalmente parametros (lo que tecnicamente termina "ese" sistema y empieza uno nuevo). La estimacion puntual debe tratarse con cautela, porque las metodologias de conteo difieren entre plataformas y periodos; una formulacion mas justa es: entre los sistemas cuyos autores los consideraron suficientemente buenos como para publicarlos, la mayoria no pasa la prueba del tiempo. Estos tambien son casos seleccionados – la mayoria de sistemas lanzados en carpetas privadas de EA nunca aparecen en ninguna estadistica, porque se apagan antes del primer screenshot publico. Tu benchmark real no es "voy a hacer un 20% al ano". Es: "seguire en el juego dentro de 2 anos".

El algo no resuelve tu problema de edge. Lo traslada al codigo y empieza a ejecutarlo con consistencia total – sin un solo instante de duda. Si la logica era mala, ahora tienes una maquina mala pero muy laboriosa. El algo no proporciona edge – elimina la excusa de que las emociones eran las culpables. A partir de ahora el culpable es el codigo, los datos o tus suposiciones[10].

A-Book, B-Book y por que tu EA debe entender esto

Tu EA no opera Forex. Opera el feed de tu broker, en su modelo de routing, en su quote sheet. Eso puede ser cualquier cosa – ECN con LMAX/Currenex, un hibrido PoP, un market maker que internaliza (art. 2.7). Sin entender esto, escribir un sistema es adivinar.

  • B-Book – el broker internaliza el flujo (puede, pero no tiene por que ser la contraparte directa). No asumas que el broker "caza" tu cuenta – asume que su sistema de gestion de riesgo clasifica el flujo. La deteccion de flujo toxico significa identificar flujo que conlleva alto riesgo de seleccion adversa para el market maker o el LP – p. ej. arbitraje de latencia, news trading agresivo, flujo justo antes de un cambio de cotizacion – y es un componente real de la gestion de riesgo de ejecucion, no una categoria conspiranoica de "el cliente esta ganando". Si tu estilo encaja con ese perfil, las condiciones de ejecucion pueden cambiar sin mala fe – via routing, seleccion de LP, limites, retrasos y parametros del servidor.
  • A-Book – el broker pasa las ordenes a los LPs. Sin conflicto de interes, pero el slippage depende de la profundidad del book del LP y del tiempo de routing.
  • Hibrido – la mayoria de los brokers retail. Parte del flujo se internaliza, parte se pasa. No sabes en que categoria cae tu orden.

La misma estrategia puede ser rentable en un broker y muerta en otro – no porque "el mercado haya cambiado", sino porque las condiciones de ejecucion, el filtrado de flujo o la politica de cotizacion han cambiado. Si tu EA es rentable durante 3 – 6 meses en un broker B-Book – monitorea si las condiciones de ejecucion se deterioran a medida que cambia tu perfil de flujo. Como diagnosticar: analisis de calidad de fill en el tiempo (slippage rolling por direccion – es sistematicamente peor en una direccion?). Si no tienes transparencia del modelo: distribuye el EA en 2 – 3 brokers y compara el slippage rolling entre ellos – te da una senal empirica cuando uno de ellos empieza a ejecutar peor.

Como identificar el modelo de ejecucion de tu broker en 3 pasos

  1. Consigue el documento de politica de ejecucion. Pide a soporte la "order execution policy" o "best execution policy" – todo broker regulado por FCA, CySEC, KNF, BaFin esta obligado a tener tal documento. Lee las secciones: routing de ordenes, lista de LP, politica de slippage, requotes, fills parciales. Frases generales ("usamos multiples proveedores de liquidez") son normales; la ausencia de un documento concreto es bandera roja.
  2. Envia 10 ordenes en 3 condiciones distintas. Mismo tamano, mismo instrumento: en mercado normal (p. ej. miercoles por la manana), 2 minutos antes de Tier 1 (NFP/CPI/FOMC) y a las 22:45 hora polaca (rollover). Compara tiempos de fill, slippage y rejects. La asimetria en estas tres ventanas revela el modelo de ejecucion real mejor que cualquier documento.
  3. Pregunta directamente dos cosas a compliance. Primera: "Una cuenta ECN/raw tiene el mismo stack LP que su cuenta estandar?". Segunda: "Hay un stop level para mis instrumentos y cual es su tamano en pips en EUR/USD, GBP/JPY, USD/CHF?". Las respuestas (o su ausencia) ya son datos – un broker que no puede responder a la pregunta del stop level en 24 horas probablemente no tiene una politica de ejecucion transparente por instrumento.

Analisis de calidad de fill – como medir si el broker te esta penalizando

Transaction Cost Analysis (TCA) para un trader algo retail: tras 50+ operaciones, compara el precio solicitado con el precio de fill para posiciones long y short por separado. Si el slippage es sistematicamente peor en una direccion – tienes un problema estructural, no de mercado. MyFxBook tiene un "Trade Analysis" con columnas de eficiencia de entrada/salida – pero la mayoria de traders no sabe interpretarlo. Para convertir costos de ejecucion en dinero, usa nuestras calculadoras de costo, pip y spread.

MyFxBook Trade Analysis – columnas de eficiencia de entrada, eficiencia de salida y slippage por direccion: captura de muestra de analisis de calidad de fill
MyFxBook Trade Analysis – columnas de eficiencia de entrada, eficiencia de salida y slippage por direccion: captura de muestra de analisis de calidad de fill
MetricaQue mideBandera roja
Slippage por direccionDiferencia fill vs solicitud, long vs shortAsimetria a favor del broker (umbral depende del par y estilo – p. ej. >1 pip en majors para un scalper)
Fill rate% de ordenes ejecutadas / enviadasNotablemente menor en vivo que en demo (indicativo: <95%)
Tiempo de ejecucionTiempo desde el envio al fillSube sistematicamente con el tiempo o para tipos de orden especificos
Spread en el fill vs anunciadoSpread real en el momento del fillVarias veces mayor que el anunciado en mercado tranquilo

Correlaciones y exposicion – la trampa de las "12 posiciones en pares correlacionados"

Un EA que mantiene simultaneamente long EUR/USD, short USD/CHF y long GBP/USD no tiene tres posiciones – tiene una: una apuesta sobre debilidad del dolar en tres envoltorios. Si el dolar se fortalece, los tres pierden a la vez.

PosicionDivisa dominanteDireccion USDDireccion risk-on/off
Long EUR/USDUSDShort USDRisk-on moderado
Short USD/CHFUSDShort USDRisk-off / safe haven
Long GBP/USDUSDShort USDRisk-on
Long AUD/JPYJPY / riskNeutralRisk-on fuerte

El EA debe tener un filtro de exposicion por divisa. En lugar de un limite arbitrario de "max N posiciones" – mide la exposicion neta a cada divisa base: suma el notional (tamano de posicion x direccion) para cada divisa por separado. Si la exposicion agregada al USD supera, p. ej., el 3% de la cuenta – se bloquean nuevas posiciones con dominio del USD. Metodo simplificado: cuenta cuantas de tus posiciones abiertas comparten la misma divisa en el mismo lado. 3x short USD en distintos pares = una gran posicion short USD en tres envoltorios. Mas sobre correlaciones y exposicion por divisa: seccion 7 – analisis intermercado.

Ejemplo de calculo neto sobre tres pares. Cuenta 10,000 USD, abierto: long 0.5 lote EUR/USD (1% de riesgo), short 0.5 lote USD/CHF (1% de riesgo), long 0.3 lote GBP/USD (0.8% de riesgo). Parecen tres posiciones distintas con riesgo total del 2.8%. Calculo neto por divisa:

  • USD: long EUR/USD = short USD; short USD/CHF = short USD; long GBP/USD = short USD. Neto: -1.3 lote short USD (apuesta unidireccional sobre debilidad del dolar en tres envoltorios).
  • EUR: +0.5 long.
  • GBP: +0.3 long.
  • CHF: +0.5 long (short USD/CHF = long CHF).

Riesgo real: si el DXY gana un 1% por una Fed hawkish, las tres posiciones pierden a la vez. La perdida total estara mas cerca del 2.8% que del 1% – porque es una decision en tres exposiciones. Filtro EA: bloquea una nueva posicion si su divisa dominante ya tiene un neto sobre el umbral (p. ej. +/-2 lotes por divisa base para una cuenta de 10k USD).

De la idea al live – mapa de proceso

PasoQue hacesCriterio de paso
1. IdeaHipotesis + logica de entrada/salidaUna regla clara que se pueda escribir en codigo
2. Backtest con costosSpread variable, slippage, comision, tick dataExpectativa neta > 0 tras costos
3. Comprobacion de overfittingMinimiza parametros, comprueba el plateauResultado estable con cambios pequenos de parametros
4. Rolling WFAVentana IS/OOS deslizanteWFE > 50% (regla operativa)
5. Anchored WFAInicio fijo, IS crecienteWFE cercana a la rolling – el sistema se estabiliza
6. Monte Carlo10,000 permutaciones, distribucion de DD y expectativaPercentil 95 DD aceptable, expectativa > 0
7. RobustezSpread +50%, latencia +200ms, retraso de 1 barra, distintos feedsSistema aun rentable tras condiciones empeoradas
8. DemoTest tecnico del codigo, min. 50 operacionesEl codigo funciona, abre/cierra/gestiona posiciones
9. Live micro-loteValidacion de costos de ejecucion, min. 30 – 50 operacionesExpectativa live >= 50% del backtest (por debajo – vuelve a diagnostico de ejecucion)
10. MonitoreoMetricas rolling: hit rate, expectativa, slippage, swapTrigger DD = 1.5x max DD del backtest o percentil 95 MC

Cada paso es una puerta – si el sistema no pasa, vuelve al paso anterior. La mayoria de las ideas caen en el paso 2 o 3. Eso no es un defecto del proceso – es su objetivo.

Cierre de la tesis. El trading algo para el trader retail no es un atajo a la riqueza ni una forma de apagar el pensamiento. Es una disciplina de medicion donde el trader discrecional confia en la intuicion: medicion de costos (spread, slippage, comision, swap, latencia, friccion del VDP), medicion de calidad de ejecucion (asimetria del fill, fill rate, tiempo de ejecucion), medicion de la robustez del sistema (spread +50%, latencia +200 ms, distintos feeds) y medicion del regimen de mercado (la matriz tendencia x volatilidad x risk-on/off). Sin log de ejecucion, walk-forward y Monte Carlo, solo estas siendo un donante de liquidez mas rapido para el broker. Con estas herramientas tienes una oportunidad de algo que sobreviva al primer cambio de regimen – y en un ciclo de dos anos ese es el benchmark real y ambicioso del algo retail. No el 20% al mes. Seguir en el juego dentro de dos anos.

FAQ – preguntas frecuentes

¿Necesito saber programar?

Si – al menos al nivel de leer y modificar codigo. Sin eso eres un cliente de caja negra. Minimo: fundamentos de MQL5 o Python. Tiempo de aprendizaje: 2 – 4 meses de practica regular.

¿Cuanto cuesta empezar con el trading algoritmico?

Minimo: una cuenta de broker (1,000 – 5,000 USD), VPS (15 – 50 USD/mes), MT4/MT5 (gratis). Opcional: tick data (100 – 500 USD/ano), plataformas profesionales (50 – 200 USD/mes). El mayor costo es el tiempo – cientos de horas de construccion, debug, validacion y descarte de ideas que no funcionan. El dinero inicial es menor que el costo en horas.

¿Cual es un retorno realista?

Algo swing/posicion: 10 – 30% CAGR con DD 15 – 25%. No 10% al mes – 10 – 30% al ano, con meses negativos. Compara: un ETF del S&P 500 historicamente retorna ~8 – 10% CAGR sin trabajo alguno.

¿Puede ser rentable un EA del MQL5 Market?

Teoricamente si. En la practica: una gran parte son martingalas, grids sin SL o sistemas overfitted a un regimen de mercado. Comprueba: walk-forward (no solo backtest), cuenta live (no demo), DD realista (sin DD = riesgo de cola oculto), SL en cada operacion, track record en distintos regimenes. Si no puedes leer el codigo – no compres. Ver seccion 9: tabla de due diligence.

¿MQL4 o MQL5?

Si el broker ofrece MT5 – aprende MQL5 (mejor backtester, mejor arquitectura). Si solo MT4 – MQL4. Son lenguajes distintos – no aprendas ambos a la vez. Sabes Python? Considera operar via la API del broker.

¿Como reconozco el overfitting?

Walk-forward: OOS >50% peor que IS = overfitting. Otras senales: solo funciona en un par, un cambio pequeno de parametro destruye el resultado, 6+ parametros, curva de equity "demasiado suave". Prevencion: minimiza parametros, testea siempre OOS.

¿Basta el demo para validar?

No. El demo valida la tecnica, no los resultados. Los fills en demo suelen ser notablemente mas favorables y menos representativos que en live – sin Last Look, sin rejects de LP, sin fills parciales, sin ampliacion dinamica del spread en la salida. En vivo, los costos de ejecucion suelen recortar la expectativa entre un 30 y un 60% respecto a test/demo. El demo es el paso uno (compila el codigo y abre/cierra posiciones?). El live con 0.01 lote es el paso dos – solo el te da datos reales sobre costos en tu cuenta especifica.

¿Cuando apagar un sistema perdedor?

Define antes de ir a vivo: trigger de drawdown = 1.5x max DD del backtest o el percentil 95 de Monte Carlo. No apagues tras 3 perdidas seguidas (DD normal). Apaga cuando el DD cruza el umbral – y vuelve a diagnostico.

¿Python o MQL para trading algo?

Python: mejores herramientas estadisticas, mejor para investigacion/validacion. MQL: integracion nativa con MT4/MT5, backtester integrado, ejecucion directa. Muchos traders algo usan ambos: Python para investigacion, MQL para ejecucion.

¿Elimina el algo las emociones?

Elimina las emociones de la ejecucion – el sistema no tiene FOMO. Pero las emociones no desaparecen – cambian de forma. En lugar de perseguir una vela, empiezas a retocar parametros tras una racha perdedora y rompes el sistema justo cuando deberias dejarlo en paz. Escenario tipico: drawdown del 14%, el trader ajusta el SL "para reducir riesgo" – el sistema deja de tocar salidas. Anade un filtro – el sistema deja de entrar. Tras unas semanas de "optimizacion live" tiene un sistema ajustado a un drawdown que se habria recuperado igualmente. No son las emociones las que matan al algo – es la intervencion en el sistema cuando duele.

Fuentes y bibliografia

Investigacion academica y publicaciones

  1. ESMA, "Product Intervention Analysis: Measure on Contracts for Differences", decisiones de intervencion de 2018 (incl. ESMA35-43-1135) – fuente original del rango 74 – 89% de cuentas retail de CFD perdiendo dinero, como parte del paquete de intervencion de producto que cubre limites de apalancamiento, margin close-out y proteccion frente a saldo negativo; complementado con "MiFID II/MiFIR – Q&A on Investor Protection Topics", 2023.
  2. Pardo, R., The Evaluation and Optimization of Trading Strategies, Wiley, 2.a ed., 2008 – walk-forward analysis, metodologia de backtesting, modelado de costos de transaccion.
  3. Bailey, D.H., Borwein, J.M., Lopez de Prado, M., Zhu, Q.J., "Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance", Notices of the AMS, vol. 61, 2014 – prueba matematica de falsos positivos por testeo multiple.
  4. Harvey, C.R., Liu, Y., Zhu, H., "...and the Cross-Section of Expected Returns", Review of Financial Studies, vol. 29, 2016 – p-hacking en investigacion financiera; umbrales de significancia ajustados por testeo multiple.
  5. Pardo, R., The Evaluation and Optimization of Trading Strategies, Wiley, 2.a ed., 2008 (capitulos sobre walk-forward analysis) – protocolo WFA, definicion de walk-forward efficiency, modelado de costos de transaccion en validacion.
  6. Aldridge, I., High-Frequency Trading: A Practical Guide to Algorithmic Strategies, Wiley, 2.a ed., 2013 – mecanica HFT, requisitos de infraestructura, arbitraje de latencia.

Fuentes de la industria y practicas

  1. Lopez de Prado, M., Advances in Financial Machine Learning, Wiley, 2018 – overfitting de backtest, validacion cruzada combinatoriamente simetrica; metodos de validacion resistentes al data snooping.
  2. MetaQuotes, "MQL5 Documentation – Strategy Tester", 2024 – documentacion del MT5 Strategy Tester; modos de testeo (Every tick, Real ticks).
  3. Bank for International Settlements, Triennial Central Bank Survey, 2022 – fuente sobre escala y estructura del mercado FX global (volumen diario, estructura por instrumento, divisa y contraparte). No es fuente directa de un porcentaje concreto del trading algo en el volumen spot – las estimaciones de la cuota algo requieren reportes de mercado/plataforma separados (CME, BIS Quarterly Review).
  4. Barber, B.M., Odean, T., "Trading is Hazardous to Your Wealth", Journal of Finance, vol. 55, 2000 – el trading retail activo produce retornos menores que buy-and-hold tras costos.
  5. Chan, E., Algorithmic Trading: Winning Strategies and Their Rationale, Wiley, 2013 – construccion de sistemas mean reversion y momentum sobre FX; sizing, costos, backtesting.
  6. Kissell, R., The Science of Algorithmic Trading and Portfolio Management, Academic Press, 2013 – modelado de slippage, TCA, market impact de las ordenes.
  7. Aronson, D., Evidence-Based Technical Analysis, Wiley, 2006 – enfoque estadistico al testeo de estrategias; problemas del testeo de hipotesis multiples.
  8. CME Group, "Algorithmic Trading and Market Structure", 2023 – rol del trading algo en mercados de futuros; impacto en liquidez y price discovery.
  9. FCA, "Algorithmic Trading Compliance in Wholesale Markets", 2018 – requisitos regulatorios para trading algoritmico bajo MiFID II.
  10. BIS Markets Committee, "The sterling 'flash event' of 7 October 2016", enero 2017 – informe del BIS en cooperacion con bancos centrales (incluyendo el Bank of England) describiendo la mecanica del flash crash GBP/USD: rol de los algoritmos, liquidez fina temprano-asiatica, cascada de stop losses y amplificacion del movimiento por sistemas automatizados.
  11. Global Foreign Exchange Committee, FX Global Code, 2021 (actualizado) – codigo de conducta para FX OTC; Principio 17: "Market Participants employing Last Look should be transparent regarding its use." Definicion de Last Look, hold time, simetria del rechazo de ordenes y obligaciones de divulgacion del LP.
  12. New York Department of Financial Services, Consent Order: Barclays Bank PLC, noviembre 2015 – resolucion imponiendo una multa de 150 millones de USD por Last Look asimetrico en la plataforma BARX FX (rechazando ordenes de clientes cuando el precio se movia a su favor). Uno de los documentos regulatorios clave sobre la mecanica del Last Look en FX retail/institucional.

Tu progreso de aprendizaje

¿Has terminado la lección? Márcala tú. Abrir o desplazar una página nunca la marca como completada.

El progreso requiere JavaScript y almacenamiento del navegador.

Se guarda solo en este navegador. Sin cuenta ni sincronización entre dispositivos. Borrar los datos del sitio puede eliminar tu progreso.

Jarosław Wasiński

Redactor jefe, ForexMechanics.com • Analista macro y FX

Analista independiente y profesional con mas de 20 anos de experiencia en los mercados financieros. Activo en Forex desde 2004, con enfoque en analisis fundamental, estructura del mercado OTC y gestion disciplinada del riesgo de capital.

  • Creador y redactor jefe de MyBank.pl, ofreciendo educacion financiera fiable desde 2004.
  • Autor de cientos de comentarios de mercado en profundidad, analisis estructurales y materiales educativos para traders e inversores.
  • Defensor de la transparencia del mercado, promoviendo una educacion basada en datos concretos e informes institucionales (BIS, ESMA, CFTC).

Todo el contenido tiene caracter exclusivamente educativo e informativo – no constituye asesoramiento de inversion ni recomendacion alguna. Recuerde: el trading con apalancamiento (Forex/CFD) conlleva un alto riesgo de perdida rapida de capital.