Posts SpeakerTrading

Foro genérico sobre programas relacionados con el trading: gráficos, ejecución de órdenes, automatización, etc.
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Posts SpeakerTrading

Mensaje por SpeakerTrading »

A petición, creo un tema en el que notificaré las nuevas entradas que publique en mi blog.

También acepto (como ya he comentado otras veces) sugerencias, peticiones... para darle contenido al blog.

La última entrada versa sobre cómo utilizar información de carácter fundamental en sistemas (casi) automáticos basados en análisis técnico con el objetivo de mejorar los sistemas con información que se vaya obteniendo en tiempo real de diversas fuentes (noticias, resultados trimestrales...):

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

Re: Posts SpeakerTrading

Mensaje por edge2k »

Buenas SpeakTrading

He hecho una funcion para IndicadoresNet que descarga los historicos con el parsing necesario para ninjatrader.

Pero tengo 2 problemas:
1-Para los graficos de tics necesito solo el price,Como se indica aqui: http://www.ninjatrader.com/support/help ... htmSeccion Understanding import file and data formats. Que campo de la clase HistoricSeries seria?

2.Los DataType de ninjaTrader es Bid,Ask y last, y aqui solo obtengo el Last si no me equivoco, como puedo hacer para los otros?

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

Re: Posts SpeakerTrading

Mensaje por SpeakerTrading »

edge2

1. El precio lo obtienes de la línea Close del histórico.

2. El Bid y el Ask no está disponible porque el COM de Visual Chart no ofrece ese valor para las barras de histórico. Sin embargo, en los gráficos de ticks si está disponible, aunque se haya desconectado del tiempo real. Hace tiempo un compañero del foro (Luis) me envió por correo código en C que lee el formato binario de los históricos de Visual Chart 4. Si los de Visual Chart 5 no han cambiado, será fácil portarlo a C# y hacer accesible la información del bid y el ask.

Me parece una buena idea para montar un post. En cuanto pueda, me dedicaré a ello.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Avatar de Usuario
agmageton
Mensajes: 3596
Registrado: 30 Ene 2008 11:32

Re: Posts SpeakerTrading

Mensaje por agmageton »

Perfecto hilo, yo he empezado la aplicación y en breve pondré los avances destacados.

En primer lugar (yo empiezo de 0) lo que he hecho hasta ahora es preparar el visual estudio 2010 para conectarme a la api de ib para controles ACTIVE X, y crear una aplicación, ahora estoy desarrollando los métodos tickPrice(), tickSize(), tickGeneric(), tickString(), tickEFP() (todavía no sé bien como hacerlo :-D ). Para poder generar simbolos de acciones en tiempo real en barras de 60 minutos y que se vaya retroalimentando y saltando un espacio para cada barra generada, para mí este es el principio para programar todo desde estos datos de entrada. Cuando consiga esto, posteriormente iré aplicando todos los algoritmos que tengo creado en excel, para poder automatizar todo el sistema...me queda bastante tiempo para eso, pero poco a poco...iré comentando los avances para que podáis ver como lo estoy realizando y abierto a sugerencias.

saludos.


