Para qué sirve el motor
AlfaTactix describe cada estrategia una sola vez, en un único documento de estrategia, y lo convierte en código MQL5 para MetaTrader 5 o en código Pine Script v6 para TradingView. El motor de backtest v2 ejecuta ese mismo documento sobre velas pasadas. Tiene dos tareas:
- Un backtest para ti. El backtest está abierto a todos los usuarios con sesión iniciada. Una estrategia que creas en el creador de 7 pasos se ejecuta en el motor con las reglas de velas, los costes y el redondeo que describe esta página. Qué permite cada plan y cómo empezar: Backtest sin programar.
- Una referencia para el código. El motor es la vara de medir con la que se comprueba el código generado. Ejecutamos la misma estrategia en el motor y en el Probador de estrategias de MetaTrader 5 o en TradingView, y comparamos las señales y las operaciones. Cada diferencia debe tener una causa con nombre; si no, cuenta como error.
Esta página explica las reglas del motor en palabras sencillas y luego muestra hasta qué punto MetaTrader 5 y TradingView las siguen, con los límites. Cómo probamos el resto del producto está en Cómo probamos; el código generado tiene su propia página, Generadores MQL5 y Pine.
El modelo de velas en palabras sencillas
Una vela da cuatro precios: apertura, máximo, mínimo y cierre. No dice en qué orden llegaron los precios dentro de la vela. Todo probador necesita una regla para eso. Estas son las reglas del motor, escritas en la especificación de la estrategia:
- Un hueco se ejecuta en la apertura. Si una vela abre más allá de tu stop loss o tu take profit, la orden se ejecuta en la apertura, no en el nivel que fijaste.
- Primero el stop. Cuando el stop loss y el take profit están los dos dentro de una misma vela, el motor supone que se tocó primero el stop.
- Niveles por orden de precio. Cuando una vela cruza varios niveles, como cierres parciales y el take profit, se ejecutan en el orden en que el precio los alcanza.
- Movimientos desde la vela siguiente. Un stop dinámico o un movimiento a breakeven se aplica desde la vela siguiente, no dentro de la vela que lo activó.
- Señales al cierre, ejecuciones en la apertura siguiente. Las señales de salida y las salidas por tiempo se deciden al cierre de una vela y se ejecutan en la apertura de la siguiente.
- Los cierres parciales se redondean hacia abajo al paso de volumen del símbolo.
Por qué primero el stop
Una sola vela no puede decir cuál de dos niveles llegó antes, así que un probador tiene que suponerlo. Elegir el stop es la suposición prudente. En velas normales esta regla es más estricta que la de TradingView, MetaTrader 5 y NinjaTrader, y la ejecución de un hueco en la apertura es igual que la de TradingView. Esa comparación es una lectura de la documentación de las propias plataformas: no ejecutamos sus probadores para hacerla.
Las reglas tienen su propia biblioteca de pruebas: 25 casos, 25 de 25 superados.
Cuatro reglas más
Fijadas también:
- las velas son precios Bid, y una posición corta sale en el Ask;
- el deslizamiento se aplica solo a las ejecuciones de stop, de hueco y a mercado;
- una orden límite puede tener un desplazamiento de ejecución en ticks (0 por defecto);
- cuando los cierres parciales suman la posición entera, el último nivel cierra lo que queda.
El modo de datos finos
Dentro de una vela, el motor puede leer precios más finos en lugar de suponer. Cada ejecución usa uno de tres modos:
| Modo | Qué lee el motor dentro de cada vela |
|---|---|
| Velas | solo la vela, con las reglas de arriba |
| OHLC de 1 minuto | la apertura, el máximo, el mínimo y el cierre de cada minuto dentro de la vela |
| Ticks reales | cada cambio de precio dentro de la vela |
Una vela sin precios más finos vuelve a las reglas de velas, y la ejecución cuenta cuántas velas lo hicieron. Cada resultado indica su modo, así que siempre sabes qué lectura estás viendo.
Las comparaciones con MetaTrader 5 que siguen usaron el modo OHLC de 1 minuto. El modo de ticks reales todavía no se ha comparado con MetaTrader 5 ni con TradingView.
Los costes y el perfil de prueba
Los costes no se esconden en el modelo de velas. Cada uno se fija en el perfil de prueba de la ejecución, donde puedes verlo:
| Coste | Cómo se fija |
|---|---|
| Spread | según los datos de precios, o un valor fijo |
| Comisión | por lote, por orden o un porcentaje del valor de la operación |
| Swap | según los datos de precios, o valores fijos para largos y cortos |
| Deslizamiento | solo en el backtest, en ejecuciones de stop, de hueco y a mercado |
| Desplazamiento de ejecución de órdenes límite | un desplazamiento opcional en ticks para las órdenes límite, 0 por defecto |
El perfil de prueba 1.1 añade tres cosas:
- la divisa de cotización y la divisa base del símbolo;
- una conversión de divisa fija;
- el día de triple swap: el miércoles para forex y metales, el viernes para CFD de índices y de acciones.
Una ejecución con un perfil 1.0 sigue dando resultados idénticos byte a byte.
La cuadrícula de ticks y el redondeo del dinero
Precios en la cuadrícula de ticks
Los precios se mueven a saltos: el tamaño de tick del símbolo. Un nivel que cae entre dos saltos no se puede ejecutar nunca. El motor coloca cada nivel de stop loss, take profit, stop dinámico y breakeven en la cuadrícula de ticks del símbolo, redondeado en sentido contrario a la entrada: por debajo de la entrada, el nivel baja al salto siguiente; por encima, sube al salto siguiente. Un nivel a menos de una millonésima de tick de un salto cuenta como si estuviera en él. El tamaño de la posición y 1R siguen usando la distancia exacta que fijaste.
En los modos de minutos y de ticks, el stop dinámico y el breakeven se mueven una vez por vela, a su cierre, y los precios a menos de una millonésima de tick de la cuadrícula se ajustan a ella cuando el motor los lee. El motivo es un hecho de la plataforma: MetaTrader guarda el 6,2 % de los precios de minuto de EURUSD a un ulp (el paso más pequeño que puede dar un número en un ordenador) de la cuadrícula.
El dinero, al céntimo
La comisión, el swap y el resultado de cada ejecución se anotan en la unidad más pequeña de la divisa de la cuenta, el céntimo en una cuenta en USD, redondeando la mitad hacia fuera del cero, como los anota el Probador de estrategias de MetaTrader 5. La prueba son 42 cargos que caían justo en medio céntimo y 841 de 841 transacciones del probador. En el swap y en el resultado de las ejecuciones se observó; en la comisión es una suposición. TradingView guarda el dinero exacto, sin redondear.
Cómo comparamos: valores, señales, operaciones
Comparamos el motor con cada plataforma en tres niveles:
| Nivel | Qué se compara | Con qué exactitud |
|---|---|---|
| P1 | valores de los indicadores | bit a bit en MetaTrader 5, tolerancia cero en TradingView |
| P2 | señales: en cada vela, cada marca de entrada y de salida y cada regla de la estrategia | iguales o no, vela a vela |
| P3 | operaciones: la lista completa, con entradas, salidas, precios y volúmenes | iguales, o cada diferencia tiene una causa con nombre |
P1 es la parte de los generadores y tiene su propia página: Generadores MQL5 y Pine. Esta página trata de P2 y P3.
Causas con nombre y errores
Una diferencia en una lista de operaciones es una de doce causas con nombre, revisadas fila a fila, o es un error. Una ejecución está dentro del margen cuando cada diferencia tiene una causa con nombre y los resultados netos de los dos lados cuadran con un resto de 0,00. Cuatro causas explican la mayoría de las diferencias:
- Fin de los datos. El motor cierra una operación abierta al cierre de la última vela; el Probador de estrategias de MetaTrader 5 la cierra en su propio final de prueba; TradingView la deja abierta.
- Modo del probador. En "1 minute OHLC", el Probador de estrategias de MetaTrader 5 ejecuta un stop loss o un take profit en el propio nivel, aunque el minuto abriera más allá. El motor lo ejecuta en la apertura de ese minuto, el precio realista.
- El recorrido dentro de la vela. Cuando una vela toca a la vez el stop loss y el take profit, el recorrido que sigue el probador o TradingView dentro de la vela puede llegar antes al take profit; el motor toma primero el stop.
- Efecto en cadena sobre el capital. Tras una diferencia con nombre, los dos saldos difieren un poco, así que una operación posterior dimensionada por riesgo puede diferir en un paso de volumen.
Resultados frente al Probador de estrategias de MetaTrader 5
Estrategias de referencia
Nuestro conjunto de referencia tiene 31 estrategias de prueba válidas. Las comparaciones de referencia se ejecutan con velas de prueba en un símbolo personalizado de MetaTrader 5, así que el motor y el Asesor Experto leen velas idénticas:
| Nivel | Iguales | Dentro del margen | No comparables |
|---|---|---|---|
| Señales (P2) | 29 | no aplica | 2 |
| Operaciones (P3, "1 minute OHLC") | 7 | 22 | 2 |
Es decir, 29 de 31 estrategias dan las mismas señales, y 29 de 31 dan operaciones iguales o dentro del margen, con 0 errores. Las 2 no comparables son estrategias que MetaTrader 5 no puede ejecutar: una usa todos los filtros a la vez y otra usa un filtro fundamental que solo ofrece TradingView. El generador las rechaza para MetaTrader 5 a propósito.
Seis estrategias habituales con precios reales
Ejecutamos seis estrategias habituales con unos diez meses de precios reales de EURUSD en H1 en el Probador de estrategias de MetaTrader 5 (modo "1 minute OHLC"):
| Ejecución | Estrategia | Operaciones: motor / MetaTrader 5 | Veredicto |
|---|---|---|---|
| R1 | Cruce de EMA 20/50 con un stop de 2 × ATR | 89 / 89 | dentro del margen |
| R2 | Reversión a la media con RSI(14) y una SMA 200 | 16 / 16 | igual |
| R3 | Ruptura de Bollinger (20, 2) con filtro de volumen | 127 / 127 | dentro del margen |
| R4 | MACD en H4 con un filtro de EMA 200 diaria | 17 / 17 | dentro del margen |
| R5 | Ruptura del rango de Londres con los límites de FTMO | 71 / 71 | dentro del margen |
| R6 | Ruptura de Donchian 20, stop dinámico, 50 % cerrado en 1R | 170 / 170 | dentro del margen |
Las señales tuvieron 0 diferencias en cada vela de cada ejecución, por ejemplo 4832 filas en R4 y 12 110 en R6. En las cinco ejecuciones dentro del margen, las diferencias vienen sobre todo del modo del probador y del fin de los datos, y los resultados netos cuadran con un resto de 0,00.
La mayoría de las seis perdió dinero en este periodo. No es lo que mide la prueba: muestra que el motor y MetaTrader 5 coinciden, no cómo le irá a una estrategia.
Resultados en TradingView
TradingView no tiene un probador por línea de comandos, así que cada ejecución allí es manual y la cobertura es pequeña. Con las 31 estrategias de referencia:
| Nivel | En el propio TradingView | Sin ejecutar |
|---|---|---|
| Señales (P2) | 7 iguales | 24 |
| Operaciones (P3) | 4 iguales, 1 dentro del margen | 26 |
También comprobamos nuestro propio simulador del código Pine frente al motor en cada estrategia de referencia. Es una comprobación de nuestro simulador, no de TradingView: señales 20 iguales, operaciones 18 iguales y 2 dentro del margen, 11 no comparables. Tras la versión 1.0.0 del generador, los veredictos no cambian.
Con las propias velas de TradingView
Ejecutamos las seis estrategias habituales con las propias velas de EURUSD en H1 de TradingView (5012 velas, sin costes):
- R1 87, R2 11, R3 125 y R5 75 operaciones, cada una igual a la ejecución del motor con las mismas velas;
- R6 181 operaciones, con una causa con nombre (el recorrido dentro de la vela) de la que se siguen las operaciones posteriores;
- R4 ninguna operación: su calentamiento necesita más velas de las que cargó la cuenta de TradingView.
Por qué MetaTrader 5 y TradingView nunca coinciden del todo
Una prueba evidente es ejecutar la misma estrategia en MetaTrader 5 y en TradingView y comparar las dos. No coincidirán del todo, y no decimos que lo hagan: las dos plataformas leen fuentes de precios distintas. Un cruce ocurre en una fuente y falla por un punto o dos en la otra; un filtro de volumen cuenta ticks distintos; una salida una hora antes o después cambia la posición siguiente.
En cinco de las seis estrategias habituales, esta fue la parte de entradas a la misma hora y en el mismo sentido:
| Ejecución | Misma hora y sentido |
|---|---|
| R1 | 94 % |
| R2 | 82 % |
| R3 | 88 % |
| R5 | 94 % |
| R6 | 95 % |
Por eso comparamos cada plataforma con el motor sobre las propias velas de esa plataforma, como en las dos secciones anteriores, y no las dos plataformas entre sí.
Los límites
Estos son los límites de lo que muestra esta página:
- La comisión y el deslizamiento en MetaTrader 5 no están demostrados. En un símbolo personalizado, el Probador de estrategias de MetaTrader 5 nunca cobra comisión, deslizamiento ni el desplazamiento de ejecución de las órdenes límite. Los dejamos fuera de los dos lados y los nombramos en cada caso.
- TradingView modela menos costes. No modela spread, swap ni conversión de divisa, y su registro no informa de la comisión. También se dejan fuera de los dos lados.
- Poca cobertura en TradingView. Señales de 7 y operaciones de 5 de las 31 estrategias de referencia.
- Un símbolo, una fuente, unos diez meses. Las ejecuciones con precios reales usaron solo EURUSD, la fuente de precios de un bróker y el modo "1 minute OHLC". No se ejecutó: el modo de ticks reales ni una prueba de 12 meses en TradingView.
- Sin operativa real. Nada de esto se probó con dinero real, en una cuenta real ni a futuro (forward).
- Sin verificar todavía. La exportación de la lista de operaciones de TradingView, los límites de los registros de Pine, la carpeta de archivos compartida del Probador de estrategias de MetaTrader 5 (
FILE_COMMON) y el cierre propio del probador al final de una prueba. - Cuatro métricas se basan en suposiciones nuestras. La anualización del ratio de Sharpe, el factor de recuperación sobre el drawdown del capital, el objetivo 0 del ratio de Sortino y la exposición.
- Los backtests completos no son exactos bit a bit. Bit a bit se refiere a los valores de los indicadores. Las señales son iguales en los casos de arriba; las operaciones son iguales o difieren por una causa con nombre.
Preguntas frecuentes
¿Coincidirá un backtest aquí con mi ejecución en el Probador de estrategias de MetaTrader 5?
En nuestras pruebas, con las mismas velas y los costes que cobran los dos lados, las señales fueron las mismas y las operaciones fueron iguales o difirieron por una causa con nombre. Una ejecución tuya en el probador puede diferir si lee otras velas, usa otro modo del probador o cobra costes que la ejecución del motor deja fuera.
¿Por qué el motor toma primero el stop?
Una vela no dice cuál de dos niveles llegó antes, así que un probador tiene que suponerlo, y el stop es la suposición prudente. En los modos de OHLC de 1 minuto y de ticks reales, el motor lee los precios dentro de la vela, así que tiene que suponer menos.
¿Qué significa "dentro del margen"?
Cada diferencia entre el motor y la plataforma tiene una causa con nombre de una lista fija, y los resultados netos de los dos lados cuadran con un resto de 0,00. Una diferencia sin causa con nombre es un error.
¿Un buen backtest significa que a una estrategia le irá bien?
No. Un backtest muestra lo que habrían hecho las reglas con precios pasados, con los costes y los límites indicados. No dice nada del futuro. Las pruebas de esta página comprueban que el motor y las plataformas coinciden, no que una estrategia sea buena.
¿Se probó el motor con dinero real?
No. Solo se ejecutaron el Probador de estrategias de MetaTrader 5 y backtests de TradingView. No se probó la operativa real.
¿Quién puede ejecutar un backtest?
Todos los usuarios con sesión iniciada. Para probar el creador sin registrarte, abre la demo pública.
Fuentes
Las cifras de esta página vienen de nuestro registro de ingeniería, citado por el número de documento.
149Dosier de pruebas: los hechos del motor (§2) y lo que podemos afirmar (§6.1).115Actualización del diseño del motor: el modelo de velas (§2) y el perfil de prueba (§9).125Comprobación del modelo de velas frente a TradingView, MetaTrader 5 y NinjaTrader.100Decisiones DD-66, DD-101, DD-103 y DD-105.137Banco de paridad: los tres niveles y las causas con nombre.137aInforme de paridad: los recuentos.143Ejecuciones de referencia de las seis estrategias habituales.

