Estrategia de TradingView a MT5: pasar Pine Script a MQL5

Por qué Pine Script no se convierte a MQL5 línea a línea (ejecuciones, barras, request.security, repintado) y cómo reconstruir las reglas una vez para MetaTrader 5.

📖 15 min de lectura

📝 2,869 palabras

🏷️ Pine Script y TradingView

Compartir este artículo:

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:

  1. Escribe la estrategia como reglas: entrada, salida, filtros, sesiones y riesgo, todo con números.
  2. 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).
  3. 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.
  4. 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

AjusteEn TradingViewEn MetaTrader 5
Slippageslippage, contado en ticks [3]desviación en puntos, y un punto no es un tick
Comisióncommission_value, leído según commission_type [3]por lote, desde la especificación del contrato del bróker
Tamaño de posicióndefault_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ónuna cadena de sesión, leída en la zona horaria del mercadola 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 realesticks reales acumulados por el bróker — no se realiza simulación
Cada ticktodos los ticks simulados; el modo simulado más preciso y el más lento
1 minuto OHLCsolo se emulan los cuatro precios de cada barra de un minuto
Solo precios de aperturase modelan OHLC, pero solo se usa la apertura
Cálculos matemáticossin 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

PreguntaPregunta 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

  1. Fija primero el instrumento, la temporalidad y el rango de fechas en la nueva plataforma.
  2. Comprueba las condiciones de entrada y salida sobre cierres confirmados.
  3. Compara los recuentos de operaciones antes que nada. Si difieren mucho, la lógica difiere, y comparar curvas de capital es prematuro.
  4. Fija los costes solo entonces, en las unidades propias de la nueva plataforma.
  5. 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 ciertoEligePorque
«se habría ejecutado a un precio real»MetaTrader 5su tester puede reproducir ticks reales del bróker sin simulación [2]
«puedo iterar rápido sobre la idea»TradingViewel 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 5probado con los datos del bróker con el que vas a operar
«aguanta decenas de miles de barras»TradingView, si tu plan llegahasta 40.000 barras en el nivel superior [6]
«nada mío tiene que quedarse encendido»TradingViewel script corre en el gráfico, no en una máquina que mantengas
«tiene que poner órdenes sin mí»MetaTrader 5una 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.

Preguntas frecuentes

No de forma fiable línea a línea. Pine se ejecuta una vez por barra histórica y MQL5 reacciona a cada cotización, así que las ejecuciones, el manejo de barras, request.security y el repintado se comportan de otra forma. Reconstruye las reglas una vez en un formulario y deja que el generador escriba el Expert Advisor de MQL5.

No se afirma una coincidencia exacta. MetaTrader 5 y TradingView leen dos fuentes de precios distintas: entre el 82 y el 95 % de las entradas cayeron a la misma hora y en el mismo sentido. Vuelve a probar en la nueva plataforma y compara primero los recuentos de operaciones.

No. Una estrategia se genera para una sola plataforma a la vez, MQL5 o Pine Script v6. Para pasarla, pulsa "Cambiar" junto a la plataforma en el paso 1; antes, el formulario muestra los ajustes que la otra plataforma no ofrece y cómo cambian.

Los 47 tipos de indicador del Strategy Builder están disponibles para MetaTrader 5 y para TradingView, entre ellos MA, RSI, MACD, Bandas de Bollinger, Estocástico y CCI. Lo difícil al portar no es el indicador sino las unidades, las sesiones y las ejecuciones que lo rodean.

No. El backtest se ejecuta en el sitio: no necesitas MetaTrader 5 ni TradingView para el backtest. Confirma el resultado en el Probador de Estrategias de MetaTrader 5 antes de operarla.

Muchos desafíos y prop firms se organizan en torno a MetaTrader 5. Confirma las reglas de tu firma; no supongas que una estrategia de TradingView las cumple. Ver reglas de prop firms para un EA.