Misma estrategia en MT5 vs TradingView (mapa de features)

Qué mapea (MA/RSI/MACD/BB/Stoch/CCI) y qué no en Basic (ADX/SuperTrend/noticias/MTF) — enlaces hermanos entre hubs.

📖 7 min read

📝 1,272 words

🏷️ Pine Script and TradingView

Compartir este artículo:

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ú.


Lo que no se transfiere

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 y se miden de forma distinta, porque esos pasan en silencio.

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
Capitalinitial_capital [3]el depósito del tester, más un ajuste de apalancamiento

Copiar un slippage de 3 de un lado a otro es el caso clásico. Tres ticks y tres puntos son distancias distintas, y nada te avisa.

Zonas horarias y sesiones

Una cadena de sesión de Pine se interpreta en la zona horaria del mercado, no del gráfico — por eso nuestro propio generador emite hour(time, "UTC") en su lugar. MT5 tiene otro problema: la hora del servidor es la del bróker, y normalmente no es ni UTC ni la tuya, y cambia con las reglas de horario de verano del propio bróker.

Una estrategia que opera la apertura de Londres necesita por tanto que su sesión se vuelva a derivar en cada plataforma, no que se copie. Las reglas de los filtros de sesión cubren el lado de Pine.

El historial, y cuánto te dan

En TradingView el número de barras históricas disponibles depende de tu plan de cuenta [3] — ver ejecutar y mantener una estrategia para la tabla. En MT5 depende de lo que tu bróker haya publicado y de lo que hayas descargado, y el historial de ticks reales suele ser mucho más corto que el de barras [2].

El resultado práctico es que rara vez comparas el mismo rango de fechas. Fija el rango explícitamente en ambos lados antes de comparar nada, o la comparación no significa nada.

El modelo de ejecución en sí

Este es el que se transfiere sin darse cuenta. El código MQL5 se organiza en torno a manejadores de eventos: OnTick() se dispara con cada nueva cotización. Pine no tiene tal manejador: el script se ejecuta una vez por barra histórica [1] 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 MQL5 que cuenta ticks, o que actúa en la n-ésima cotización dentro de una barra, no tiene traducción directa a Pine. Hay que reexpresarla en términos de barras, o de una petición a temporalidad inferior — y esa reexpresión es un cambio en la estrategia, no una traducción de ella.

Un orden sensato para portar

  1. Fija primero el instrumento, la temporalidad y el rango de fechas en ambas plataformas
  2. Porta solo las condiciones de entrada y salida, sobre cierres confirmados
  3. Confirma que los dos recuentos de operaciones están en el mismo orden de magnitud antes de mirar el beneficio — si difieren mucho, la lógica difiere, y comparar rentabilidades es prematuro
  4. Solo entonces fija los costes, por separado, en las unidades propias de cada plataforma
  5. Espera la brecha restante y localízala, en lugar de intentar cerrarla

El paso 3 merece insistencia. Dos curvas de capital invitan a la comparación y no te dicen casi nada; dos recuentos de operaciones te dicen si portaste la estrategia o escribiste una nueva.



Tactix AI en este flujo

AlfaTactix incluye Tactix AI: usa Tactix Studio para describir tu idea en lenguaje natural y rellenar timeframes, señales, filtros y riesgo en el mismo formulario de seis pasos — o abre Tactix Guide en cualquier paso si solo necesitas explicar un campo. Revisa cada valor y luego exporta MQL5 o Pine Script desde Code Generator (form-first — no prompt-to-code sin probar).

Preguntas frecuentes

Misma idea, distinto runtime. Cuándo usar cuál.

Fuera de Basic en esta pista. Ver mapa.

MA, RSI, MACD, BB, Stoch, CCI. Sin noticias en Basic Pine.

No.

Suelen ser MT5. Cuándo cuál.