""tickPrice()
This function is called when the market data changes. Prices are updated immediately with no delay.
Sub tickPrice(ByVal id As Integer, ByVal tickType As Integer, ByVal price As Double,
ByVal canAutoExecute As Integer)
Parameter Description
id The ticker ID that was specified previously in the call to reqMktData()
tickType Specifies the type of price. Possible values are:
l 1 = bid
l 2 = ask
l 4 = last
l 6 = high
l 7 = low
l 9 = close
price The bid, ask or last price, the daily high, daily low or last day close, depending
on tickType value.
API Reference Guide 131
Chapter 3 Active X
canAutoExecute Specifies whether the price tick is available for automatic execution. Possible
values are:
l 0 = not eligible for automatic execution
l 1 = eligible for automatic execution
tickSize()
This function is called when the market data changes. Sizes are updated immediately with no delay.
Sub tickSize(ByVal id As Integer, ByVal tickType As Integer, ByVal size As Integer)
Parameter Description
id The ticker ID that was specified previously in the call to reqMktData()
tickType Specifies the type of price. Possible values are:
size The bid size, ask size, last size or trading volume, depending on the tickType value.
tickOptionComputation()
Sub tickOptionComputation(ByVal id As Integer, ByVal tickType As Integer, ByVal impliedVol As Double, ByVal
delta As Double, ByVal optPrice As Double, ByVal pvDividend As Double, ByVal gamma As Double, ByVal vega
As Double, ByVal theta As Double, ByVal undPrice As Double)
Parameter Description
id The ticker ID that was specified previously in the call to reqMktData()
tickType Specifies the type of tick. Possible values are:
l 10 = Bid
l 11 = Ask
l 12 = Last
ImpliedVol The implied volatility calculated by the TWS option modeler, using the specified ticktype
value.
delta The option delta calculated by the TWS option modeler.
optPrice The option price.
pvDivdend The present value of dividends expected on the options underlier.
API Reference Guide 132
Chapter 3 Active X
gamma The option gamma value.
vega The option vega value.
theta The option theta value.
undPrice The price of the underlying.
tickGeneric()
This method is called when the market data changes. Values are updated immediately with no delay.
Sub tickGeneric(ByVal id As Integer, ByVal tickType As Integer, ByVal value As Double)
Parameter Description
tickerId The ticker Id that was specified previously in the call to reqMktData()
tickType Specifies the type of tick.
Pass the field value into TickType.getField(int tickType) to retrieve the field
description. For example, a field value of 46 will map to shortable, etc.
value The value of the specified field.
tickString()
This method is called when the market data changes. Values are updated immediately with no delay.
Sub tickString(ByVal id As Integer, ByVal tickType As Integer, ByVal value As String)
Parameter Description
tickerId The ticker Id that was specified previously in the call to reqMktData()
tickType Specifies the type of tick.
Pass the field value into TickType.getField(int tickType) to retrieve the field
description. For example, a field value of 45 will map to lastTimestamp, etc.
value The value of the specified field.
tickEFP()
This method is called when the market data changes. Values are updated immediately with no delay.
Sub tickEFP(ByVal tickerId As Integer, ByVal field As Integer, ByVal basisPoints As Double, ByVal formattedBasisPoints
As String, ByVal totalDividends As Double, ByVal holdDays As Integer, ByVal futureExpiry
As String, ByVal dividendImpact As Double, ByVal dividendsToExpiry As Double))
Parameter Description
API Reference Guide 133
Chapter 3 Active X
tickerId The ticker Id that was specified previously in the call to reqMktData().
field Specifies the type of price.
Pass the field value into TickType.getField(int tickType) to retrieve the
field description. For example, a field value of 38 will map to bidEFP, etc.
basisPoints Annualized basis points, which is representative of the financing rate that
can be directly compared to broker rates.
formattedBasis
Points
Annualized basis points as a formatted string that depicts them in percentage
form.
totalDividends The total expected dividends.
holdDays The number of hold days until the expiry of the EFP.
futureExpiry The expiration date of the single stock future.
dividendImpact The dividend impact upon the annualized basis points interest rate.
dividendsToExpiry The dividends expected until the expiration of the single stock future.""
La entrada te da la probabilidad y la salida la rentabilidad...
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Posts SpeakerTrading

Mensaje por edge2k »

Muy interesante agmageton. Pero me hacéis sentir solo siendo el único que trabaja en linux & java.

Debo admitir que C# es muy cómodo para interfaces gráficas, rápido y eficaz.
SpeakerTrading escribió:edge2

1. El precio lo obtienes de la línea Close del histórico.

2. El Bid y el Ask no está disponible porque el COM de Visual Chart no ofrece ese valor para las barras de histórico. Sin embargo, en los gráficos de ticks si está disponible, aunque se haya desconectado del tiempo real. Hace tiempo un compañero del foro (Luis) me envió por correo código en C que lee el formato binario de los históricos de Visual Chart 4. Si los de Visual Chart 5 no han cambiado, será fácil portarlo a C# y hacer accesible la información del bid y el ask.

