Historicos intradia para backtesting

Todo sobre los proveedores de datos en tiempo real.
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Historicos intradia para backtesting

Mensaje por edge2k »

Buenas

Estoy apuntado al concurso de robotrader,y he empezado a desarrollar el automata, pero me encuentro con un gran muro, los datos para backtesting, sobretodo intradia. IB penaliza las peticiones a históricos (max 1 año, y diversos limites, aquí están todos: http://www.interactivebrokers.com/php/a ... ations.htm) y he buscado y rebuscado pero no encuentro ninguna solución aceptable que no sea gastar miles de dolares.

Vi en este foro la opción de sacar datos de visual chart, pero solo tengo 3 días para extraer todo y aun no tengo claro a que enfocarme,si futuros, acciones..ni mercados. Despejare la incógnita poco a poco pero si que me gustaría empezar con simulaciones, y ya tengo el software necesario, pero sin datos poco puedo hacer...

Agradezco cualquier idea, no me importa pagar un precio razonable por alguna subscripción que abarque todo o casi todo.

Un saludo!
Avatar de Usuario
nostrasladamus
Mensajes: 313
Registrado: 09 Feb 2009 13:27
Ubicación: Sistema Referencia Inercial

Re: Historicos intradia para backtesting

Mensaje por nostrasladamus »

Hola edge2k,

Tranquilo, con Visual chart, cuando caduquen los 3 dias de prueba todavia puedes descargarte los historicos intradia por la noche, con el mercado cerrado.

Un saludo,
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

edge2k, si quieres automatizar la descarga de históricos con Visual Chart, en mi blog tienes varios post con los que podrías hacer lo siguiente con poco esfuerzo:

- Usar el ejemplo de las tablas para ver todas las tablas de Visual Chart y sus símbolos. http://speakertrading.wordpress.com/201 ... blas-stmt/
- Añadir un control de selección de fecha para indicar la fecha inicial desde la que descargar los datos de los símbolos de la tabla seleccionada. En el post http://speakertrading.wordpress.com/201 ... -stmt-rsi/ puedes ver como descargar un histórico. En tu caso la fecha final puedes ponerla en un año futuro (2020, por ejemplo), compresión fija a un minuto.

Con un botón recorres todos los símbolos de la tabla y creas un histórico. Con eso ya tienes los datos.

Si quieres afinar más, cambia el último control del ejemplo de las tablas por un contol CheckedListBox de modo que puedas seleccionar qué símbolos de la tabla quieres descargar.

Un saludo
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Historicos intradia para backtesting

Mensaje por edge2k »

nostrasladamus escribió:Hola edge2k,

Tranquilo, con Visual chart, cuando caduquen los 3 dias de prueba todavia puedes descargarte los historicos intradia por la noche, con el mercado cerrado.

Un saludo,
Imponen algun tipo de limite?
SpeakerTrading escribió:edge2k, si quieres automatizar la descarga de históricos con Visual Chart, en mi blog tienes varios post con los que podrías hacer lo siguiente con poco esfuerzo:

- Usar el ejemplo de las tablas para ver todas las tablas de Visual Chart y sus símbolos. http://speakertrading.wordpress.com/201 ... blas-stmt/
- Añadir un control de selección de fecha para indicar la fecha inicial desde la que descargar los datos de los símbolos de la tabla seleccionada. En el post http://speakertrading.wordpress.com/201 ... -stmt-rsi/ puedes ver como descargar un histórico. En tu caso la fecha final puedes ponerla en un año futuro (2020, por ejemplo), compresión fija a un minuto.

Con un botón recorres todos los símbolos de la tabla y creas un histórico. Con eso ya tienes los datos.

Si quieres afinar más, cambia el último control del ejemplo de las tablas por un contol CheckedListBox de modo que puedas seleccionar qué símbolos de la tabla quieres descargar.

Un saludo
Tocara ponerse manos a la obra, aunque soy mas amigo de java, c, python...

Gracias a ambos
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

edge2, cuando tus claves de tiempo real expiran pasas automáticamente a ser un usuario de fin de día. El programa funcionará sin limitaciones como cuando tienes tiempo real excepto que no tienes tiempo real. Funcionan los indicadores, los sistemas, los soportes... todo lo que tiene sentido sin tiempo real. Las tablas puedes abrirlas pero no se actulizarán.

En lo que se refiere a históricos no he visto ninguna restricción salvo la hora a la que puedes descargarlos, que es cuando cierra el mercado (aunque a veces hay que esperar algo más). Así que para tus propósitos, se podría decir que no vas a tener problemas.

Automatizándolo puedes incluso programar un timer para hacer la descarga a la hora que te interese y despreocuparte de todo.

Respecto al uso de C#, no tendrás problemas si trabajas con Java y conoces C porque la sintaxis es como la de C (más o menos) y la estructura (clases, librerías...) al estilo de Java. Vamos, que la curva de aprendizaje es muy pequeña.

Suerte!
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;

edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Historicos intradia para backtesting

Mensaje por edge2k »

Gracias por la respuesta y por el blog SpeakerTrading. Me esta siendo de mucha utilidad.
Me he bajado tus códigos pero no me funcionaban, me daban problemas cuando iniciaba las llamadas a las COM. Inicie el VisualStudio como administrador y ya funciono. Si no esta reflejado en tu blog esta parte, te recomiendo que lo hagas ;)

