{"id":15733,"date":"2026-10-31T20:42:04","date_gmt":"2026-10-31T20:42:04","guid":{"rendered":"https:\/\/bjftradinggroup.com\/?p=15733"},"modified":"2026-10-31T20:42:04","modified_gmt":"2026-10-31T20:42:04","slug":"forex-tick-data-backtesting","status":"publish","type":"post","link":"https:\/\/bjftradinggroup.com\/es\/forex-tick-data-backtesting\/","title":{"rendered":"Datos de tick de forex para backtesting: fuentes, controles de calidad y errores frecuentes"},"content":{"rendered":"<p><\/p>\n<div class=\"ftd-page\">\n<div class=\"ftd-hero\">\n<span class=\"ftd-hero-tag\">BJF TRADING GROUP \u00b7 BACKTESTING EN FOREX<\/span><\/p>\n<h2>Datos de tick de forex para backtesting: <span class=\"ftd-gold\">fuentes, controles de calidad y errores frecuentes<\/span><\/h2>\n<p class=\"ftd-hero-sub\">Un backtest solo puede ser tan honesto como los precios con los que lo alimentas. Para scalping, arbitraje y cualquier estrategia que vive dentro de unos pocos pips, las barras de un minuto no bastan: necesitas la secuencia real de cotizaciones bid y ask. Esta gu\u00eda explica de d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 dos conjuntos de datos del mismo par nunca coinciden, qu\u00e9 controles de calidad hacer antes de fiarte de un resultado y c\u00f3mo convertir ticks en bruto en una prueba que se parezca al trading real.<\/p>\n<\/div>\n<div class=\"ftd-toc\">\n<strong>En esta gu\u00eda<\/strong><\/p>\n<ol>\n<li><a href=\"#ftd-what\">Qu\u00e9 son los datos de tick de forex<\/a><\/li>\n<li><a href=\"#ftd-bars\">Datos de tick vs datos de barras: lo que oculta la interpolaci\u00f3n<\/a><\/li>\n<li><a href=\"#ftd-sources\">De d\u00f3nde vienen los datos de tick de forex<\/a><\/li>\n<li><a href=\"#ftd-feeds\">El feed de tu br\u00f3ker vs un feed de referencia<\/a><\/li>\n<li><a href=\"#ftd-time\">Marcas de tiempo, zonas horarias y horario de verano<\/a><\/li>\n<li><a href=\"#ftd-quality\">Controles de calidad antes de fiarte de un conjunto de datos<\/a><\/li>\n<li><a href=\"#ftd-steps\">Paso a paso: c\u00f3mo preparar datos de tick para un backtest<\/a><\/li>\n<li><a href=\"#ftd-spread\">Spread variable: el coste que oculta un spread fijo<\/a><\/li>\n<li><a href=\"#ftd-impact\">Cu\u00e1nto cambia el resultado seg\u00fan la hip\u00f3tesis sobre los datos<\/a><\/li>\n<li><a href=\"#ftd-exec\">Los ticks son necesarios, pero no suficientes: el tiempo de ejecuci\u00f3n<\/a><\/li>\n<li><a href=\"#ftd-storage\">Almacenamiento, formatos y manejo<\/a><\/li>\n<li><a href=\"#ftd-pitfalls\">Errores frecuentes<\/a><\/li>\n<li><a href=\"#ftd-faq\">Preguntas frecuentes<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"ftd-what\">Qu\u00e9 son los datos de tick de forex<\/h2>\n<p class=\"ftd-answer\"><strong>Respuesta corta:<\/strong> los datos de tick de forex son el registro de cada cambio de cotizaci\u00f3n en un par de divisas: una marca de tiempo (normalmente en milisegundos), el precio bid, el precio ask y, a veces, el volumen cotizado en cada lado. A diferencia de los datos de barras, que solo guardan la apertura, el m\u00e1ximo, el m\u00ednimo y el cierre de cada periodo, los datos de tick conservan el orden, el momento y el spread de cada actualizaci\u00f3n de precio, que es justo con lo que opera una estrategia de corto plazo.<\/p>\n<p>Una fila t\u00edpica tiene este aspecto:<\/p>\n<div class=\"ftd-code\">2026.10.14 08:00:00.137, 1.08512, 1.08519, 1.50, 2.25<\/div>\n<p>Es decir: la hora, el bid, el ask y el volumen disponible en el bid y en el ask (en millones, si la fuente lo proporciona). El spread en este tick es de 0.7 pips. Un segundo despu\u00e9s puede haber cinco filas m\u00e1s, o ninguna.<\/p>\n<p>Hay algo que debes entender antes que nada: <strong>el mercado forex al contado no tiene una cinta central<\/strong>. Las acciones y los futuros tienen una bolsa que publica la secuencia oficial de operaciones. El forex se negocia en mercados extraburs\u00e1tiles entre muchos bancos, ECN y br\u00f3kers, y cada uno de ellos transmite sus propias cotizaciones. Por eso, todo conjunto de datos de tick de forex es la visi\u00f3n del mercado de un \u00fanico centro de ejecuci\u00f3n o de un \u00fanico agregador. Dos fuentes pueden discrepar en una fracci\u00f3n de pip y en decenas de milisegundos en el mismo instante, y ambas pueden ser correctas para su propio centro.<\/p>\n<p>Este hecho gu\u00eda la mayor parte de esta gu\u00eda. \u00ab\u00bfSon precisos estos datos de tick?\u00bb es la pregunta equivocada. Las preguntas \u00fatiles son: precisos <em>para qu\u00e9 centro de ejecuci\u00f3n<\/em>, registrados <em>c\u00f3mo<\/em> y limpiados <em>c\u00f3mo<\/em>.<\/p>\n<h3>Ticks de cotizaci\u00f3n vs ticks de operaciones<\/h3>\n<p>La mayor\u00eda de los conjuntos de datos de forex est\u00e1n formados por <strong>ticks de cotizaci\u00f3n<\/strong>: cambios del mejor bid o del mejor ask. No son operaciones. Una cotizaci\u00f3n puede cambiar diez veces sin una sola operaci\u00f3n, y una operaci\u00f3n grande puede no alterar en absoluto la parte superior del libro. Algunos datos de FX basados en futuros o negociados en bolsa contienen <strong>ticks de operaciones<\/strong> (\u00faltimo precio y tama\u00f1o), pero para hacer backtesting de forex al contado necesitas cotizaciones bid y ask, porque es contra ellas contra lo que se ejecutar\u00e1n tus \u00f3rdenes: compras en el ask, ventas en el bid.<\/p>\n<h2 id=\"ftd-bars\">Datos de tick vs datos de barras: lo que oculta la interpolaci\u00f3n<\/h2>\n<p>Muchas herramientas de backtesting que dicen probar \u00abcada tick\u00bb no usan ticks registrados en absoluto. Toman barras de un minuto y <strong>generan<\/strong> ticks sint\u00e9ticos dentro de cada barra, normalmente un recorrido suave desde la apertura hasta el m\u00e1ximo y el m\u00ednimo y luego hasta el cierre. El resultado parece datos de tick, pero no contiene ninguna informaci\u00f3n que la barra no tuviera ya.<\/p>\n<figure class=\"ftd-figure\"><img decoding=\"async\" src=\"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/interpolated-vs-recorded-ticks-forex-tick-data-backtesting-1760x800-1.webp\" alt=\"Ticks de forex registrados comparados con ticks sint\u00e9ticos interpolados a partir de una barra OHLC de un minuto (ilustrativo)\" width=\"1760\" height=\"800\" loading=\"lazy\"><figcaption>Dentro de un minuto: los ticks bid registrados saltan, se detienen y se revierten; los ticks generados a partir del OHLC de la barra siguen un recorrido suave e inventan el orden del m\u00e1ximo y del m\u00ednimo. Datos ilustrativos.<\/figcaption><\/figure>\n<p>Veamos por qu\u00e9 importa. Toma una barra de un minuto de EUR\/USD: apertura 1.08500, m\u00e1ximo 1.08540, m\u00ednimo 1.08480, cierre 1.08520. Hay una posici\u00f3n larga abierta con take-profit en 1.08530 y stop-loss en 1.08485. Ambos niveles est\u00e1n dentro de la barra. \u00bfLa operaci\u00f3n gan\u00f3 o perdi\u00f3?<\/p>\n<ul class=\"ftd-checks\">\n<li><strong>Si el m\u00ednimo lleg\u00f3 primero<\/strong>, el stop se activ\u00f3 en 1.08485 y la operaci\u00f3n perdi\u00f3 1.5 pips.<\/li>\n<li><strong>Si el m\u00e1ximo lleg\u00f3 primero<\/strong>, el take-profit se activ\u00f3 en 1.08530 y la operaci\u00f3n gan\u00f3 3 pips.<\/li>\n<\/ul>\n<p>La barra no puede dec\u00edrtelo. El generador elige un orden (a menudo con una regla fija, como \u00abuna barra alcista va primero al m\u00ednimo\u00bb), y el backtest muestra un resultado seguro que en parte es lanzar una moneda al aire. Para una estrategia swing con un objetivo de 100 pips esto rara vez importa. Para una estrategia cuyos objetivos y stops est\u00e1n a pocos pips de la entrada, decide una gran parte de las operaciones.<\/p>\n<p>La interpolaci\u00f3n tambi\u00e9n borra tres cosas que los ticks registrados conservan:<\/p>\n<div class=\"ftd-table-wrap\">\n<table class=\"ftd-table\">\n<thead>\n<tr>\n<th>Lo que necesita la estrategia<\/th>\n<th>Ticks registrados<\/th>\n<th>Ticks generados a partir de barras<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Orden del m\u00e1ximo y del m\u00ednimo dentro de un minuto<\/td>\n<td>Exacto<\/td>\n<td>Adivinado por una regla<\/td>\n<\/tr>\n<tr>\n<td>Saltos de precio (un movimiento de 1.5 pip en una sola cotizaci\u00f3n)<\/td>\n<td>Presentes<\/td>\n<td>Suavizados en peque\u00f1os pasos<\/td>\n<\/tr>\n<tr>\n<td>Spread en cada cotizaci\u00f3n<\/td>\n<td>Presente (bid y ask)<\/td>\n<td>Normalmente un spread fijo o un valor por barra<\/td>\n<\/tr>\n<tr>\n<td>Tiempo entre cotizaciones (segundos tranquilos vs agitados)<\/td>\n<td>Presente<\/td>\n<td>Espaciado uniforme o inventado<\/td>\n<\/tr>\n<tr>\n<td>Actividad de cotizaciones en torno a noticias y al rollover<\/td>\n<td>Presente<\/td>\n<td>Perdida<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Los saltos son el punto cr\u00edtico para el <a href=\"https:\/\/bjftradinggroup.com\/latency-arbitrage\/\">arbitraje de latencia<\/a>: la se\u00f1al <em>es<\/em> el salto. Un recorrido sint\u00e9tico que va de 1.08500 a 1.08515 en quince peque\u00f1os pasos no produce ninguna se\u00f1al, as\u00ed que una estrategia que operar\u00eda en real parece muerta en la prueba, o una estrategia que compra retrocesos parece mejor de lo que es.<\/p>\n<h2 id=\"ftd-sources\">De d\u00f3nde vienen los datos de tick de forex<\/h2>\n<p>Hay cinco fuentes realistas. Se diferencian en coste, profundidad y, sobre todo, en lo mucho que se parecen a los precios con los que realmente vas a operar.<\/p>\n<div class=\"ftd-table-wrap\">\n<table class=\"ftd-table\">\n<thead>\n<tr>\n<th>Fuente<\/th>\n<th>Qu\u00e9 obtienes<\/th>\n<th>Ventajas<\/th>\n<th>Limitaciones<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Tu propia grabaci\u00f3n<\/strong> (a trav\u00e9s de la API del br\u00f3ker o una sesi\u00f3n FIX)<\/td>\n<td>Cada cotizaci\u00f3n que recibi\u00f3 tu cuenta, con tu hora local de recepci\u00f3n<\/td>\n<td>Coincidencia exacta con tu centro de ejecuci\u00f3n; t\u00fa controlas las marcas de tiempo y el formato<\/td>\n<td>Empieza solo cuando empiezas a grabar; necesita una m\u00e1quina estable; huecos si se cae la conexi\u00f3n<\/td>\n<\/tr>\n<tr>\n<td><strong>Descarga del historial del br\u00f3ker<\/strong><\/td>\n<td>Bid\/ask hist\u00f3rico del propio feed del br\u00f3ker<\/td>\n<td>Cercano a tu centro de ejecuci\u00f3n; a menudo a\u00f1os de historial<\/td>\n<td>La calidad var\u00eda; algunos br\u00f3kers reducen o filtran los ticks antiguos; las marcas de tiempo pueden estar en hora del servidor<\/td>\n<\/tr>\n<tr>\n<td><strong>Archivos p\u00fablicos gratuitos<\/strong> (ofrecidos por algunos br\u00f3kers ECN y agregadores, p. ej. Dukascopy, TrueFX, HistData.com)<\/td>\n<td>Ticks bid\/ask de los pares principales, a menudo desde los a\u00f1os 2000<\/td>\n<td>Gratuitos, historial largo, buenos para investigaci\u00f3n y pruebas de robustez<\/td>\n<td>La visi\u00f3n de un centro o agregador, no la tuya; los spreads y la frecuencia de cotizaciones difieren de los de tu br\u00f3ker; revisa la convenci\u00f3n de zona horaria de cada fuente<\/td>\n<\/tr>\n<tr>\n<td><strong>Proveedores comerciales de datos<\/strong><\/td>\n<td>Historial de ticks limpio, normalizado y de varios centros<\/td>\n<td>Metodolog\u00eda documentada, formatos coherentes, soporte<\/td>\n<td>Caros; aun as\u00ed no es el feed de tu br\u00f3ker<\/td>\n<\/tr>\n<tr>\n<td><strong>Feeds de referencia \/ r\u00e1pidos<\/strong> (p. ej. el historial de ticks de BJF Feed desde los nodos de Londres, Tokio y Nueva York)<\/td>\n<td>Un flujo de precios de referencia r\u00e1pido e independiente<\/td>\n<td>Necesarios para probar estrategias que comparan un feed lento con uno r\u00e1pido<\/td>\n<td>Hay que combinarlos con los ticks del propio br\u00f3ker en las pruebas de arbitraje<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>La regla pr\u00e1ctica: <strong>usa el historial limpio m\u00e1s largo que puedas conseguir para investigar, y los datos m\u00e1s cercanos a tu centro de ejecuci\u00f3n para la decisi\u00f3n final.<\/strong> Una estrategia que solo funciona en un archivo gratuito y falla con los ticks registrados de tu br\u00f3ker no funciona. Una estrategia que se sostiene en ambos, con costes realistas, ha superado una prueba significativa.<\/p>\n<p>Si piensas operar una estrategia durante meses, empieza a grabar hoy los ticks de tu br\u00f3ker, incluso antes de terminar la estrategia. Tres meses de tu propio feed valen m\u00e1s para la comprobaci\u00f3n final que diez a\u00f1os del feed de otro.<\/p>\n<h2 id=\"ftd-feeds\">El feed de tu br\u00f3ker vs un feed de referencia<\/h2>\n<p>Como cada centro transmite sus propias cotizaciones, el mismo instante se ve algo distinto desde lugares distintos. Las diferencias tienen una estructura:<\/p>\n<ul class=\"ftd-checks\">\n<li><strong>Desfase de precio.<\/strong> Los precios medios suelen coincidir dentro de una fracci\u00f3n de pip en las horas l\u00edquidas y se separan en mercados poco l\u00edquidos, en el rollover y en torno a las noticias.<\/li>\n<li><strong>Desfase temporal.<\/strong> Un br\u00f3ker que agrega precios de proveedores de liquidez, aplica su propio margen y ejecuta controles de riesgo suele mostrar un movimiento m\u00e1s tarde que un feed de referencia r\u00e1pido. El retraso puede ser de unos pocos milisegundos o de varios cientos.<\/li>\n<li><strong>Frecuencia de cotizaciones.<\/strong> Algunos feeds env\u00edan cada cambio, otros limitan la frecuencia (por ejemplo, como m\u00e1ximo una actualizaci\u00f3n cada 100 ms por s\u00edmbolo). Un feed limitado tiene menos ticks y saltos m\u00e1s grandes.<\/li>\n<li><strong>Perfil de spread.<\/strong> Un feed ECN en bruto y un feed minorista con margen pueden diferir en un pip entero de spread medio y en mucho m\u00e1s en el rollover.<\/li>\n<\/ul>\n<figure class=\"ftd-figure\"><img decoding=\"async\" src=\"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/broker-vs-reference-feed-forex-tick-data-backtesting-1760x800-1.webp\" alt=\"Dos feeds de forex en el mismo minuto: el feed de referencia adelantado al feed del br\u00f3ker, con la distribuci\u00f3n del retraso (ilustrativo)\" width=\"1760\" height=\"800\" loading=\"lazy\"><figcaption>Mismo par, mismo minuto, dos feeds. El feed del br\u00f3ker repite los movimientos de la referencia con retraso y menos actualizaciones; el panel derecho muestra la distribuci\u00f3n de ese retraso. Datos ilustrativos, no una medici\u00f3n de ning\u00fan br\u00f3ker concreto.<\/figcaption><\/figure>\n<p>Para la mayor\u00eda de las estrategias, esto significa que debes probar con el feed con el que vas a operar. Para el arbitraje de latencia significa algo m\u00e1s: la ventaja de la estrategia <em>es<\/em> la diferencia entre dos feeds, as\u00ed que necesitas ambos flujos, registrados con marcas de tiempo del mismo reloj. Probar una estrategia de arbitraje con los ticks de un solo proveedor no tiene sentido. Describimos c\u00f3mo comparar feeds tick a tick en nuestro art\u00edculo sobre la <a href=\"https:\/\/bjftradinggroup.com\/the-critical-role-of-tick-comparison-in-forex-arbitrage-and-high-frequency-trading-hft\/\">comparaci\u00f3n de ticks en el arbitraje de forex y el HFT<\/a>, y por qu\u00e9 el lado de referencia tiene que ser r\u00e1pido en la gu\u00eda sobre <a href=\"https:\/\/bjftradinggroup.com\/fast-feed-for-arbitrage\/\">feeds de datos r\u00e1pidos para arbitraje<\/a>.<\/p>\n<h2 id=\"ftd-time\">Marcas de tiempo, zonas horarias y horario de verano<\/h2>\n<p>Los problemas de marcas de tiempo causan m\u00e1s errores silenciosos en los backtests que los precios err\u00f3neos. Cuatro cosas que comprobar:<\/p>\n<h3>1. \u00bfEn qu\u00e9 zona horaria est\u00e1n los datos?<\/h3>\n<p>Las convenciones habituales son UTC\/GMT, la hora del este de EE. UU. (con o sin horario de verano) y la \u00abhora del servidor\u00bb del br\u00f3ker, que muchos br\u00f3kers fijan en GMT+2 en invierno y GMT+3 en verano para que la jornada de trading cierre a las 17:00 hora de Nueva York. Si tu estrategia dice \u00aboperar la apertura de Londres a las 08:00\u00bb, un desfase de una hora significa que opera en otro r\u00e9gimen de mercado.<\/p>\n<h3>2. \u00bfSe aplica el horario de verano, y el de qui\u00e9n?<\/h3>\n<p>Europa y Estados Unidos cambian la hora en fechas distintas. Durante unas tres semanas en marzo y una semana entre finales de octubre y principios de noviembre, la diferencia entre Londres y Nueva York es de cuatro horas en lugar de cinco. Un conjunto de datos convertido con la regla equivocada desplaza una hora la l\u00f3gica basada en sesiones durante esas semanas. El error es peque\u00f1o, estacional y muy dif\u00edcil de detectar en una curva de capital.<\/p>\n<h3>3. \u00bfD\u00f3nde se tom\u00f3 la marca de tiempo?<\/h3>\n<p>Un tick puede llevar la hora en que el centro gener\u00f3 la cotizaci\u00f3n, la hora en que sali\u00f3 del servidor del centro o la hora en que la recibi\u00f3 tu m\u00e1quina. Para una estrategia de tendencia la diferencia no importa. Para las estrategias sensibles a la latencia es la cuesti\u00f3n central: dos feeds solo se pueden comparar si ambos est\u00e1n marcados con el mismo reloj, idealmente tu propia hora de recepci\u00f3n sincronizada con NTP o PTP.<\/p>\n<h3>4. Resoluci\u00f3n y orden<\/h3>\n<p>Las marcas de tiempo con resoluci\u00f3n de segundos no bastan para el trabajo de corto plazo: decenas de cotizaciones pueden compartir el mismo segundo, y su orden dentro de \u00e9l puede perderse al ordenar. Usa resoluci\u00f3n de milisegundos (o m\u00e1s fina) y conserva el orden original del archivo como criterio de desempate.<\/p>\n<h2 id=\"ftd-quality\">Controles de calidad antes de fiarte de un conjunto de datos<\/h2>\n<p>Los datos de tick en bruto siempre contienen errores. El objetivo no es la perfecci\u00f3n, sino saber qu\u00e9 hay en los datos y eliminar lo que distorsionar\u00eda la prueba. Estos son los controles que aplicamos a cualquier conjunto de datos nuevo antes de usarlo en una optimizaci\u00f3n:<\/p>\n<div class=\"ftd-table-wrap\">\n<table class=\"ftd-table\">\n<thead>\n<tr>\n<th>Control<\/th>\n<th>Qu\u00e9 buscar<\/th>\n<th>Acci\u00f3n habitual<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Tiempo mon\u00f3tono<\/td>\n<td>Marcas de tiempo que retroceden<\/td>\n<td>Reordenar solo si se conoce la causa; si no, marcar el archivo<\/td>\n<\/tr>\n<tr>\n<td>Duplicados<\/td>\n<td>Filas id\u00e9nticas (misma hora, bid, ask)<\/td>\n<td>Eliminar los duplicados exactos; conservar precios repetidos con horas distintas<\/td>\n<\/tr>\n<tr>\n<td>Spread cruzado o cero<\/td>\n<td>Ask &le; bid<\/td>\n<td>Eliminar; los casos frecuentes apuntan a una fuente defectuosa o a feeds mezclados<\/td>\n<\/tr>\n<tr>\n<td>Spread an\u00f3malo<\/td>\n<td>Spread superior a, por ejemplo, 10&times; la mediana horaria fuera de eventos conocidos<\/td>\n<td>Marcar; conservar si coincide con el rollover o con noticias, eliminar si es aislado<\/td>\n<\/tr>\n<tr>\n<td>Picos de precio<\/td>\n<td>Un salto del precio medio de muchas veces la volatilidad reciente que se revierte en pocos ticks<\/td>\n<td>Eliminar los picos aislados; nunca filtrar movimientos reales de noticias<\/td>\n<\/tr>\n<tr>\n<td>Huecos<\/td>\n<td>Ning\u00fan tick durante m\u00e1s de 60 segundos en horas l\u00edquidas<\/td>\n<td>Mapear los huecos; excluir esos periodos de la prueba o marcar las operaciones que caigan dentro<\/td>\n<\/tr>\n<tr>\n<td>Cotizaciones congeladas<\/td>\n<td>El mismo bid\/ask repetido durante minutos mientras otras fuentes se mueven<\/td>\n<td>Tratar como un hueco<\/td>\n<\/tr>\n<tr>\n<td>Ticks de fin de semana y festivos<\/td>\n<td>Cotizaciones entre el cierre del viernes y la apertura del domingo<\/td>\n<td>Eliminar, o revisar la zona horaria si aparece ah\u00ed una hora entera<\/td>\n<\/tr>\n<tr>\n<td>Densidad de ticks<\/td>\n<td>Ticks por hora comparados con la misma hora de otros d\u00edas<\/td>\n<td>Una ca\u00edda repentina sugiere limitaci\u00f3n de frecuencia o un problema de grabaci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Escala de precio y d\u00edgitos<\/td>\n<td>Cotizaciones de 4 vs 5 d\u00edgitos, pares con JPY con 3 decimales<\/td>\n<td>Normalizar antes de combinar fuentes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Una regla sencilla y robusta para los picos: calcula la desviaci\u00f3n absoluta mediana (MAD) m\u00f3vil de los cambios del precio medio en los \u00faltimos 200 ticks; marca cualquier tick cuyo cambio supere unas 15&times; la MAD <em>y<\/em> se revierta en su mayor parte en los tres ticks siguientes. Un movimiento real por noticias no se revierte en tres ticks; una cotizaci\u00f3n err\u00f3nea normalmente s\u00ed. Ajusta los umbrales para cada par y revisa lo que eliminas, porque un filtro demasiado agresivo borra justo los movimientos que necesita una estrategia de arbitraje o de noticias.<\/p>\n<div class=\"ftd-box\"><strong>Lleva un registro.<\/strong> Anota cu\u00e1ntas filas elimin\u00f3 o marc\u00f3 cada control por mes. Si un mes pierde el 8% de sus ticks mientras los dem\u00e1s pierden el 0.1%, ese mes tiene un problema de fuente, y cualquier resultado de estrategia que dependa de \u00e9l es sospechoso.<\/div>\n<h2 id=\"ftd-steps\">Paso a paso: c\u00f3mo preparar datos de tick para un backtest<\/h2>\n<figure class=\"ftd-figure\"><img decoding=\"async\" src=\"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/tick-data-cleaning-pipeline-forex-tick-data-backtesting-1760x800-1.webp\" alt=\"Proceso de limpieza de datos de tick de forex, desde los archivos en bruto hasta un conjunto de datos validado para backtest\" width=\"1760\" height=\"800\" loading=\"lazy\"><figcaption>De los archivos en bruto a un conjunto de datos fiable: cada etapa corrige un problema conocido o lo registra.<\/figcaption><\/figure>\n<div class=\"ftd-steps\">\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">1<\/span><\/p>\n<div><strong>Elige la fuente seg\u00fan la pregunta.<\/strong> Historial gratuito largo para investigaci\u00f3n y robustez; los ticks registrados de tu br\u00f3ker para la comprobaci\u00f3n final; adem\u00e1s, un feed de referencia si la estrategia compara feeds.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">2<\/span><\/p>\n<div><strong>Normaliza las marcas de tiempo.<\/strong> Convierte todo a UTC con resoluci\u00f3n de milisegundos, aplica la regla de horario de verano correcta de la fuente y conserva el orden original como criterio de desempate.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">3<\/span><\/p>\n<div><strong>Normaliza los precios.<\/strong> El mismo n\u00famero de d\u00edgitos por s\u00edmbolo, bid y ask en columnas separadas, nada de datos solo con precio medio si la estrategia paga el spread.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">4<\/span><\/p>\n<div><strong>Elimina los errores evidentes.<\/strong> Duplicados exactos, spreads cruzados o cero, ticks de fin de semana, picos aislados que se revierten.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">5<\/span><\/p>\n<div><strong>Mapea los huecos y los periodos congelados.<\/strong> Gu\u00e1rdalos como una lista de intervalos excluidos en lugar de rellenarlos con precios inventados.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">6<\/span><\/p>\n<div><strong>Contrasta con una segunda fuente.<\/strong> Compara precios medios y spreads por hora con otro conjunto de datos; las diferencias grandes y persistentes indican un problema de escala, de zona horaria o de feed.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">7<\/span><\/p>\n<div><strong>Divide el periodo.<\/strong> Reserva una ventana fuera de muestra (por ejemplo, el \u00faltimo 25%) y un calendario walk-forward antes de optimizar nada.<\/div>\n<\/div>\n<div class=\"ftd-step\"><span class=\"ftd-step-n\">8<\/span><\/p>\n<div><strong>Define las hip\u00f3tesis de ejecuci\u00f3n.<\/strong> Spread variable a partir de los ticks, tu tiempo de ejecuci\u00f3n real en milisegundos, comisi\u00f3n por lote. Despu\u00e9s ejecuta la prueba.<\/div>\n<\/div>\n<\/div>\n<h2 id=\"ftd-spread\">Spread variable: el coste que oculta un spread fijo<\/h2>\n<p>Muchas pruebas usan un \u00fanico valor de spread, por ejemplo 0.8 pips para EUR\/USD. Los spreads reales se mueven todo el d\u00eda: estrechos en el solapamiento de Londres y Nueva York, m\u00e1s amplios en la sesi\u00f3n asi\u00e1tica y de varios pips durante unos minutos en torno al rollover diario y a las publicaciones importantes. Las causas se explican en nuestra gu\u00eda sobre <a href=\"https:\/\/bjftradinggroup.com\/forex-spread-widening\/\">por qu\u00e9 se ampl\u00edan los spreads en forex<\/a>.<\/p>\n<p>Un spread fijo es err\u00f3neo de forma sistem\u00e1tica, porque las estrategias no operan en momentos aleatorios. Una estrategia de ruptura tiende a dispararse cuando sube la volatilidad, que es justo cuando se ampl\u00edan los spreads. Una estrategia de reversi\u00f3n a la media que opera la tranquila sesi\u00f3n asi\u00e1tica encuentra spreads por encima de la media diaria. Con ticks bid\/ask registrados, cada operaci\u00f3n paga el spread que realmente estaba cotizado en ese momento.<\/p>\n<p><strong>Ejemplo pr\u00e1ctico (cifras ilustrativas).<\/strong> Una estrategia de scalping realiza 400 operaciones completas al mes en EUR\/USD con 1 lote est\u00e1ndar (unos $10 por pip).<\/p>\n<div class=\"ftd-cards\">\n<div class=\"ftd-card\"><span class=\"ftd-card-v\">0.8 pip<\/span><span class=\"ftd-card-l\">Spread fijo en la prueba<\/span><span class=\"ftd-card-n\">400 operaciones &times; 0.8 &times; $10 = $3,200 al mes en costes de spread<\/span><\/div>\n<div class=\"ftd-card\"><span class=\"ftd-card-v\">1.1 pip<\/span><span class=\"ftd-card-l\">Spread medio realmente pagado<\/span><span class=\"ftd-card-n\">la estrategia opera con m\u00e1s frecuencia en minutos vol\u00e1tiles: 400 &times; 1.1 &times; $10 = $4,400<\/span><\/div>\n<div class=\"ftd-card\"><span class=\"ftd-card-v\">$1,200<\/span><span class=\"ftd-card-l\">Coste mensual que la prueba pas\u00f3 por alto<\/span><span class=\"ftd-card-n\">por lote; si la ventaja bruta es de 1.5 pips por operaci\u00f3n, un error de 0.3 pip elimina el 20% de ella<\/span><\/div>\n<\/div>\n<p class=\"ftd-note\">La cifra de 1.1 pip es un ejemplo para mostrar el mecanismo, no un valor medido en ning\u00fan br\u00f3ker. Mide en los datos de tick el spread medio que realmente encuentran las operaciones de tu estrategia.<\/p>\n<h2 id=\"ftd-impact\">Cu\u00e1nto cambia el resultado seg\u00fan la hip\u00f3tesis sobre los datos<\/h2>\n<p>Para mostrar el efecto de cada hip\u00f3tesis, el gr\u00e1fico siguiente toma una estrategia hipot\u00e9tica de corto plazo y cambia solo los datos y el modelo de ejecuci\u00f3n. Las cifras son ilustrativas, construidas para reflejar la direcci\u00f3n y el tama\u00f1o aproximado de los efectos que vemos habitualmente al pasar de pruebas basadas en barras a pruebas basadas en ticks con una ejecuci\u00f3n realista. No son los resultados de una estrategia concreta.<\/p>\n<figure class=\"ftd-figure\"><img decoding=\"async\" src=\"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/data-assumption-impact-forex-tick-data-backtesting-1760x800-1.webp\" alt=\"Resultado neto medio por operaci\u00f3n de una estrategia bajo cuatro hip\u00f3tesis de datos y ejecuci\u00f3n, desde barras interpoladas hasta ticks reales con tiempo de ejecuci\u00f3n (ilustrativo)\" width=\"1760\" height=\"800\" loading=\"lazy\"><figcaption>Cada paso a\u00f1ade una parte de realidad: ticks registrados, spread variable y, por \u00faltimo, tiempo de ejecuci\u00f3n. Cifras ilustrativas.<\/figcaption><\/figure>\n<p>Lo que importa es el patr\u00f3n. Cada hip\u00f3tesis realista elimina parte de la ventaja, y el \u00faltimo paso, el tiempo de ejecuci\u00f3n, suele eliminar la mayor parte en las estrategias de corto plazo. Si una estrategia supera los cuatro pasos con un resultado positivo y un n\u00famero razonable de operaciones, merece una peque\u00f1a prueba en real. Si solo se ve bien en la primera columna, la ventaja pertenece al modelo de datos, no al mercado.<\/p>\n<h2 id=\"ftd-exec\">Los ticks son necesarios, pero no suficientes: el tiempo de ejecuci\u00f3n<\/h2>\n<p>Incluso un conjunto de datos de tick perfecto da una prueba optimista si cada orden se ejecuta al precio del tick que la activ\u00f3. En real siempre hay un retraso entre la decisi\u00f3n y la ejecuci\u00f3n: tu plataforma, la red, el procesamiento del br\u00f3ker. Durante ese retraso el mercado sigue movi\u00e9ndose. En un d\u00eda tranquilo el efecto es una fracci\u00f3n de pip; en un movimiento r\u00e1pido es la diferencia entre una operaci\u00f3n ganadora y una perdedora.<\/p>\n<p>El modelo correcto avanza por el flujo de ticks seg\u00fan la parte de solicitud de tu tiempo de ejecuci\u00f3n y ejecuta al bid o al ask que estaba cotizado en ese momento posterior. As\u00ed se obtiene un slippage realista, positivo y negativo, sin inventar una cifra de slippage. Explicamos este modelo, los cuatro componentes de la latencia y un ejemplo pr\u00e1ctico en el art\u00edculo sobre <a href=\"https:\/\/bjftradinggroup.com\/latency-arbitrage-backtest-execution-time-gap\/\">la brecha del tiempo de ejecuci\u00f3n en los backtests de arbitraje de latencia<\/a>, y c\u00f3mo medir el slippage en ejecuciones reales en <a href=\"https:\/\/bjftradinggroup.com\/forex-slippage-explained\/\">el slippage en forex explicado<\/a>.<\/p>\n<p>Esta es tambi\u00e9n la respuesta m\u00e1s habitual a la pregunta \u00ab\u00bfpor qu\u00e9 mis resultados en real difieren del backtest?\u00bb Los datos estaban bien; el modelo de ejecuci\u00f3n supon\u00eda un retraso cero. Una buena regla general es probar con tu tiempo de ejecuci\u00f3n medido y de nuevo con 1.5 a 2 veces ese valor. Una estrategia que se hunde con el valor m\u00e1s alto es fr\u00e1gil.<\/p>\n<h2 id=\"ftd-storage\">Almacenamiento, formatos y manejo<\/h2>\n<p>Los datos de tick ocupan mucho, y el formato que elijas afecta tanto al espacio en disco como a la velocidad con la que un optimizador puede reproducirlos. Una estimaci\u00f3n aproximada para un par principal activo:<\/p>\n<div class=\"ftd-cards\">\n<div class=\"ftd-card\"><span class=\"ftd-card-v\">~39 M<\/span><span class=\"ftd-card-l\">Ticks al a\u00f1o<\/span><span class=\"ftd-card-n\">con unas 150,000 cotizaciones por d\u00eda de trading &times; 260 d\u00edas (los feeds con mucha actividad env\u00edan m\u00e1s, los feeds limitados menos)<\/span><\/div>\n<div class=\"ftd-card\"><span class=\"ftd-card-v\">~2 GB<\/span><span class=\"ftd-card-l\">Como texto CSV<\/span><span class=\"ftd-card-n\">unos 50 bytes por fila con una cadena completa de fecha y hora, bid y ask<\/span><\/div>\n<div class=\"ftd-card\"><span class=\"ftd-card-v\">~0.6 GB<\/span><span class=\"ftd-card-l\">Como binario compacto<\/span><span class=\"ftd-card-n\">marca de tiempo de 8 bytes + dos precios enteros de 4 bytes en puntos = 16 bytes por tick, antes de la compresi\u00f3n<\/span><\/div>\n<\/div>\n<p class=\"ftd-note\">Estimaciones de orden de magnitud. Los formatos columnares comprimidos suelen reducir los archivos de ticks varias veces m\u00e1s.<\/p>\n<ul class=\"ftd-checks\">\n<li><strong>Guarda los precios como enteros en puntos<\/strong> (1.08512 &rarr; 108512). Evita el redondeo de coma flotante al comparar precios y reduce el tama\u00f1o a la mitad.<\/li>\n<li><strong>Particiona por s\u00edmbolo y por d\u00eda.<\/strong> Un archivo por s\u00edmbolo y d\u00eda simplifica las comprobaciones de huecos, las recargas parciales y la optimizaci\u00f3n en paralelo.<\/li>\n<li><strong>No toques los archivos en bruto.<\/strong> Limpia en un conjunto de datos aparte y conserva el registro de limpieza, para poder reproducir cualquier resultado.<\/li>\n<li><strong>Usa CSV para el intercambio.<\/strong> Un formato sencillo con marca de tiempo, bid y ask es lo que importan la mayor\u00eda de las herramientas. SharpTrader Optimizer, por ejemplo, acepta tus propios datos de tick en CSV con marca de tiempo, bid y ask.<\/li>\n<\/ul>\n<h2 id=\"ftd-pitfalls\">Errores frecuentes<\/h2>\n<ul class=\"ftd-checks\">\n<li><strong>Llamar \u00abdatos de tick\u00bb a barras interpoladas.<\/strong> Comprueba si tu herramienta reproduce cotizaciones registradas o las genera a partir de barras.<\/li>\n<li><strong>Probar con precios medios.<\/strong> Un conjunto de datos solo con precio medio ignora por completo el spread; los costes deben salir del bid y del ask.<\/li>\n<li><strong>Mezclar fuentes en una misma prueba.<\/strong> Unir archivos de dos proveedores crea saltos artificiales en la uni\u00f3n y reg\u00edmenes de spread distintos dentro de un mismo periodo.<\/li>\n<li><strong>Ignorar la zona horaria y el horario de verano.<\/strong> Los filtros de sesi\u00f3n y la l\u00f3gica del rollover diario se desplazan sin que lo notes.<\/li>\n<li><strong>Rellenar huecos con precios inventados.<\/strong> Una estrategia puede \u00aboperar\u00bb durante una ca\u00edda que nunca tuvo cotizaciones reales. Excluye los huecos en su lugar.<\/li>\n<li><strong>Limpiar en exceso.<\/strong> Borrar cada movimiento grande elimina los picos por noticias y los saltos que algunas estrategias est\u00e1n dise\u00f1adas para operar.<\/li>\n<li><strong>Ejecuciones con latencia cero.<\/strong> Las ejecuciones perfectas en el tick de la se\u00f1al hacen que casi cualquier estrategia de corto plazo parezca rentable.<\/li>\n<li><strong>Optimizar con todos los datos.<\/strong> Sin un periodo fuera de muestra y comprobaciones walk-forward, una gran rejilla de par\u00e1metros encontrar\u00e1 una curva que se ajusta al pasado y a nada m\u00e1s.<\/li>\n<\/ul>\n<h2 id=\"ftd-tools\">Datos de tick en SharpTrader Optimizer<\/h2>\n<p>Creamos <a href=\"https:\/\/bjftradinggroup.com\/product\/sharptrader-optimizer\/\">SharpTrader Optimizer<\/a> en torno a los puntos de esta gu\u00eda. Reproduce ticks bid\/ask hist\u00f3ricos reales en lugar de barras interpoladas, toma el spread de cada tick y te permite definir el tiempo de ejecuci\u00f3n de tus \u00f3rdenes en milisegundos, de modo que cada ejecuci\u00f3n sale del flujo de ticks despu\u00e9s de ese retraso. Puedes usar el historial de ticks de BJF Feed registrado en los nodos de Londres, Tokio y Nueva York, o importar los ticks de tu propio br\u00f3ker en CSV. Las rejillas de par\u00e1metros se ejecutan en todos los n\u00facleos de la CPU, algo importante cuando un a\u00f1o de un solo par son decenas de millones de ticks.<\/p>\n<p>Si ya tienes una estrategia propia, el art\u00edculo sobre <a href=\"https:\/\/bjftradinggroup.com\/optimize-your-own-trading-bot-sharptrader\/\">c\u00f3mo probar tu propio bot en SharpTrader<\/a> muestra el flujo de trabajo completo, desde el c\u00f3digo hasta la optimizaci\u00f3n a nivel de tick.<\/p>\n<div class=\"ftd-cta\">\n<h3>Prueba con los ticks que tu estrategia encontrar\u00e1 de verdad<\/h3>\n<p>Ticks bid\/ask reales, spread variable en cada cotizaci\u00f3n y el tiempo de ejecuci\u00f3n de tu br\u00f3ker en milisegundos: los tres datos de entrada que deciden si una estrategia de corto plazo sobrevive al trading real.<\/p>\n<p><a class=\"ftd-btn\" href=\"https:\/\/bjftradinggroup.com\/product\/sharptrader-optimizer\/\">Descubre SharpTrader Optimizer<\/a><a class=\"ftd-btn ftd-btn-alt\" href=\"https:\/\/bjftradinggroup.com\/latency-arbitrage-backtest-execution-time-gap\/\">Lee: la brecha del tiempo de ejecuci\u00f3n<\/a>\n<\/div>\n<div class=\"bjf-ff-wrap\"><div class=\"bjf-ff\" id=\"bjfff4520\" style=\"max-width:640px;margin:28px auto;padding:24px 26px;border:1px solid #d9e1ec;border-radius:12px;background:#f6f8fb\">\n<p style=\"margin:0 0 6px;font-size:20px;font-weight:700;color:#0f1b2d\">Esc\u00e1ner de arbitraje gratis + curso breve por email<\/p>\n<p style=\"margin:0 0 16px;font-size:15px;line-height:1.55;color:#44505f\">Recibe el enlace al esc\u00e1ner gratuito y algunos emails breves y pr\u00e1cticos de Boris: qu\u00e9 significa realmente una diferencia de precio despu\u00e9s de costos, c\u00f3mo probar una estrategia antes de arriesgar dinero real y qu\u00e9 herramientas se adaptan a tu mercado. Sin exageraciones. Los emails se env\u00edan en ingl\u00e9s.<\/p>\n<form method=\"post\" novalidate>\n<input type=\"hidden\" name=\"market\" value=\"forex\"><input type=\"hidden\" name=\"source\" value=\"blog\"><input type=\"hidden\" name=\"ts\" value=\"1793486910\"><input type=\"hidden\" name=\"ref\" value=\"forex-tick-data-backtesting\"><input type=\"hidden\" name=\"lang\" value=\"es\"><div style=\"position:absolute;left:-9999px\" aria-hidden=\"true\"><label>Website<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label><\/div>\n<div style=\"display:flex;flex-wrap:wrap;gap:10px\">\n<input type=\"text\" name=\"first_name\" placeholder=\"Nombre\" aria-label=\"Nombre\" autocomplete=\"given-name\" style=\"flex:1 1 160px;min-width:0;padding:11px 12px;border:1px solid #c9d3df;border-radius:8px;font-size:15px\">\n<input type=\"email\" name=\"email\" required placeholder=\"Email\" aria-label=\"Email\" autocomplete=\"email\" style=\"flex:2 1 220px;min-width:0;padding:11px 12px;border:1px solid #c9d3df;border-radius:8px;font-size:15px\">\n<button type=\"submit\" style=\"flex:1 1 160px;padding:11px 16px;border:0;border-radius:8px;background:#c9962a;color:#0f1b2d;font-weight:700;font-size:15px;cursor:pointer\">Env\u00edamelo<\/button>\n<\/div>\n<p style=\"margin:10px 0 0;font-size:12px;line-height:1.5;color:#6b7785\">Al enviar, aceptas recibir emails de BJF Trading Group sobre herramientas de arbitraje y software de trading. Puedes darte de baja cuando quieras. Consulta nuestra <a href=\"https:\/\/bjftradinggroup.com\/es\/privacy-policy\/\">Pol\u00edtica de privacidad<\/a>.<\/p>\n<p class=\"bjf-ff-msg\" role=\"status\" style=\"margin:10px 0 0;font-size:15px;font-weight:600\"><\/p>\n<\/form><\/div>\n<script>(function(){var M={\"invalid\":\"Introduce un email v\\u00e1lido.\",\"sending\":\"Enviando\\u2026\",\"done\":\"\\u00a1Listo! Revisa tu bandeja de entrada en unos minutos.\",\"err\":\"Algo sali\\u00f3 mal, int\\u00e9ntalo de nuevo.\",\"net\":\"Error de red, int\\u00e9ntalo de nuevo.\",\"srv\":false};var b=document.getElementById('bjfff4520');if(!b)return;var f=b.querySelector('form'),m=b.querySelector('.bjf-ff-msg');f.addEventListener('submit',function(e){e.preventDefault();var d=new FormData(f);if(!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(d.get('email')||'')){m.style.color='#b42318';m.textContent=M.invalid;return;}var btn=f.querySelector('button');btn.disabled=true;m.style.color='#44505f';m.textContent=M.sending;fetch('\/wp-json\/bjf\/v1\/subscribe',{method:'POST',body:d}).then(function(r){return r.json()}).then(function(j){if(j&&j.ok){m.style.color='#1a7f4b';m.textContent=M.done;f.querySelectorAll('input,button').forEach(function(x){x.disabled=true});if(window.gtag)gtag('event','generate_lead',{form_source:d.get('source')});if(window.fbq)fbq('track','Lead',{content_name:d.get('source')});}else{btn.disabled=false;m.style.color='#b42318';m.textContent=(M.srv&&j&&j.msg)||M.err;}}).catch(function(){btn.disabled=false;m.style.color='#b42318';m.textContent=M.net;});});})();<\/script>\n<\/div>\n<h2 id=\"ftd-faq\">Preguntas frecuentes<\/h2>\n<div class=\"ftd-faq\">\n<h3>\u00bfQu\u00e9 son los datos de tick de forex?<\/h3>\n<p>Los datos de tick de forex son el registro de cada cambio de cotizaci\u00f3n en un par de divisas, con una marca de tiempo, el precio bid, el precio ask y, a veces, el volumen cotizado. Conservan el orden exacto, el momento y el spread de las actualizaciones de precio, algo que los datos de barras pierden.<\/p>\n<h3>\u00bfD\u00f3nde puedo conseguir datos de tick de forex gratuitos?<\/h3>\n<p>Algunos br\u00f3kers ECN y agregadores publican gratis ticks bid\/ask hist\u00f3ricos de los pares principales, y muchos br\u00f3kers te permiten descargar su propio historial. Los archivos gratuitos son \u00fatiles para investigar, pero muestran los precios de un solo centro, as\u00ed que confirma el resultado final con los ticks registrados de tu propio br\u00f3ker.<\/p>\n<h3>\u00bfSon mejores los datos de tick que los datos de 1 minuto para backtesting?<\/h3>\n<p>Para estrategias con objetivos y stops a pocos pips, scalping, trading de noticias y arbitraje, s\u00ed: las barras de un minuto ocultan el orden del m\u00e1ximo y del m\u00ednimo, los saltos de precio y el spread real. Para estrategias swing con stops amplios, unos datos de un minuto limpios con un spread realista suelen bastar.<\/p>\n<h3>\u00bfPor qu\u00e9 obtengo resultados de backtest distintos con dos fuentes de datos?<\/h3>\n<p>El forex al contado no tiene una cinta central, as\u00ed que cada fuente es la visi\u00f3n de un centro distinto. Los spreads, la frecuencia de cotizaciones, las zonas horarias, el tratamiento del horario de verano y las reglas de limpieza difieren. Compara los precios y spreads por hora entre los dos conjuntos de datos para encontrar la causa, y f\u00edate de la fuente m\u00e1s cercana a tu centro de ejecuci\u00f3n.<\/p>\n<h3>\u00bfCu\u00e1nto almacenamiento necesita un a\u00f1o de datos de tick de forex?<\/h3>\n<p>Para un par principal activo, aproximadamente decenas de millones de ticks al a\u00f1o: unos 2 GB como texto CSV o alrededor de 0.6 GB en un formato binario compacto antes de la compresi\u00f3n. Varios pares a lo largo de varios a\u00f1os alcanzan r\u00e1pidamente decenas de gigabytes.<\/p>\n<h3>\u00bfPor qu\u00e9 mi backtest con datos de tick muestra ejecuciones perfectas?<\/h3>\n<p>Porque la prueba ejecuta cada orden en el tick que gener\u00f3 la se\u00f1al. Las \u00f3rdenes reales tardan en llegar al br\u00f3ker, y el precio se mueve mientras tanto. Modela el tiempo de ejecuci\u00f3n avanzando en el flujo de ticks y ejecutando al bid o al ask posterior, y prueba con 1.5 a 2 veces el retraso que hayas medido.<\/p>\n<h3>\u00bfNecesito tanto el bid como el ask, o basta con el precio medio?<\/h3>\n<p>Necesitas ambos. Las compras se ejecutan en el ask y las ventas en el bid, as\u00ed que el spread es un coste real en cada operaci\u00f3n. Un conjunto de datos solo con precio medio elimina ese coste y hace que las estrategias de corto plazo parezcan mejores de lo que son.<\/p>\n<\/div>\n<p class=\"ftd-note\">Este art\u00edculo es educativo y no constituye asesoramiento financiero. Los ejemplos, gr\u00e1ficos y cifras marcados como ilustrativos no son mediciones de ning\u00fan br\u00f3ker ni estrategia concretos; las fuentes de datos, las convenciones y los costes difieren entre proveedores y cambian con el tiempo.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Article\",\n      \"headline\": \"Datos de tick de forex para backtesting: fuentes, controles de calidad y errores frecuentes\",\n      \"description\": \"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 dos conjuntos de datos nunca coinciden, controles de calidad antes de fiarte de un backtest, zonas horarias, spread variable y tiempo de ejecuci\u00f3n.\",\n      \"image\": \"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp\",\n      \"author\": {\n        \"@type\": \"Organization\",\n        \"name\": \"BJF Trading Group\",\n        \"url\": \"https:\/\/bjftradinggroup.com\/\"\n      },\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"BJF Trading Group\",\n        \"url\": \"https:\/\/bjftradinggroup.com\/\"\n      },\n      \"datePublished\": \"2026-10-31\",\n      \"dateModified\": \"2026-10-31\",\n      \"mainEntityOfPage\": \"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/\"\n    },\n    {\n      \"@type\": \"HowTo\",\n      \"name\": \"C\u00f3mo preparar datos de tick de forex para un backtest\",\n      \"step\": [\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 1,\n          \"name\": \"Elige la fuente seg\u00fan la pregunta\",\n          \"text\": \"Elige la fuente seg\u00fan la pregunta. Historial gratuito largo para investigaci\u00f3n y robustez; los ticks registrados de tu br\u00f3ker para la comprobaci\u00f3n final; adem\u00e1s, un feed de referencia si la estrategia compara feeds.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 2,\n          \"name\": \"Normaliza las marcas de tiempo\",\n          \"text\": \"Normaliza las marcas de tiempo. Convierte todo a UTC con resoluci\u00f3n de milisegundos, aplica la regla de horario de verano correcta de la fuente y conserva el orden original como criterio de desempate.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 3,\n          \"name\": \"Normaliza los precios\",\n          \"text\": \"Normaliza los precios. El mismo n\u00famero de d\u00edgitos por s\u00edmbolo, bid y ask en columnas separadas, nada de datos solo con precio medio si la estrategia paga el spread.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 4,\n          \"name\": \"Elimina los errores evidentes\",\n          \"text\": \"Elimina los errores evidentes. Duplicados exactos, spreads cruzados o cero, ticks de fin de semana, picos aislados que se revierten.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 5,\n          \"name\": \"Mapea los huecos y los periodos congelados\",\n          \"text\": \"Mapea los huecos y los periodos congelados. Gu\u00e1rdalos como una lista de intervalos excluidos en lugar de rellenarlos con precios inventados.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 6,\n          \"name\": \"Contrasta con una segunda fuente\",\n          \"text\": \"Contrasta con una segunda fuente. Compara precios medios y spreads por hora con otro conjunto de datos; las diferencias grandes y persistentes indican un problema de escala, de zona horaria o de feed.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 7,\n          \"name\": \"Divide el periodo\",\n          \"text\": \"Divide el periodo. Reserva una ventana fuera de muestra (por ejemplo, el \u00faltimo 25%) y un calendario walk-forward antes de optimizar nada.\"\n        },\n        {\n          \"@type\": \"HowToStep\",\n          \"position\": 8,\n          \"name\": \"Define las hip\u00f3tesis de ejecuci\u00f3n\",\n          \"text\": \"Define las hip\u00f3tesis de ejecuci\u00f3n. Spread variable a partir de los ticks, tu tiempo de ejecuci\u00f3n real en milisegundos, comisi\u00f3n por lote. Despu\u00e9s ejecuta la prueba.\"\n        }\n      ]\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfQu\u00e9 son los datos de tick de forex?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Los datos de tick de forex son el registro de cada cambio de cotizaci\u00f3n en un par de divisas, con una marca de tiempo, el precio bid, el precio ask y, a veces, el volumen cotizado. Conservan el orden exacto, el momento y el spread de las actualizaciones de precio, algo que los datos de barras pierden.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfD\u00f3nde puedo conseguir datos de tick de forex gratuitos?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Algunos br\u00f3kers ECN y agregadores publican gratis ticks bid\/ask hist\u00f3ricos de los pares principales, y muchos br\u00f3kers te permiten descargar su propio historial. Los archivos gratuitos son \u00fatiles para investigar, pero muestran los precios de un solo centro, as\u00ed que confirma el resultado final con los ticks registrados de tu propio br\u00f3ker.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfSon mejores los datos de tick que los datos de 1 minuto para backtesting?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Para estrategias con objetivos y stops a pocos pips, scalping, trading de noticias y arbitraje, s\u00ed: las barras de un minuto ocultan el orden del m\u00e1ximo y del m\u00ednimo, los saltos de precio y el spread real. Para estrategias swing con stops amplios, unos datos de un minuto limpios con un spread realista suelen bastar.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfPor qu\u00e9 obtengo resultados de backtest distintos con dos fuentes de datos?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"El forex al contado no tiene una cinta central, as\u00ed que cada fuente es la visi\u00f3n de un centro distinto. Los spreads, la frecuencia de cotizaciones, las zonas horarias, el tratamiento del horario de verano y las reglas de limpieza difieren. Compara los precios y spreads por hora entre los dos conjuntos de datos para encontrar la causa, y f\u00edate de la fuente m\u00e1s cercana a tu centro de ejecuci\u00f3n.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfCu\u00e1nto almacenamiento necesita un a\u00f1o de datos de tick de forex?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Para un par principal activo, aproximadamente decenas de millones de ticks al a\u00f1o: unos 2 GB como texto CSV o alrededor de 0.6 GB en un formato binario compacto antes de la compresi\u00f3n. Varios pares a lo largo de varios a\u00f1os alcanzan r\u00e1pidamente decenas de gigabytes.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfPor qu\u00e9 mi backtest con datos de tick muestra ejecuciones perfectas?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Porque la prueba ejecuta cada orden en el tick que gener\u00f3 la se\u00f1al. Las \u00f3rdenes reales tardan en llegar al br\u00f3ker, y el precio se mueve mientras tanto. Modela el tiempo de ejecuci\u00f3n avanzando en el flujo de ticks y ejecutando al bid o al ask posterior, y prueba con 1.5 a 2 veces el retraso que hayas medido.\"\n          }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"\u00bfNecesito tanto el bid como el ask, o basta con el precio medio?\",\n          \"acceptedAnswer\": {\n            \"@type\": \"Answer\",\n            \"text\": \"Necesitas ambos. Las compras se ejecutan en el ask y las ventas en el bid, as\u00ed que el spread es un coste real en cada operaci\u00f3n. Un conjunto de datos solo con precio medio elimina ese coste y hace que las estrategias de corto plazo parezcan mejores de lo que son.\"\n          }\n        }\n      ]\n    }\n  ]\n}\n<\/script>\n<\/div>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 dos conjuntos de datos del mismo par nunca coinciden y c\u00f3mo comprobar y limpiar los ticks antes de fiarte de un backtest: barras interpoladas vs ticks registrados, feeds del br\u00f3ker vs feeds de referencia, zonas horarias y horario de verano, controles de calidad, spread variable, tiempo de ejecuci\u00f3n y almacenamiento.<\/p>\n","protected":false},"author":1,"featured_media":15734,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[53,221],"tags":[],"class_list":["post-15733","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arbitrage-software","category-forex-trading"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.7 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Datos de tick de forex para backtesting: fuentes y calidad<\/title>\n<meta name=\"description\" content=\"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bjftradinggroup.com\/es\/forex-tick-data-backtesting\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datos de tick de forex para backtesting: fuentes y calidad\" \/>\n<meta property=\"og:description\" content=\"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bjftradinggroup.com\/es\/forex-tick-data-backtesting\/\" \/>\n<meta property=\"og:site_name\" content=\"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/bjftradinggroup\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-31T20:42:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Boris Fesenko\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Boris Fesenko\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/\"},\"author\":{\"name\":\"Boris Fesenko\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#\\\/schema\\\/person\\\/293df6ddb1f30db046ca9cd8928138a9\"},\"headline\":\"Datos de tick de forex para backtesting: fuentes, controles de calidad y errores frecuentes\",\"datePublished\":\"2026-10-31T20:42:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/\"},\"wordCount\":45133,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/article-cover-forex-tick-data-backtesting-1200x630-1.webp\",\"articleSection\":[\"Arbitrage Software\",\"Forex trading\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#respond\"]}],\"name\":\"Datos de tick de forex para backtesting: fuentes y calidad\",\"description\":\"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.\",\"publisher\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/\",\"name\":\"Datos de tick de forex para backtesting: fuentes y calidad\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/article-cover-forex-tick-data-backtesting-1200x630-1.webp\",\"datePublished\":\"2026-10-31T20:42:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#\\\/schema\\\/person\\\/293df6ddb1f30db046ca9cd8928138a9\"},\"description\":\"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#primaryimage\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/article-cover-forex-tick-data-backtesting-1200x630-1.webp\",\"contentUrl\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/article-cover-forex-tick-data-backtesting-1200x630-1.webp\",\"width\":1200,\"height\":630,\"caption\":\"Forex tick data for backtesting: bid and ask quote ticks\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/forex-tick-data-backtesting\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bjftradinggroup.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Forex Tick Data for Backtesting: Sources, Quality Checks and Pitfalls\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#website\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/\",\"name\":\"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.\",\"description\":\"FX Software pioneer since 2000\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bjftradinggroup.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#\\\/schema\\\/person\\\/293df6ddb1f30db046ca9cd8928138a9\",\"name\":\"Boris Fesenko\",\"pronouns\":\"He\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g\",\"caption\":\"Boris Fesenko\"},\"description\":\"Born in 1971 in Ukraine, I graduated from East Ukrainian State University and later completed postgraduate studies at the same university, where I also wrote my PhD dissertation. In 2006, I moved to Canada. I am the founder of BJF Trading Group and specialize in the development and implementation of advanced arbitrage trading systems for the Forex and cryptocurrency markets, as well as other trading solutions.\",\"sameAs\":[\"https:\\\/\\\/bjftradinggroup.com\\\/about-boris-fesenko\",\"https:\\\/\\\/www.facebook.com\\\/bjftradinggroup\",\"https:\\\/\\\/www.instagram.com\\\/bjftradinggroup\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/bjftradinggroup\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCapi2ct0Iv7axHJ93wN_bsQ\"],\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/es\\\/author\\\/boris\\\/\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/#organization\",\"name\":\"BJF Trading Group Inc.\",\"legalName\":\"BJF Trading Group Inc.\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/bjftradinggroup.com\\\/wp-content\\\/uploads\\\/logo.png\",\"width\":512,\"height\":512},\"foundingDate\":\"2000\",\"founder\":{\"@id\":\"https:\\\/\\\/bjftradinggroup.com\\\/about-boris-fesenko\\\/#person\"},\"address\":{\"@type\":\"PostalAddress\",\"addressRegion\":\"Ontario\",\"addressCountry\":\"CA\"},\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer support\",\"email\":\"support@bjftradinggroup.com\",\"availableLanguage\":[\"English\",\"German\",\"Japanese\",\"Korean\",\"Spanish\",\"Portuguese\",\"Arabic\",\"Indonesian\",\"Vietnamese\"]}],\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/bjftradinggroup\",\"https:\\\/\\\/twitter.com\\\/BjfGroup\",\"https:\\\/\\\/www.youtube.com\\\/@bjftradinggroup\",\"https:\\\/\\\/t.me\\\/bjftradinggroup\",\"https:\\\/\\\/instagram.com\\\/bjftradinggroup\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/bjf-trading-group\\\/\"],\"knowsAbout\":[\"Forex arbitrage\",\"Cryptocurrency arbitrage\",\"Latency arbitrage\",\"News trading\",\"FIX API trading\",\"High-frequency trading\",\"Lock arbitrage\",\"Hedge arbitrage\",\"Pair trading\",\"Algorithmic trading software\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Datos de tick de forex para backtesting: fuentes y calidad","description":"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bjftradinggroup.com\/es\/forex-tick-data-backtesting\/","og_locale":"es_ES","og_type":"article","og_title":"Datos de tick de forex para backtesting: fuentes y calidad","og_description":"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.","og_url":"https:\/\/bjftradinggroup.com\/es\/forex-tick-data-backtesting\/","og_site_name":"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.","article_author":"https:\/\/www.facebook.com\/bjftradinggroup","article_published_time":"2026-10-31T20:42:04+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp","type":"image\/webp"}],"author":"Boris Fesenko","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Boris Fesenko","Tiempo de lectura":"19 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#article","isPartOf":{"@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/"},"author":{"name":"Boris Fesenko","@id":"https:\/\/bjftradinggroup.com\/#\/schema\/person\/293df6ddb1f30db046ca9cd8928138a9"},"headline":"Datos de tick de forex para backtesting: fuentes, controles de calidad y errores frecuentes","datePublished":"2026-10-31T20:42:04+00:00","mainEntityOfPage":{"@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/"},"wordCount":45133,"commentCount":0,"image":{"@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#primaryimage"},"thumbnailUrl":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp","articleSection":["Arbitrage Software","Forex trading"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#respond"]}],"name":"Datos de tick de forex para backtesting: fuentes y calidad","description":"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.","publisher":{"@id":"https:\/\/bjftradinggroup.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/","url":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/","name":"Datos de tick de forex para backtesting: fuentes y calidad","isPartOf":{"@id":"https:\/\/bjftradinggroup.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#primaryimage"},"image":{"@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#primaryimage"},"thumbnailUrl":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp","datePublished":"2026-10-31T20:42:04+00:00","author":{"@id":"https:\/\/bjftradinggroup.com\/#\/schema\/person\/293df6ddb1f30db046ca9cd8928138a9"},"description":"De d\u00f3nde vienen los datos de tick de forex, por qu\u00e9 difieren y qu\u00e9 controles, ajustes de zona horaria y spread necesita un backtest realista.","breadcrumb":{"@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#primaryimage","url":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp","contentUrl":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/2026\/10\/article-cover-forex-tick-data-backtesting-1200x630-1.webp","width":1200,"height":630,"caption":"Forex tick data for backtesting: bid and ask quote ticks"},{"@type":"BreadcrumbList","@id":"https:\/\/bjftradinggroup.com\/forex-tick-data-backtesting\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bjftradinggroup.com\/"},{"@type":"ListItem","position":2,"name":"Forex Tick Data for Backtesting: Sources, Quality Checks and Pitfalls"}]},{"@type":"WebSite","@id":"https:\/\/bjftradinggroup.com\/#website","url":"https:\/\/bjftradinggroup.com\/","name":"Forex &amp; Cryptocurrencies Arbitrage Software | BJF Trading Group Inc.","description":"FX Software pioneer since 2000","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bjftradinggroup.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/bjftradinggroup.com\/#\/schema\/person\/293df6ddb1f30db046ca9cd8928138a9","name":"Boris Fesenko","pronouns":"He","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/007a433de26ad3eca139ef7f314d6081bf1b619eceb1e5d1f590b8e06f95f05c?s=96&r=g","caption":"Boris Fesenko"},"description":"Born in 1971 in Ukraine, I graduated from East Ukrainian State University and later completed postgraduate studies at the same university, where I also wrote my PhD dissertation. In 2006, I moved to Canada. I am the founder of BJF Trading Group and specialize in the development and implementation of advanced arbitrage trading systems for the Forex and cryptocurrency markets, as well as other trading solutions.","sameAs":["https:\/\/bjftradinggroup.com\/about-boris-fesenko","https:\/\/www.facebook.com\/bjftradinggroup","https:\/\/www.instagram.com\/bjftradinggroup\/","https:\/\/www.linkedin.com\/in\/bjftradinggroup\/","https:\/\/www.youtube.com\/channel\/UCapi2ct0Iv7axHJ93wN_bsQ"],"url":"https:\/\/bjftradinggroup.com\/es\/author\/boris\/"},{"@type":"Organization","@id":"https:\/\/bjftradinggroup.com\/#organization","name":"BJF Trading Group Inc.","legalName":"BJF Trading Group Inc.","url":"https:\/\/bjftradinggroup.com\/","logo":{"@type":"ImageObject","url":"https:\/\/bjftradinggroup.com\/wp-content\/uploads\/logo.png","width":512,"height":512},"foundingDate":"2000","founder":{"@id":"https:\/\/bjftradinggroup.com\/about-boris-fesenko\/#person"},"address":{"@type":"PostalAddress","addressRegion":"Ontario","addressCountry":"CA"},"contactPoint":[{"@type":"ContactPoint","contactType":"customer support","email":"support@bjftradinggroup.com","availableLanguage":["English","German","Japanese","Korean","Spanish","Portuguese","Arabic","Indonesian","Vietnamese"]}],"sameAs":["https:\/\/www.facebook.com\/bjftradinggroup","https:\/\/twitter.com\/BjfGroup","https:\/\/www.youtube.com\/@bjftradinggroup","https:\/\/t.me\/bjftradinggroup","https:\/\/instagram.com\/bjftradinggroup","https:\/\/www.linkedin.com\/company\/bjf-trading-group\/"],"knowsAbout":["Forex arbitrage","Cryptocurrency arbitrage","Latency arbitrage","News trading","FIX API trading","High-frequency trading","Lock arbitrage","Hedge arbitrage","Pair trading","Algorithmic trading software"]}]}},"_links":{"self":[{"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/posts\/15733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/comments?post=15733"}],"version-history":[{"count":37,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/posts\/15733\/revisions"}],"predecessor-version":[{"id":15775,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/posts\/15733\/revisions\/15775"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/media\/15734"}],"wp:attachment":[{"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/media?parent=15733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/categories?post=15733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bjftradinggroup.com\/es\/wp-json\/wp\/v2\/tags?post=15733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}