La respuesta corta
No puedes convertir de forma fiable una estrategia de Pine Script a MQL5 línea a
línea. Los dos lenguajes funcionan con modelos de ejecución distintos: Pine se
ejecuta una vez por barra histórica [1], mientras que un Expert Advisor de MQL5
reacciona a cada nueva cotización. Las ejecuciones de órdenes, el manejo de las
barras, request.security y el repintado se comportan de otra forma, así que una
traducción línea a línea compila y luego opera una estrategia ligeramente distinta.
El método honesto es reconstruir las reglas una vez, no traducir el código:
- Escribe la estrategia como reglas: entrada, salida, filtros, sesiones y riesgo, todo con números.
- Introduce esas reglas en un formulario que conozca las dos plataformas. En el Strategy Builder de AlfaTactix son 7 pasos con 47 tipos de indicador, y en el paso 1 eliges la plataforma: MetaTrader 5 (MQL5) o TradingView (Pine Script v6).
- Para pasar una estrategia a la otra plataforma, pulsa "Cambiar" junto a la plataforma en el paso 1. Antes de cambiar, el formulario muestra los ajustes que la otra plataforma no ofrece y cómo cambian. Una estrategia se genera para una sola plataforma a la vez.
- Vuelve a probarla en la nueva plataforma. Los resultados de una plataforma no son evidencia sobre la otra.
El resto de esta guía explica qué se rompe al portar línea a línea, por qué los dos backtests no pueden coincidir y qué plataforma conviene para cada trabajo.
Lo que no se transfiere línea a línea
Los nombres de los indicadores se transfieren bien: un RSI es un RSI. Lo que no se transfiere es todo lo que los rodea, y los casos peligrosos son los que parecen idénticos, compilan, funcionan y significan otra cosa.
Manejo de barras: Pine no tiene manejador de eventos
El código MQL5 se organiza en torno a manejadores de eventos: OnTick() se
ejecuta cuando llega una nueva cotización. Pine no tiene tal manejador. El script se
ejecuta una vez por barra histórica y repetidamente en la barra en tiempo real [1], y
expresas «cuando ocurra esto» como una condición evaluada en cada ejecución, no como
un callback.
Así que una estrategia que cuenta ticks, o que actúa en la n-ésima cotización dentro de una barra, no tiene traducción directa en ningún sentido. Hay que reexpresarla en términos de barras, y esa reexpresión es un cambio en la estrategia, no una portabilidad. Cualquier cosa definida sobre cierres confirmados se mueve entre las plataformas con poca fricción.
Ejecuciones: cuándo se ejecuta la orden
En las barras históricas, el emulador de bróker de TradingView ejecuta una orden de
mercado en la apertura de la barra siguiente por defecto, y ajustes como
process_orders_on_close lo cambian [3]. La orden de un Expert Advisor se ejecuta
cuando se envía, al precio que da el servidor de operaciones en ese momento. Un script
de Pine que depende de la apertura de la barra siguiente, copiado a MQL5 instrucción
por instrucción, entra a otro precio y a veces en otra barra.
request.security: otras temporalidades
Una estrategia de Pine que lee una temporalidad superior llama a request.security.
Con lookahead = barmerge.lookahead_on en barras históricas, puede devolver un valor
de la temporalidad superior antes de que esa barra haya cerrado, una información que la
estrategia no podía tener en ese momento [4]. MQL5 no tiene request.security: un
Expert Advisor lee él mismo las barras de la otra temporalidad, y hay que volver a
decidir qué barra cuenta como «cerrada». Si portas la llamada al pie de la letra, o
filtras el futuro o desplazas cada señal una barra de la temporalidad superior.
Repintado
Un script repinta cuando se comporta de forma distinta en las barras históricas que en la barra en tiempo real [5]: una señal que aparece en una barra en formación y desaparece al cerrar, o un valor calculado con datos que aún no existían. Una estrategia de Pine que repinta parece mejor en su backtest de lo que puede operar, y una copia en MQL5 hereda el mismo defecto de forma menos visible. Decide sobre cierres confirmados antes de portar nada.
Unidades que cambian de significado
| Ajuste | En TradingView | En MetaTrader 5 |
|---|---|---|
| Slippage | slippage, contado en ticks [3] | desviación en puntos, y un punto no es un tick |
| Comisión | commission_value, leído según commission_type [3] | por lote, desde la especificación del contrato del bróker |
| Tamaño de posición | default_qty_type con strategy.fixed o strategy.percent_of_equity [3] | lotes, sujetos al mínimo, máximo y paso del símbolo |
| Horario de sesión | una cadena de sesión, leída en la zona horaria del mercado | la hora del servidor del bróker, que no suele ser ni UTC ni la tuya |
Copiar un slippage de 3 de un lado a otro es el error clásico: tres ticks y tres puntos son distancias distintas, y nada te avisa. La fila de la sesión causa la mayoría de las roturas silenciosas. Una estrategia que opera la apertura de Londres necesita que su sesión se vuelva a derivar en cada plataforma, no que se copie; las reglas de los filtros de sesión cubren la mitad de Pine.
Guarda la estrategia en una forma que no sea ninguno de los dos lenguajes
Una especificación escrita (condición de entrada, condición de salida, regla de tamaño, sesión, todo con números) es lo que se transfiere limpiamente, porque es lo que ambas plataformas expresan. Con una especificación que guardas aparte, cambiar de plataforma es reconstruir desde un documento en lugar de traducir código: es más rápido, y produce una estrategia que funciona en vez de una sutilmente distinta. Convertir una estrategia manual es el mismo ejercicio desde el otro lado.
Dos motores no pueden coincidir, y esta es la razón
Si construyes una idea dos veces — una en MQL5 para MetaTrader 5 y otra en Pine para TradingView — los dos backtests no coincidirán. No es un error de portabilidad. Los motores modelan el precio dentro de la barra de forma distinta, y ambos fabricantes lo documentan.
Lo que puede hacer MetaTrader 5
El Strategy Tester de MT5 ofrece cinco modos de generación de ticks [2]:
| Modo [2] | Cómo se produce el precio dentro de la barra |
|---|---|
| Cada tick basado en ticks reales | ticks reales acumulados por el bróker — no se realiza simulación |
| Cada tick | todos los ticks simulados; el modo simulado más preciso y el más lento |
| 1 minuto OHLC | solo se emulan los cuatro precios de cada barra de un minuto |
| Solo precios de apertura | se modelan OHLC, pero solo se usa la apertura |
| Cálculos matemáticos | sin historial ni ticks; solo se llaman OnInit(), OnTester() y OnDeinit() |
La primera fila no tiene equivalente en la otra plataforma. Con ticks que el bróker registró de verdad, MT5 reproduce el recorrido real dentro de la barra.
Lo que hace Pine en su lugar
Todos los indicadores se ejecutan una vez por barra histórica. [1]
En la barra en tiempo real el comportamiento cambia — el script «se ejecuta no una vez, sino repetidamente en la barra en tiempo real: una por cada nueva actualización (tick)» [1] — y antes de cada una de esas ejecuciones el runtime realiza un rollback que revierte variables y objetos a su último estado confirmado [1]. Los valores de una barra histórica son definitivos; una barra en tiempo real se actualiza a medida que llegan datos [1].
Así que el historial de Pine se evalúa en los límites de cada barra. No hay recorrido intrabarra que reproducir, porque la pasada histórica nunca lo tuvo.
La consecuencia, dicha con claridad
Para cualquier estrategia cuyo resultado dependa de lo que pasó dentro de la barra, las dos plataformas no miden lo mismo:
- un stop y un objetivo que caen dentro del rango de una misma barra — MT5 puede saber cuál llegó primero a partir de ticks reales; Pine debe resolverlo por suposición
- una entrada por ruptura intrabarra, donde el precio de ejecución depende del recorrido
- cualquier cosa disparada mientras la barra aún se está formando
Y para estrategias que deciden solo en cierres confirmados y salen en cierres posteriores, ambas coincidirán bastante, porque no hay pregunta intrabarra que responder.
Esa distinción es la conclusión útil. Hacer que las dos cifras coincidan es el objetivo equivocado: ningún ajuste de parámetros lo logrará. Saber qué motor está suponiendo qué, para tu estrategia concreta, es el objetivo correcto.
En qué confiar para cada pregunta
| Pregunta | Pregunta a |
|---|---|
| ¿Se habría ejecutado a un precio real? | MT5 con ticks reales [2] |
| ¿Hace la lógica lo que quería en los cierres? | cualquiera; Pine itera más rápido |
| ¿Cómo se comporta en 40.000 barras? | TradingView, si tu plan llega hasta ahí |
| ¿Cuánto costó el spread de verdad? | MT5, contra los datos de tu propio bróker |
La última fila es la que la gente se salta. TradingView modela comisión y slippage a partir de lo que declaras; MT5 probado con ticks reales del bróker con el que vas a operar está más cerca de una respuesta que un número que escribiste tú.
El método honesto: reconstruir las reglas una vez
En lugar de traducir instrucciones de Pine, pon las reglas en un formulario que ya sabe cómo maneja cada plataforma las barras, las sesiones y las órdenes, y deja que un generador escriba el archivo para la plataforma que elijas.
En el Strategy Builder de AlfaTactix
El Strategy Builder tiene 7 pasos y 47 tipos de indicador, hasta 3 temporalidades y hasta 8 filtros, para MetaTrader 5 (MQL5) y TradingView (Pine Script v6). Introduces las reglas de entrada, los filtros, las salidas y el riesgo una vez, a partir de tu especificación escrita.
- El paso 1 fija la plataforma. Elige MetaTrader 5 para obtener un Expert Advisor de MQL5.
- Cambiar de plataforma es un botón. Pulsa "Cambiar" junto a la plataforma en el paso 1. Antes de cambiar, el formulario muestra los ajustes que la otra plataforma no ofrece y cómo cambian.
- Una plataforma a la vez. Una estrategia se genera para MQL5 o para Pine Script v6, no para las dos a la vez.
- Código legible. El código generado no usa los indicadores integrados de la plataforma: cada indicador está escrito en el código que descargas, así que puedes leerlo.
Los resultados serán distintos entre plataformas
MetaTrader 5 y TradingView leen dos fuentes de precios distintas, así que no se afirma una coincidencia exacta entre ellas: entre el 82 y el 95 % de las entradas cayeron a la misma hora y en el mismo sentido (R1 94 %, R2 82 %, R3 88 %, R5 94 %, R6 95 %). Sobre las mismas velas cada plataforma coincide con el motor, así que el resto viene de los datos: un cruce por un punto o dos, un filtro de volumen sobre dos recuentos de ticks distintos, una salida una hora antes o después que cambia la posición siguiente.
La página del motor de backtest explica cómo se hicieron esas comparaciones.
Un orden sensato de pruebas tras el cambio
- Fija primero el instrumento, la temporalidad y el rango de fechas en la nueva plataforma.
- Comprueba las condiciones de entrada y salida sobre cierres confirmados.
- Compara los recuentos de operaciones antes que nada. Si difieren mucho, la lógica difiere, y comparar curvas de capital es prematuro.
- Fija los costes solo entonces, en las unidades propias de la nueva plataforma.
- Espera la brecha restante y localízala, en lugar de intentar cerrarla.
Puedes hacer el backtest de las reglas en el sitio antes de abrir MetaTrader 5: el backtest se ejecuta en el sitio, y no necesitas MetaTrader 5 ni TradingView para el backtest. Los backtests usan los datos que subes, en cualquier temporalidad hasta un minuto; cuántos días cubre una ejecución depende de tu plan. El backtest está abierto en todos los planes, también en el plan Free.
Siguiente paso: mira lo que produce el constructor de EA para MT5, o crea una cuenta gratis y reconstruye tu estrategia de TradingView en el paso 1 con MetaTrader 5 seleccionado.
Elige según lo que tiene que ser cierto
Las comparaciones de características entre MQL5 y Pine son largas y rara vez deciden nada, porque ambas plataformas pueden expresar casi cualquier estrategia basada en reglas. Una pregunta más corta lo decide: ¿qué tiene que ser cierto para que tu estrategia merezca ejecutarse?
| Si esto tiene que ser cierto | Elige | Porque |
|---|---|---|
| «se habría ejecutado a un precio real» | MetaTrader 5 | su tester puede reproducir ticks reales del bróker sin simulación [2] |
| «puedo iterar rápido sobre la idea» | TradingView | el script corre en el gráfico sin paso de compilación, y un cambio está a un guardado |
| «el coste del spread es el de mi bróker, no una estimación» | MetaTrader 5 | probado con los datos del bróker con el que vas a operar |
| «aguanta decenas de miles de barras» | TradingView, si tu plan llega | hasta 40.000 barras en el nivel superior [6] |
| «nada mío tiene que quedarse encendido» | TradingView | el script corre en el gráfico, no en una máquina que mantengas |
| «tiene que poner órdenes sin mí» | MetaTrader 5 | una alerta de Pine es una notificación, no una orden [7] |
Esa última fila es la que zanja la mayoría de estos debates, y merece precisión.
La línea que Pine no cruza
Una estrategia de Pine puede lanzar alertas, y una alerta creada desde una estrategia puede configurarse para que los eventos de ejecución de órdenes también la disparen [7]. Pero una alerta es una notificación. Pasar de una alerta disparada a una posición abierta requiere una integración con el bróker, y el retardo entre ambas es tuyo.
Un Expert Advisor de MQL5 es distinto en naturaleza: se ejecuta dentro de un terminal conectado a tu cuenta, y envía las órdenes él mismo. Esa es la distinción real — no las características del lenguaje, ni la cobertura de indicadores.
Y el detalle que atrapa a todos una vez:
Las alertas solo se disparan en la barra en tiempo real. [7]
Un backtest que muestra doscientas operaciones produce cero alertas. Las ejecuciones históricas son una reproducción; las alertas son eventos en tiempo real.
Qué te pide cada uno a cambio
Ninguno es gratis, y los costes son de distinta naturaleza.
MetaTrader 5 necesita un terminal funcionando en una máquina que controlas, lo que significa que esa máquina tiene que seguir encendida y conectada — de ahí el VPS que asumen casi todas las guías de EA. También hace que tu backtest sea solo tan bueno como el historial de ticks que tu bróker haya publicado, que varía. Ver desplegar y mantener un EA.
TradingView ata cuánto historial puedes probar a tu nivel de suscripción [6],
y acota cada script: hasta 40 llamadas request.* únicas (64 en el plan
superior), 64 recuentos de plot, y 20 segundos de ejecución en cuentas básicas,
40 en las demás [6]. Son generosos para una estrategia basada en reglas y son
techos reales para cualquier cosa elaborada.
El resumen honesto
Usa TradingView para averiguar si una idea vale algo, porque iterar es rápido y el gráfico te lo dice de inmediato. Usa MetaTrader 5 para averiguar si sobrevive a ejecuciones reales, porque solo él puede probar contra ticks que de verdad ocurrieron.
No son competidores para el mismo trabajo, y que sus backtests no puedan coincidir es una propiedad de los motores, no un defecto de ninguno.