Momento de ponerse a trabajar :)
Avatar de Usuario
agmageton
Mensajes: 3580
Registrado: 30 Ene 2008 11:32

Re: Historicos intradia para backtesting

Mensaje por agmageton »

edge2k escribió:Gracias por la respuesta y por el blog SpeakerTrading. Me esta siendo de mucha utilidad.
Me he bajado tus códigos pero no me funcionaban, me daban problemas cuando iniciaba las llamadas a las COM. Inicie el VisualStudio como administrador y ya funciono. Si no esta reflejado en tu blog esta parte, te recomiendo que lo hagas ;)

Momento de ponerse a trabajar :)

Si un gran blog speakerTrading, lástima que hayas congelado un poco el tema, pero si pones algún articulo más pon por aquí el enlace así estamos actualizados con tus novedades. Yo ya he empezado a crear una aplicación con el visual estudio de cotizaciones en barras 60 minutos con la labreria del ACTIVEX (con la ayuda de la ingeriera informatica que he contratado) a ver si la acabo pronto...

SAludos.
La entrada te da la probabilidad y la salida la rentabilidad...
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

edge2, gracias por la observación. Cuando alguien se acostumbra a algo lo acaba haciendo automáticamente y hay detalles que se me olvida comentar. He actualizado el post del primer ejemplo (http://speakertrading.wordpress.com/201 ... r-ejemplo/) con esa observación y otras que acontecieron a raíz de un comentario que me indicó Jaime en el propio post.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

agmageton, me alegra saber que el blog resulta útil. Mi predisposición con el blog es la misma que tenía inicialmente pero esperaba un despegue más rápido (es mi primer blog... la ignorancia tiene estas cosas) y que el contenido del blog fuese alimentado, en gran parte, por comentarios y peticiones de los lectores.

Soy profesional de la informática. Desarrollo y mantengo aplicaciones software de cierta envergadura. Las entradas del posts son realmente simples (como un "Hola mundo" para un neófito) e implementar los ejemplos apenas consume tiempo, que es lo que me limita.

Lo que más esfuerzo (tiempo) conlleva es la parte de redacción, para intentar que profesionales del trading, que no necesariamente son expertos informáticos, puedan aprovechar la información que quiero hacer llegar. El otro gran problema es el de buscar un tema sobre el que escribir que sea posible llevarlo a cabo en una entrada con un tiempo aceptable. Los últimos posts hablan sobre lógica difusa porque he trabajado con ella y el potencial que tiene es enorme pero desarrollarlos como me gustaria consume un tiempo inabordable para mi. Buscar ese compromiso entre "algo interesante" y "algo que pueda exponerse en una entrada relativamente simple" me cuesta bastante.

El desarrollo del blog (y de ahí la entrada "Desconecto" que escribí) depende en gran medida de los lectores. Si me exponen problemas, dudas, sugerencias, peticiones... mi lista de posibles temas a redactar se amplia. Además, todo hay que decirlo, es una pequeña recompensa el ver que terceras personas aprecian tus contribuciones. En otro caso, la sensación que te queda es la de escribir para unas pocas personas sin saber si han entrado en la página por casualidad o realmente han leido y aprovechado la entrada.

Por lo anterior y por mi trabajo desarrollando sistemas para terceros a nivel particular, las entradas del blog son bastante irregulares. Si tengo cola de trabajo, no puedo escribir (lo primero es lo primero) y menos aún si tengo que buscar el tema sobre el que escribir.

Realmente, el futuro del blog está en gran parte en vuestras manos y acepto de muy buen grado cualquier propuesta que me hagaís llegar, del tipo que sea.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

agmageton, he creado un tema (viewtopic.php?f=7&t=17069) para notificar los nuevos posts que añada al blog así como para recibir comentarios, sugerencias, etc.

De todos modos, tanto para este blog como para la mayoría que os puedan ser de interés, se pueden utilizar tecnologías como RSS que están enfocadas precisamente a eso: a hacer seguimiento del blog.

En mi blog, en la parte inferior derecha, tienes un enlace en "Meta -> RSS de las entradas" que te dirige a http://speakertrading.wordpress.com/feed/. Ahí puedes seguir mi blog usando RSS. Recibirás notificaciones en tu cliente RSS (Outlook, Google o el que más te guste usar) cuando haya cambios en el blog.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Historicos intradia para backtesting

Mensaje por edge2k »

Ya tienes un suscriptor nuevo.
Ya he conseguido hacer funcionar todo para la descarga automática de históricos. Las primeras pruebas perfectas, me bajo lo que quise, pero ahora al bajar...

Código: Seleccionar todo

Excepción no controlada del tipo 'System.Runtime.InteropServices.COMException' en STMT.dll

Información adicional: Excepción de HRESULT: 0x80040301
Deduzco que la COM del VisualTrader esta enviando una excepción, puede ser algún tipo de limitación? (Me baje 35mb de un solo símbolo, los siguientes símbolos ya solo bajaba 1kb, y ahora eso)

P.D: Para integrar El ejemplo Tablas con la descarga de históricos, la versión que tenias de STMT no funcionaba porque no tenia HistoricSerie, sin embargo al poner la ultima versión de STMT no funcionaba por CarpetaTablas.Importe la v1.4
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

edge2, lamento los problemas que has tenido para montar la aplicación. Ten en cuenta que no se trata de trabajo totalmente profesional, hecho y depurado a conciencia, sino de algo que se va desarrollando sobre la marcha. Está bien montado (así es al menos como lo veo yo) pero le falta testeo. No puedo dedicarle más tiempo. Lo recomendable siempre es usar la última versión por que tiene más cosas que las anteriores. Así, lo indicado en los ejemplos funcionará siempre.

Deduces bien. Si se produce una excepción de tipo COMException es porque algo ha fallado "hablando" con Visual Chart. Por desgracia, los errores de Visual Chart no son nada descriptivos. Informan de un error pero nada más. La mejor forma de saber el porqué del error es a través del contexto en que se produce el fallo. ¿Qué intrucción de tu código es la que genera la excepción? ¿Creando un histórico? ¿Consultando símbolos?

Si puedes poner las líneas donde se produce el fallo quizá podamos aislarlo. Si no, tendrías que pasarme el código (deduzco que no supone ningún problema dado que es una aplicación de uso general, nada con "información sensible") o un código parecido que también falle.

En lo concerniente a la cantidad de información descargada, un apunte: si descargas un histórico que no tienes descargado anteriormente, la descarga será grande. Si lo tenías abierto previamente, solo se descarga la parte que te falta. En un gráfico diario que abras todos los días, siempre descargará solo una barra mientras que si es la primera vez que lo abres, tiene que descargar todas las barras. En los de minutos se aprecia mejor esto.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Historicos intradia para backtesting

Mensaje por edge2k »

SpeakerTrading escribió:edge2, lamento los problemas que has tenido para montar la aplicación. Ten en cuenta que no se trata de trabajo totalmente profesional, hecho y depurado a conciencia, sino de algo que se va desarrollando sobre la marcha. Está bien montado (así es al menos como lo veo yo) pero le falta testeo. No puedo dedicarle más tiempo. Lo recomendable siempre es usar la última versión por que tiene más cosas que las anteriores. Así, lo indicado en los ejemplos funcionará siempre.
El merito de hacer un trabajo así y publicarlo es grande, tienes todo mi apoyo y ayuda, te lo comento para mejorar, nunca como critica destructiva. Agradezco mucho que lo hubieses hecho.

La linea donde falla es aqui:

Código: Seleccionar todo

 historic = new HistoricSerie(symbol, compressionType, compressionUnits, startDate, endDate);
Lo uso en la siguiente funcion:

Código: Seleccionar todo

        private void button1_Click(object sender, EventArgs e)
        {
            HistoricSerie historic = null;
            string symbol;
            DateTime startDate, endDate;
            int compressionUnits;
            CompressionType compressionType;
            if (!GetGuiValues(out symbol, out compressionType, out compressionUnits, out startDate, out endDate))
                return;
            historic = new HistoricSerie(symbol, compressionType, compressionUnits, startDate, endDate);
            SaveHistoricalToFile(historic.Symbol.ToString(), historic);
        }
Si quieres te envió el proyecto entero, la función de descargar histórico para NT te puede interesar
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Historicos intradia para backtesting

Mensaje por SpeakerTrading »

edge2, si el fallo es en esa línea, lo más interesante para mi es que me indiques los valores de los parámetros (símbolo, tipo de compresión...). Así lo pruebo con los mismos valores y puedo ver que está pasando.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Historicos intradia para backtesting

Mensaje por edge2k »

Vale, ya esta solucionado. Me vas a matar pero tenia puesto el día actual como fecha fin, y era cuando salia la exception

Perdón por la molestia
Última edición por edge2k el 18 Feb 2013 20:52, editado 2 veces en total.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Data Feeds e Históricos”