7 votos

Generar datos de garrapatas desde el candelabro

¿Hay algún software (o Python / R / ... scripts) para generar (pseudo) datos de tick a partir de datos de velas.

Tengo datos de velas (formato CSV) desde el marco de tiempo mensual (MN) hasta el marco de tiempo por minuto (M1), pero el rango de tiempo puede ser diferente. Los nombres de los archivos son :

  • SYMBOL1.csv para el marco de tiempo M1 (1 minuto)
  • SYMBOL5.csv para el marco temporal de M5 (5 minutos)
  • SYMBOL15.csv para el marco temporal de M15 (15 minutos)
  • SYMBOL30.csv para el marco temporal de M30 (30 minutos)
  • SYMBOL60.csv para el plazo de H1 (1 hora)
  • SYMBOL240.csv para el marco de tiempo H4 (4 horas)
  • SYMBOL1440.csv para el marco temporal D1 (1 día)
  • SYMBOL10080.csv para el marco temporal de W1 (1 semana)
  • SYMBOL43200.csv para el marco de tiempo de MN (1 mes)

Me gustaría alimentar el software o script con cada archivo csv. Me gustaría dar la fecha de inicio y la fecha de fin y el software producirá un archivo csv con los datos de las garrapatas.

Los datos de las garrapatas se generarán desde el plazo más largo al más corto (si existen datos). Por ejemplo, el programa informático generará datos sobre las garrapatas a partir del marco temporal de las velas M1 si existen datos para el intervalo de tiempo solicitado. Si no hay datos en el intervalo de tiempo M1, el software intentará encontrar datos en el intervalo de tiempo M5 para generar garrapatas.

Entiendo que las garrapatas generadas serán generadas usando interpolación (así que no serán exactas)

Tales ideas se implementan en el Probador de Estrategia de Metatrader http://www.metatrader5.com/en/terminal/help/tester/tester_using/tick_generation

$ head _FRA401.csv 
2010.11.16,08:01,3818.0,3820.0,3817.5,3820.0,41
2010.11.16,08:02,3820.0,3823.0,3801.0,3823.0,38
2010.11.16,08:03,3823.0,3825.0,3823.0,3823.5,28

$ tail _FRA401.csv 
2012.11.01,18:32,3477.0,3477.0,3474.0,3474.5,37
2012.11.01,18:33,3474.5,3476.0,3474.5,3475.5,25
2012.11.01,18:34,3475.5,3476.0,3471.5,3472.5,62

$ head _FRA4043200.csv 
2010.11.01,00:00,3818.0,3906.0,3589.5,3620.0,168480
2010.12.01,00:00,3629.0,3940.5,3618.5,3853.5,227760
2011.01.01,00:00,3848.0,4081.5,3605.5,4019.5,266725

$ tail _FRA4043200.csv 
2012.02.01,00:00,3310.5,3490.5,3305.5,3456.5,514738
2012.03.01,00:00,3441.0,3593.0,3343.0,3420.5,353738
2012.04.01,00:00,3428.0,3475.5,2974.5,3128.5,247351

4voto

Markus Olsson Puntos 12651

Dijiste: "Entiendo que las garrapatas generadas serán generadas usando interpolación (así que no serán exactas)".

Usted es muy optimista, no sólo estarán lejos de ser exactos, sino que (los datos de la garrapata) serán completamente eliminados de la realidad, los únicos parámetros conocidos para los datos de la garrapata serán las condiciones límite, como abrir alto y cerrar bajo. Se hace una conjetura completamente descabellada sobre cuántas garrapatas contiene cada barra y dónde operó/cotizó el mercado en qué momento dentro de los límites de los tiempos de apertura y cierre de la vela y de la vela alta y baja. Por supuesto que puedes hacer eso y Python es probablemente la mejor herramienta para hacer el trabajo rápidamente. (Recomiendo http://pandas.pydata.org/ )

Sin embargo, dudo mucho de la utilidad de este enfoque. Obviamente quieres usar los datos de las garrapatas para algún tipo de análisis o prueba. Sin embargo, los resultados serán completamente aleatorios si intentas examinar los datos de las garrapatas para análisis de alta frecuencia o pruebas retrospectivas. Si no está interesado en este tipo de pruebas de alta frecuencia, entonces sólo debe atenerse a sus (supuestas) series de tiempo comprimido (barras de 1 minuto o lo que tenga).

En resumen, pongo en duda la utilidad de generar series temporales de mayor frecuencia a partir de series temporales de menor frecuencia en general. Lo contrario, obviamente, tiene mucho más sentido, ya que se sabe exactamente cómo se ven los puntos de datos comprimidos de 1 hora al generar los de series temporales de mayor frecuencia, como los puntos de datos comprimidos de 1 minuto.

Sólo mis 2 centavos, siéntase libre de elaborar para qué quiere usar los datos de las garrapatas generadas, tal vez me pierda algo aquí.

2voto

Shuft Puntos 420

Ya hemos hecho esto antes (*), pero es trivial: un tic para abrir, un tic para subir, un tic para bajar, un tic para cerrar. Para las marcas de tiempo de las garrapatas, la apertura es a las 08:01:00, el cierre es a las 08:01:59.999, la alta es a las 08:01:20 y la baja a las 08:01:40. (O si eso da resultados extraños, la apertura es 08:01:00.001 y el cierre es 08:02:00.000; depende de cómo tu sistema haga las barras).

Si quieres que el volumen también coincida, crea garrapatas N-4 en la media de apertura y cierre, y espacia las garrapatas uniformemente a lo largo del minuto. Podrías interpolar una línea recta desde la apertura hasta el cierre si quieres; también podrías poner todas las garrapatas N-4 iguales a altas, etc. Todas las opciones son fabricaciones, así que no importa cuál elijas. Me gusta fijarme en la media, ya que cualquiera que la mire sabrá instantáneamente que son datos artificiales.

*: Esto fue con un sistema en el que sólo podíamos parchear los apagones y rellenar los datos históricos con datos de las garrapatas; ese sistema luego hacía las barras intradía. Es decir, no podíamos parchar las barras intradía directamente.


Si quieres que se vea como garrapatas reales, porque tu algoritmo de negociación sólo está diseñado para trabajar a partir de las garrapatas, entonces empiezas con una interpolación en línea recta desde la apertura hasta el cierre, y luego las sacudes. Luego filtra para asegurarte de que ninguno exceda el alto y el bajo, y luego elige dos ticks para que sean el alto y el bajo y altera sus valores.

Otra variación, específica de la R, es poner las garrapatas abiertas/cerradas, y usar NA para todas las demás. Entonces elige 2 garrapatas al azar para que sean altas y bajas. Luego usa la función na.approx o na.spline de R. Luego, titila. Luego filtra para alta y baja de nuevo.

Si hace esto, le sugiero encarecidamente que haga múltiples conjuntos de datos, cada uno con una semilla aleatoria diferente, y que haga su prueba retrospectiva en cada conjunto de datos. Si diferentes conjuntos de datos obtienen resultados diferentes, tus algoritmos son sensibles al ruido aleatorio que has introducido. (Es decir, tus resultados no tienen sentido y necesitas ir a comprar datos de garrapatas reales).

1voto

Jiaaro Puntos 14379

No sé de nada que ya esté hecho y funcione fuera de la caja, pero recomendaría escribir un pequeño script en Python usando csv.reader esto sería probablemente tan rápido como intentar conectar algo en tu csv, especialmente si tu formato es un poco exótico

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X