Conectando con VisualChart

VisualChart es una excelente plataforma de trading, líder en el mercado español. Se trata de una de las herramientas que usamos diariamente en Ágora Asesores Financieros y si sigue los artículos de nuestro analista jefe Carlos Doblado estará sin duda familiarizado con los detallados charts que facilitan en gran medida sus explicaciones: la mayoría de ellos provienen de VisualChart. Y por si fuese poco su uso es ¡GRATIS! a menos que quiera operar a tiempo real. ¿A qué está esperando? No, por desgracia en este caso no tengo comisión pero nos llevamos muy bien con ellos.

Más allá del uso discrecional, VisualChart contiene un completo entorno de trading algorítmico que le permite diseñar sus propios indicadores y sistemas, tanto usando un sencillo editor gráfico al estilo “LEGO” como aprovechando la potencia de programar código en los lenguajes favoritos del entorno .NET: Visual Basic y C#, permitiendo también hacer backtesting de sus estrategias.

GIGO

En un futuro cercano y según mis otras responsabilidades me permitan tengo la intención de iniciar otra serie de artículos para ilustrar cómo utilizar los recursos algorítmicos de VisualChart. Ahora me interesa ilustrar un aspecto poco conocido de la plataforma: la posibilidad de extraer datos de mercado en formato texto.  Así podremos integrarlos con otros entornos de trabajo, como por ejemplo el sistema de backtesting basado en PyAlgoTrade que hemos estado refinando en artículos previos.

Los datos de VisualChart superan en calidad y densidad a los de Yahoo Finance, especialmente en lo referente a los mercados europeos. No subestime la importancia de este punto. Cuando en MicroStrategy lanzamos la primera aplicación profesional de business intelligence para móviles que nos llevó a ser socio preferente de Apple, tuvimos la ocasión de trabajar con algunas de las corporaciones que cuentan con las bases de datos más bizantinas y los requisitos de análisis más draconianos del mundo: Amadeus, American Express, Facebook… pero nuestra nota de precaución era siempre la misma: GIGO. “Garbage In, Garbage Out”. Por muy impresionante que sea tu entorno de procesamiento, si los datos con los que alimentas el sistema son una porquería, el informe que obtendrás igualmente va a tener un fuerte olor a heces. Avisado estás.

Extracción de Datos

Para extraer los datos de VisualChart tan sólo tenemos que colocar el activo que deseamos exportar en un gráfico, hacer click derecho sobre el chart y elegir “Exportar” / “Exportar (Texto)” como se muestra en la imagen inferior. Así de fácil.

chart_export

Si queremos extraer una gran cantidad de activos a la vez (por ejemplo, todos los constituyentes del IBEX35) sin destrozarnos el dedo corazón y dañar seriamente el índice, tendremos que recurrir a la API COM de VisualChart, llamada Trading Tools en jerga oficial. Le recomiendo que consulte el blog de SpeakerTrading donde el autor ya ha encapsulado esa API en el programa HistoricDownloader para facilitar su uso.

Sin embargo, si usted es como yo y le gusta compulsivamente mirar debajo de la tapa, aquí le dejo un las instrucciones para escribir su propio código en C# que extraiga los datos en el mismo formato que el interfaz visual:

  • Referencie a la librería VCDataSource.dll.
  • El symbol del activo debe tener el formato 010 + mercado + activo (por ejemplo, 010060ACX.MC para Acerinox).
  • La startDate y endDate son objetos DateTime comunes a su elección.
using VcDataSourceLib;

DataSourceManager manager = new DataSourceManager();
DataSerie serie = manager.NewDataSerie(symbol, enumCompressionType.CT_Minutes, 5, (object) startDate, (object) endDate);
string shortSymbol = symbol.Substring(6);
stringBuilder.AppendFormat("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", "<TICKER>", "<PER>", "<DTYYYMMDD>", "<TIME>", "<OPEN>", "<HIGH>", "<LOW>", "<CLOSE>", "<VOL>", "<OPENINT>");
stringBuilder.AppendLine();
foreach (BarValue vcdsBarValue in serie.GetBarsValues((object)1, (object) serie.Size))
{
  string shortDate = vcdsBarValue.Date.ToString("yyyyMMdd");
  string shortTime = vcdsBarValue.Date.ToString("HHmmss");
  stringBuilder.AppendFormat("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", shortSymbol, "I", shortDate, shortTime, (object) vcdsBarValue.Open, (object)vcdsBarValue.Close, (object)vcdsBarValue.High, (object)vcdsBarValue.Low, (object)vcdsBarValue.Volume, (object)vcdsBarValue.OpenInterest);
  stringBuilder.AppendLine();
}

Integración con PyAlgoTrade

Si intenta usar directamente la información obtenida arriba en nuestras estrategias de PyAlgoTrade verá que fallará. La razón es que hasta ahora hemos estado utilizando el feed de datos propio de Yahoo Finance, y este no puede entender los nuevos archivos porque tienen un formato diferente.

Por fortuna la arquitectura abierta de la plataforma nos permite fácilmente crear nuestro propio feed adaptado a la idiosincracia de VisualChart. Esto es precisamente lo que he hecho para usted en visualchartfeed.py, un archivo que para facilitarle aún más las cosas he incluido en el módulo pyalgoext que creamos con anterioridad. Puede bajarlo como parte del repositorio de Github para este proyecto, PyAlgoSamples.

Una vez haya descargado y descomprimido el módulo, ya puede integrarlo en su entorno de backtesting como, por ejemplo, en este código de VisualChartData.py suponiendo que su archivo de datos se llame ACX.txt:

from pyalgoext import visualchartfeed

feed = visualchartfeed.Feed()
feed.addBarsFromCSV("ACX.MC", "ACX.txt")
myStrategy = MyStrategy(feed, "ACX.MC")
myStrategy.run()

Total Return en VisualChart

Otra de las grandes ventajas de la herramienta es que puede mostrar datos total return (consulte este artículo si no sabe aún por qué esto es tan relevante). Y no sólo para los precios de cierre (close), sino también para los de apertura (open), cénit (high) y nadir (low); recuerde que en al caso de Yahoo sólo obtenemos los precios ajustados de cierre. Esto nos va a permitir utilizar con fiabilidad también esos precios de referencia en nuestras estrategias si así lo deseamos.

Para obtener los datos total return, vaya al menú “Datos” y active la opción “Mostrar Dividendos”, tal y como se refleja en la imagen siguiente. Si ahora realiza una exportación a formato texto, los datos resultantes estarán ajustados por dividendos y ampliaciones.

chart-2

Tal vez se preguntará… ¿Podemos también realizar esto de una forma programática a través de las Trading Tools? ¡Claro! Solamente tenemos que incluir la siguiente línea en nuestro código C#:

serie.Settings.UseAdjustmentPrices = true;

Espero que este artículo haya sido de utilidad práctica para ustedes. Si les ha gustado, por favor no olviden compartir en sus redes sociales. ¡Hasta pronto!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s