En una serie de entradas de este blog vimos cómo cargar los datos históricos de forex en una
base de datos relacional, y cómo disponer los datos en este formato
tenía ciertas ventajas a la hora de proceder a su análisis. En esta
ocasión vamos a ver otra de las ventajas de las bases de datos, en
concreto, cómo nos pueden ayudar a la hora de buscar huecos en los
datos históricos.
Todos los ficheros de datos históricos
tienen huecos. A veces, incluso, nos podemos encontrar con saltos que
comprenden varios días, y que pueden llegar a resultar muy
peligrosos, porque pueden distorsionar de forma importante nuestro
análisis. Por tanto, es importante conocer la calidad de los datos
que estamos utilizando en nuestros back tests.
Una vez tengamos los datos en la base
de datos en el formato en el que habíamos propuesto en las entradas
anteriores de nuestro blog, podemos proceder a su análisis.
Si queremos conocer el número de
huecos de una determinada longitud que existen en el histórico de
datos, escribiremos:
SELECT count(*),
((SELECT MIN(e2.unix) FROM eurusd
e2
WHERE e2.unix > e1.unix) - e1.unix - 60) / 60 as minutes
FROM eurusd e1 WHERE minutes = 1
donde 'minutes' es la longitud en
minutos del hueco que estamos analizando. También podríamos ver
concretamente en qué fecha y hora se producen dichos huecos, para
ello escribiríamos:
SELECT DATETIME(e1.date, '+1 minutes')
AS start_date,
DATETIME((SELECT MIN(e2.date) FROM
eurusd e2 WHERE e2.date > e1.date), '-1 minutes') AS end_date,
((SELECT MIN(e2.unix) FROM eurusd
e2 WHERE e2.unix > e1.unix) - e1.unix - 60) / 60 as minutes
FROM eurusd e1 WHERE minutes = 1
o si lo que queremos es sacar una tabla
que nos indique para cada longitud de hueco el número de ellos que
hay, escribiríamos:
SELECT count(*),
((SELECT MIN(e2.unix) FROM eurusd
e2 WHERE e2.unix > e1.unix) - e1.unix - 60) / 60 as minutes
FROM eurusd e1 GROUP BY minutes
Finalmente, a modo de ejemplo voy a
mostrar los resultados de un análisis comparativo realizado sobre
dos históricos de datos, uno de ellos descargado desde la página
web de Forex Tester, y el segundo utilizando el Centro de Historiales
de la herramienta MetaTrader y a través del broker XTB.
El siguiente gráfico muestra para cada
longitud de hueco desde 1 a 30 minutos el número de huecos encontrados:
Como se puede observar, el número de
huecos de longitudes 1, 2, 3 y 4 es tremendamente grande, del orden
de 3 huecos al día para XTB, y de 4 para Forex Tester. Este hecho
debería ser tenido en cuenta por todos aquellos que utilizan
sistemas automáticos que trabajan sobre barras de un minuto, sobre
todo si se basan en optimizaciones y backtests de los mismos.
No hay comentarios:
Publicar un comentario