Me parece una buena idea para montar un post. En cuanto pueda, me dedicaré a ello.
Ok. Interesante el punto 2, en cuanto solucione la descarga de históricos sera el siguiente punto.

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

Re: Posts SpeakerTrading

Mensaje por SpeakerTrading »

Nuevo post: Lectura de históricos desde disco

http://speakertrading.wordpress.com/201 ... sde-disco/

Como siempre, entrada sencilla aunque ha costado bastante lo del formato binario porque el código que me pasó Luis no me ha servido mucho :(. Cuando tenga tiempo lo integraré en STMT con funciones que permitan acceder fácilmente a las carpetas de históricos y cargar históricos con más opciones: indicando que registros leer (desde el 100 al 150, por ejemplo) o las fechas a cargar.
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: Posts SpeakerTrading

Mensaje por SpeakerTrading »

agmageton, ese es el camino.

Cuando lo tengas montado y mires atrás te alegrarás seguro porque Excel está algo limitado para ciertas tareas. Te recomiendo que crees una librería, al estilo STMT, donde metas clases bien estructuradas que te proporcionen todo lo que necesites de forma fácil y sencilla. Así, podrás usar esa librería en cualquier aplicación que necesites crear y solo tendrás que mantener una libería para todas tus aplicaciones.

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

Re: Posts SpeakerTrading

Mensaje por edge2k »

SpeakerTrading escribió:Nuevo post: Lectura de históricos desde disco

http://speakertrading.wordpress.com/201 ... sde-disco/

Como siempre, entrada sencilla aunque ha costado bastante lo del formato binario porque el código que me pasó Luis no me ha servido mucho :(. Cuando tenga tiempo lo integraré en STMT con funciones que permitan acceder fácilmente a las carpetas de históricos y cargar históricos con más opciones: indicando que registros leer (desde el 100 al 150, por ejemplo) o las fechas a cargar.
Muy util!! gracias. Con una comunidad así da gusto :)
Avatar de Usuario
agmageton
Mensajes: 3596
Registrado: 30 Ene 2008 11:32

Re: Posts SpeakerTrading

Mensaje por agmageton »

SpeakerTrading escribió:agmageton, ese es el camino.

Cuando lo tengas montado y mires atrás te alegrarás seguro porque Excel está algo limitado para ciertas tareas. Te recomiendo que crees una librería, al estilo STMT, donde metas clases bien estructuradas que te proporcionen todo lo que necesites de forma fácil y sencilla. Así, podrás usar esa librería en cualquier aplicación que necesites crear y solo tendrás que mantener una libería para todas tus aplicaciones.

¡Ánimo!

Gracias Speaker, pero mi camino será lentillo, estoy con la ingeniera informática pero claro ella sabe programar pero no como funciona la api y esas cosas, ahora estamos un poco encallados en ver como se usan los parametros para llamar a los métodos, hemos conseguido ya programar para que se nos conecte a la api, de varias maneras.

Tú sabes que parametros por ejemplo para llamar a metodos en este caso el reqmkdataex que es el que nos da los datos para luego implementar el ticker price, porque en el manual de api no pone nada de eso y vamos más perdidos...
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: Posts SpeakerTrading

Mensaje por SpeakerTrading »

agmageton, hablando desde la ignorancia (no trabajo con IB ni conozco su API), por lo que leo en su referencia me hago la siguiente idea:

- Cuando conectas a IB, le indicas un identificador que IB usa para distinguir a las posibles aplicaciones que conecten con la API
- Ese identificador es el que se pasa como primer parámetro a reqMktDataEx.
- Contract debe ser el símbolo del que se quieren recibir los datos.
- El tercer parámetro permite indicar que tipo de información se quiere recibir en tiempo real. Puedes ver más sobre esto aquí: http://www.interactivebrokers.com/php/a ... _types.htm. Tú pides con el número de la primera columna y recibes la información con los números de la última columna.
- El último parámetro permite obtener un snapshot en lugar de monitorizar los cambios del símbolo.

Para recibir los valores en tiempo real hay que gestionar los eventos del objeto ActiveX que creas. Capturando el evento tickPrice, por ejemplo, recibes información cuando cambia el mercado:
- El primer parámetro de este evento es el tickerId que pasaste al objeto al conectar (te permite distinguir un objeto de otro si realizas más de una conexión con una misma aplicación).
- El segundo parámetro indica si el valor dado es el bid, ask, last, etc.
- El tercer parámetro es el valor del dato del punto anterior.
- El último no se qué es, ni voy a investigarlo ahora.

La arquitectura es la típica en estos casos. Parecida a la de Visual Chart:
- Creas tu objeto, conectas y asocias los eventos que te interesan con métodos donde procesar los cambios (el tiempo real) cuando estos se produzcan.
- Solicitas al objeto información (reqMktDataEx), que no se devuelve inmediatamente sino que se irá enviando conforme haya cambios en el mercado.
- Cuando los cambios se producen, se informa a través de los métodos que se asociaron para gestionar los eventos.

Si estás muy perdido puede que te sirva de orientación pero no te lo tomes al pie de la letra que yo no se nada de IB.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Avatar de Usuario
agmageton
Mensajes: 3596
Registrado: 30 Ene 2008 11:32

Re: Posts SpeakerTrading

Mensaje por agmageton »

Gracias speaker por la atención, voy a ir trabajando sobre ello, los principios siempre fueron difíciles...iré informando de los avances.

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: Posts SpeakerTrading

Mensaje por SpeakerTrading »

A petición de Wikmar, acabo de añadir una entrada al blog para pasar históricos de Visual Chart a Excel y de Excel a Visual Chart. Esto permite crear históricos a nuestro antojo y visualizarlos en Visual Chart como cualquier otro símbolo: VIX, históricos de fondos... son posibilidades apuntadas por Wikmar que pueden llevarse a cabo de esta forma.

http://speakertrading.wordpress.com/201 ... con-excel/
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Avatar de Usuario
Wikmar
Mensajes: 3868
Registrado: 29 Sep 2010 00:01
Ubicación: Madrid

Re: Posts SpeakerTrading

Mensaje por Wikmar »

Muuuchas gracias, creo que extensivo de todos los usuarios de VC.
            https://wikmar.wordpress.com
            Si quieres algo de privacidad, cuidado con las Nubes, que nadie ha conseguido todavía ponerles una puerta.
Avatar de Usuario
SpeakerTrading
Mensajes: 117
Registrado: 13 Dic 2012 21:26
Contactar:

Re: Posts SpeakerTrading

Mensaje por SpeakerTrading »

Ampliado el post: Importar/exportar históricos de Visual Chart con Excel

http://speakertrading.wordpress.com/201 ... con-excel/

Ahora incluye la descarga del programa guardando en archivo de texto en lugar de en Excel.
Speaker Trading
http://speakertrading.wordpress.com/" onclick="window.open(this.href);return false;
Avatar de Usuario
Wikmar
Mensajes: 3868
Registrado: 29 Sep 2010 00:01
Ubicación: Madrid

Re: Posts SpeakerTrading

Mensaje por Wikmar »

Quería proponer un tema de discusión y no sé si hacerlo en el foro de X-Trader, o proponértelo a tí para tu blog por ser más especializado, o las dos cosas a la vez. ¿Qué opinas / opináis, SpeakerTrading y X-Trader?.

El tema en este caso, pero la duda es general, es el siguiente: en el ámbito de los sistemas automáticos y Visual Chart, surge una necesidad, que es poder dejar preparada la ejecución del sistema para una sesión, antes de que ésta empiece. P. ej.: son las 23h y quiero dejar preparada la ejecución de mi sistema sobre el FDAX para la sesión (intradía) del dia siguiente. Para conseguir esto, surgen varios problemas, que es lo que quiero discutir.
            https://wikmar.wordpress.com
            Si quieres algo de privacidad, cuidado con las Nubes, que nadie ha conseguido todavía ponerles una puerta.
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Software”