programar com

Upload: ruben-bernal-brik

Post on 13-Jul-2015

173 views

Category:

Documents


10 download

TRANSCRIPT

PROLOGOQu son las Trading Tools?Las Trading Tools de Visual Chart son una potente herramienta COM que nos permite acceder a la informacin que desde Visual Chart se maneja en cualquier entorno de desarrollo compatible con esta herramienta. Bsicamente, la herramienta COM acta como intermediario entre Visual Chart y la aplicacin cliente (pondremos como ejemplo Microsoft Excel) El cliente realiza peticiones a la herramienta COM y sta notifica los resultados a travs de eventos. Las distintas libreras que forman las Trading Tools de Visual Chart contienen diversos objetos que heredan las distintas modalidades de tratamiento de datos que se permite usar desde el propio Visual Chart, tales como: 1. Acceder a la informacin en tiempo real de numerosos smbolos 2. Acceder a la fuente histrica de datos de esos mismos smbolos 3. Obtener datos tcnicos tales como volumen, indicadores o posiciones de sistemas 4. Acceder a la informacin procedente de las contribuciones 5. Realizar operaciones reales a mercado Puesto que se interacta con los servidores de datos e intermediacin, es necesario tener Visual Chart arrancado y conectado a dichos servidores.

INSTALACION DE LAS TRADING TOOLSSi es la primera vez que vamos a hacer uso de las herramientas COM de Visual Chart, necesitamos realizar los siguientes pasos: 1. Tener instalado en nuestro equipo Visual Chart 5 2. Tener registradas las libreras del COM Visual Chart instala automticamente en nuestro sistema operativo las libreras necesarias para operar con las Trading Tools. Manualmente, para registrar las libreras del COM debemos seguir los siguientes pasos. 1. En Inicio de Windows. Pulsar la opcin Ejecutar... 2. Nos aparecer la ventana de ejecucin de Windows. En Abrir escribir lo siguiente:

regsvr32 "C:\Archivos de programa\vChart5\Bin\COMTraderInterfaces.dll" 3. Pulsar el botn Aceptar 4. Una vez hemos hecho esto, debe aparecer el siguiente mensaje:DllRegisterServer en C:\Archivos de programa\vChart5\Bin\VCRealTimeLib.dll se realiz con xito

A partir de ah, repetimos los pasos 2 y 3 con las siguientes sentencias: regsvr32 "C:\Archivos de programa\vChart5\Bin\VCDataSource.dll" regsvr32 "C:\Archivos de programa\vChart5\Bin\VCRealTimeLib.dll" regsvr32 "C:\Archivos de programa\vChart5\Bin\VCContributor.dll"

AVISO. El uso de la herramienta Ejecutar de Microsoft Windows puede dar problemas. Si no obtenemos el mensaje de confirmacin, se puede probar utilizando el Interprete de Comandos, escribiendo cmd en la ventana de ejecucin se abre el Interprete. Una vez all, podemos volver a probar a ejecutar la rutina regsvr32 correspondiente.

3. Supongamos que vamos a trabajar con la herramienta COM desde una hoja Excel. A partir de este momento, y en adelante, trataremos los ejemplos de uso de las Trading Tools mediante el uso de Microsoft Excel. No obstante, cabe recordar que la aplicacin cliente no tiene por qu ser exclusivamente esta herramienta. 4. Vamos a crear un libro Excel nuevo donde poder implementar nuestras herramientas. Abrimos Excel y creamos una hoja nueva. Elegimos la opcin Guardar como y le indicamos que queremos guardarla como hoja Excel 97-2003 para evitar conflictos con versiones anteriores de Windows. Nosotros lo vamos a guardar con el nombre de TradingTools.xls 5. Hecho esto, seleccionamos la pestaa Programador y abrimos el editor de Visual Basic. Una vez all, seleccionamos la opcin HerramientasReferencias. Esperamos a que cargue las libreras y buscamos las que acabamos de registrar. Las activamos y pulsamos el botn Aceptar A partir de este momento las libreras quedan cargadas en Excel y listas para poder ser usadas. En caso de utilizar cualquier otra aplicacin, igualmente debemos buscar la opcin de referencias para poder activar las libreras registradas. 6. El ltimo paso que debemos realizar es el de abrir Visual Chart 5 en caso de que no est ya abierto y asegurarnos de que tenemos acceso al tiempo real.

LIBRERAS TRADING TOOLSUna vez el entorno de trabajo est preparado, veamos paso a paso las distintas herramientas a las cuales tenemos acceso.

Acceso a la fuente de datos. Librera VCDataSourceVCDataSource proporciona acceso a histricos de datos, indicadores, sistemas y valores estadsticos. Se pueden consultar los horarios de las sesiones de cada valor as como informacin sobre un valor dado (mnimo movimiento, diferencia horaria, valor por punto). En la siguiente figura puede verse el esquema de funcionamiento de este servidor. El servidor acta como intermediario entre VisualChart y la aplicacin cliente (por ejemplo, Microsoft Excel). VCDataSource VisualChart Aplicacin Cliente

El objeto principal es VCDS_DataSourceManager. Disponiendo de este objeto, se pueden crear series de datos, indicadores, sistemas y recibir eventos cuando estos cambian.

Practicas con VCHARTCOM. EJEMPLO Fuente 1Siguiendo con nuestro ejemplo del libro TradingTools.xls, supongamos que quisiramos visualizar en la hoja Excel la informacin del ltimo mes relativa a un valor. Preparamos la hoja para recibir esta clase de informacin tal que as:

Es decir, diez celdas para representar cinco parmetros que son los que vamos a necesitar. En las que a la izquierda ponemos el nombre de cada parmetro, y a la derecha el valor que vamos a ir cambiando. El cdigo del valor es con el que Visual Chart identifica a cada valor, precedido por 010. Para conocer el cdigo de cada valor, basta con abrir dicho valor y en el visor de bsqueda de smbolos podemos ver cul es. Las fechas Desde/Hasta definen el rango de tiempo durante el cual se obtendrn datos. El Tipo Compresin es la forma en la que van a estar integrados los datos. Para facilitarle la labor al usuario, estar representado por una herramienta de tipo Combo. Los valores del combo los cargamos en el procedimiento Worksheet_Activate de la siguiente manera:Private Sub Worksheet_Activate() '-- Cargar combo de tipo de compresion If CargarCombo 1 Then CboTipoComp.AddItem "Minutos" CboTipoComp.AddItem "Dias" CboTipoComp.AddItem "Semanas" CboTipoComp.AddItem "Meses" CboTipoComp.AddItem "Ticks" '-CargarCombo = 1 End If End Sub

La compresin es la cantidad de barras del tipo de compresin en las que van a estar integrados los datos. A continuacin, creamos una cabecera para identificar cada uno de los campos que vamos a representar en la hoja. Tal que as:

Que es la informacin ms bsica que podemos usar y que nos puede servir para este ejemplo. No obstante, destacar que es posible extraer ms informacin tal y como anteriormente se ha expuesto. La visualizacin de dicha informacin se expondr en posteriores apartados.

Uso de las macros de Microsoft ExcelUna vez preparada la hoja, pasamos a aadir un objeto de control que se encargue de iniciar el proceso.

Para ello, seleccionamos la pestaa de Programador y en el men de programador, seleccionamos el Modo diseo y a continuacin, seleccionamos InsertarBotn de comando (control Active X)

He insertamos el botn de comando en la pantalla, tal que as:

Si queremos mejorar el aspecto de nuestro botn, podemos seleccionarlo pulsando con el botn derecho y accediendo a las propiedades de botn. Nosotros vamos a cambiar las propiedades ms bsicas: Name: BtnAceptar Caption: ACEPTAR El resultado final ser el siguiente:

Con esto tenemos preparado todo el entorno visual. Vamos a proceder a continuacin a realizar el desarrollo del cdigo, donde pasaremos a usar las funciones y objetos de la librera VCDATASOURCE.

Creacin del cdigoEl botn de comando BtnAceptar va a ser el encargado de intermediar entre el programa y el usuario. El programa va a esperar a que el usuario pulse dicho botn para iniciar la rutina de programacin. De modo que necesitamos este evento, Pulsar botn como procedimiento contenedor de nuestro cdigo. Siguiendo en Modo Diseo, hacemos doble click sobre el botn ACEPTAR. Se nos abrir el Editor de Visual Basic, y habr generado la cabecera del procedimiento click en botn aceptar. Antes Sub iniciar la programacin de dicho procedimiento, debemos declarar Private de BtnAceptar_Click() Dim Simbolo As que las variablesString se van a utilizar durante el programa:

Dim FechaIni$, FechaFin$, tipocompresion&, compresion& Dim i&, j&, Intentos%, nFila& Option Explicit Dim Salir As Boolean ' Objeto para As Boolean Dim HayDatosrecibir la fuente de datos DimBtnAceptar.Caption = "ACEPTAR" Then If g_Objects As VCDS_DataSourceManager 'Variables historico BtnAceptar.Caption = "CANCELAR" Dim DetenerSistema (1) fuente As VCDS_DataSerie Dim Set g_Objects = New VCDS_DataSourceManager bar As VCDS_BarValue '-- Actualizamos las variables FechaIni = CDate(Cells(4, 2).Text): FechaFin = CDate(Cells(5, 2).Text) compresion = Cells(5, hemos = Cells(3, 2).Text Como anteriormente 4): Simbolocomentado, de todas ellas, la ms importante Select Case CboTipoComp.Text es g_Objects, puesto que de este objeto obtendremos la informacin Case "Minutos" tipocompresion = Chart. procedente de Visual VCDS_CT_Minutes Case "Dias" tipocompresion = VCDS_CT_Days El objeto Fuente define una serie de datos y provee acceso a los distintos Case "Semanas" tipocompresion del smbolo. valores de"Meses" la barra = VCDS_CT_Weeks Case tipocompresion = VCDS_CT_Months Case Else El objeto bar contiene los valores de una barra procedente del objeto tipocompresion = VCDS_CT_Ticks Fuente. Esto quiere decir que es necesario declarar el objeto Fuente para End Select ControlDeRecepcion(1) = 1 poder declarar al objeto bar. Salir = False: Intentos = 1 While Not Salir Al pulsarError Resume Next On el botn ACEPTAR iniciaremos el proceso de obtencin de datos. Antes Set fuente = g_Objects.NewDataSerie(Simbolo, tipocompresion, compresion, FechaIni, FechaFin) de extraer los datos procedentes del objecto Fuente, vamos a If Err.Number = 0 Then realizar HayDatos = True: rutinas de control para evitar conflictos de una serie de Salir = True

intermediacin entre Visual Chart y nuestra interfaz. ElseIntentos control + 1 Las rutinas de = Intentos sern las siguientes: HayDatos = False If Intentos > 4 Then Salir = True End If 1) Rutina de inicializacin de escenario. Wend If HayDatos Then Donde inicializamos los objetos que vamos a usar y borramos la '-- Recorremos el historico nFila = 7 informacin que pudiera haber escrita en nuestra hoja de datos. For j = 1 To fuente.Size Estos dos procesos se realizan en los siguientes procedimientos: bar = fuente.GetBarValues(j) 'Rellenamos campos Procedimiento Limpiar Hoja: Cells(nFila, 1) = bar.Date Cells(nFila, 2) = bar.Open El cdigo resultante bar.Close Cells(nFila, 3) = es el siguiente: Cells(nFila, 4) = bar.High Cells(nFila, 5) = bar.Low Cells(nFila, 6) = bar.Volume nFila = nFila + 1 Next j Else MsgBox "No han podido cargarse datos del histrico del valor: " & Simbolo DetenerSistema (0) End If Else DetenerSistema (0) End If End Sub

De dicho cdigo cabe destacar lo siguientes: 1. La serie Fuente se crea con el mtodo NewDataSerie del objeto g_Object. Dicho mtodo solicita los parmetros definidos previamente (cdigo del smbolo, tipo de compresin, compresin, fecha inicio y fecha fin). 2. El objeto bar almacena los valores de una barra concreta. Recorremos el objeto Fuente hasta la ltima barra que contenga, y para cada barra,

asignamos el valor al objeto bar mediante el mtodo Fuente.GetBarValues(N). Bar ser el que interpretar las distintas propiedades de esa barra. 3. La propiedad Fuente.Size nos indica el nmero de barras que hay entre las fechas propuestas. Con esto queda definido el grueso del programa. En el documento Excel adjunto a esta ayuda, podemos consultar el resultado final de esta primera prctica.

Practicas con VCHARTCOM. EJEMPLO Fuente 2En el anterior ejemplo hemos visto cmo cargar una fuente de datos desde el COM. En este nuevo ejemplo veremos cmo usar dicha fuente para obtener valores de cualquier indicador de la base de datos de indicadores del usuario. El objeto que vamos a utilizar en este ejemplo va a ser nuevamente un objeto del tipo VCDS_DataSourceManager, que proporciona

informacin sobre Fuentes de datos, indicadores o sistemas. De dicha clase vamos ha utilizar la clase objeto VCDS_Indicator, que provee informacin acerca del indicador que le indiquemos. El mtodo que permite generar esta clase de objetos es el mtodo NewIndicator que tiene las siguientes propiedades: Name. Donde se indica el CODIGO del indicador (es importante recordar que lo que nos solicita el mtodo es el cdigo y no el nombre del indicador). DataSource. Donde se debe especificar el objeto de tipo VCD_DataSource al que se le debe aplicar el indicador. Como cabe esperar, este objeto debe declararse previamente mediante el uso del mtodo NewDataSerie. ParamArray. En donde se especifica el conjunto de parmetros propio de cada indicador.A continuacin, vamos a explicar cmo hacer uso de dicho mtodo. El entorno va a ser bastante parecido al de la prctica anterior. Volvemos a crear de nuevo una cabecera como sta:

En este caso hemos sustituido la subcabecera de informacin del smbolo por una cabecera donde indicamos cada una de las lneas del indicador.

Creacin del cuadro combinado con la lista de indicadoresEl siguiente paso ser aadir a la cabecera la informacin relativa al indicador. Para este ejemplo, vamos a usar un nmero LIMITADO de indicadores de los que obtendremos informacin. Los indicadores son los siguientes: Media Simple Media Exponencial Bandas de Bollinger Estocstico Movimiento Direccional MACD RSI

Los indicadores a usar vienen por defecto instalados en el paquete de indicadores de Visual Chart 5. Cuando vayamos a hacer uso del mtodo NewIndicator con un indicador de nuestra cosecha, debemos recordar que antes de utilizar la hoja Excel, debemos compilar el indicador previamente (en caso de no haberlo hecho antes). Como vamos a usar un nmero limitado de indicadores, en lugar de aadir a la cabecera una caja de texto (como en el caso del cdigo del smbolo), vamos a usar un cuadro combinado que es mas atractivo desde el punto de vista del usuario. Para ello, seleccionamos la pestaa de Programador y en el men de programador, seleccionamos el Modo diseo y a continuacin, seleccionamos Insertar Cuadro combinado (control Active X).

As como en el anterior ejercicio cambiamos algunas propiedades del cuadro de texto, ahora vamos a cambiar la propiedad Name del cuadro combinado: Name: CboTipoIndicador El cuadro combinado va a contener los nombres de los indicadores a mostrar. Internamente, nos encargaremos de asociar a cada nombre con su respectivo cdigo de Visual Chart. De este modo, el usuario puede seleccionar un indicador por su nombre y el programa obtendr el cdigo mquina necesario para hacer la llamada con el mtodo NewIndicator. Para cargar el cuadro combinado con los nombres de los indicadores usaremos un evento propio de la hoja Excel. Dicho evento ser Worksheet_Activate(). Este evento coge el foco de la aplicacin cuando la hoja en cuestin se activa. El cdigo es el siguiente:Private Sub Worksheet_Activate() '-- Cargar combo de tipo de compresion If CargaComboInd 1 Then CboTipoComp2.Clear CboTipoIndicador.Clear '-CboTipoComp2.AddItem "Minutes" CboTipoComp2.AddItem "Days" CboTipoComp2.AddItem "Weeks" CboTipoComp2.AddItem "Months" CboTipoComp2.AddItem "Ticks" CboTipoIndicador.AddItem "AvSimple" CboTipoIndicador.AddItem "AvExponential" CboTipoIndicador.AddItem "BollingerBands" CboTipoIndicador.AddItem "MACD" CboTipoIndicador.AddItem "RSI" CboTipoIndicador.AddItem "Stochastic" CboTipoIndicador.AddItem "DirectionalMov" '-CargaComboInd = 1 End If End Sub

Generado el cuadro combinado, vamos a aadir a continuacin a la cabecera los cuadros de texto donde el usuario debe indicar los parmetros del indicador seleccionado. Debemos crear un cuadro de texto para cada parmetro, sin embargo, sabemos que no todos los indicadores poseen el mismo nmero de parmetros. Entonces, qu hacer en tal caso? Como mnimo tendremos que crear tantos cuadros de texto cmo parmetros tiene el indicador con mayor nmero de ellos. En nuestro ejemplo, este honor se le debe al Estocstico, que tiene seis parmetros.

El aspecto sera el siguiente:

Cuando el usuario abra la hoja Excel, ya podr seleccionar un smbolo en una compresin concreta, e indicar la combinacin de parmetros que decida para el Estocstico. La cuestin siguiente es: Y si selecciona otro indicador del cuadro combinado? Entonces tendremos que cambiar los parmetros para que se ajusten al indicador que se elija.

El evento CboTipoIndicador_Change()El evento Change del objeto CboTipoIndicador coger el foco de la aplicacin cada vez que el usuario seleccione un indicador distinto dentro de dicho cuadro combinado. Este evento nos va a servir para dos cosas: 1. Para hacer la presentacin de los parmetros ms dinmica y atractiva desde el punto de vista del usuario. 2. Para dimensionar el array de parmetros que requiere el mtodo NewIndicator. Este segundo punto es verdaderamente imprescindible para el correcto uso del mtodo en cuestin: Si al indicador que se especifica en la propiedad Name no se le administra el exacto nmero de parmetros que posee en la propiedad ParamArray, nos generar una excepcin y no devolver informacin alguna del indicador.Private Sub CboTipoIndicador_Change() sIndic = CboTipoIndicador.Text Select Case sIndic Case "AvSimple", "AvExponential", "ADX", "DirectionalMov" LabelParam1.Visible = True: LabelParam2.Visible = True LabelParam1.Caption = "Period" TextBox1.Visible = True: TextBox2.Visible = True TextBox1.Text = 30 If (sIndic = "ADX") Or (sIndic = "DirectionalMov") Then LabelParam2.Caption = "Band Value" TextBox2.Text = 20 Else LabelParam2.Caption = "PriceSource": TextBox2.Text = 0 End If LabelParam3.Visible = False: LabelParam4.Visible = False: LabelParam5.Visible = False: LabelParam6.Visible = False TextBox1.Visible = True: TextBox2.Visible = True TextBox3.Visible = False: TextBox4.Visible = False: TextBox5.Visible = False: TextBox6.Visible = False Case "RSI" LabelParam1.Visible = True: LabelParam2.Visible = True: LabelParam3.Visible = True LabelParam1.Caption = "Period": LabelParam2.Caption = "Upper Band": LabelParam3.Caption = "Lower Band" TextBox1.Visible = True: TextBox2.Visible = True: TextBox3.Visible = True TextBox1.Text = 14: TextBox2.Text = 70: TextBox3.Text = 30

El cdigo resultante ser el siguiente:

Case "BollingerBands" LabelParam1.Visible = True: LabelParam2.Visible = True: LabelParam3.Visible = True: LabelParam4.Visible = True LabelParam1.Caption = "Period": LabelParam2.Caption = "CoeficientM": LabelParam3.Caption = "PriceSource" LabelParam4.Caption = "AvType": TextBox1.Visible = True: TextBox2.Visible = True: TextBox3.Visible = True TextBox4.Visible = True: TextBox1.Text = 25: TextBox2.Text = 2: TextBox3.Text = 0: TextBox4.Text = 0 LabelParam5.Visible = False: LabelParam6.Visible = False: TextBox5.Visible = False: TextBox6.Visible = False Case "MACD" LabelParam1.Visible = True: LabelParam2.Visible = True: LabelParam3.Visible = True: LabelParam4.Visible = True LabelParam5.Visible = True: LabelParam1.Caption = "PeriodME_1": LabelParam2.Caption = "PeriodoME_2" LabelParam3.Caption = "PeriodME_SIG": LabelParam4.Caption = "PriceSource": LabelParam5.Caption = "BandValue" TextBox1.Visible = True: TextBox2.Visible = True: TextBox3.Visible = True: TextBox4.Visible = True: TextBox5.Visible = True TextBox1.Text = 20: TextBox2.Text = 33: TextBox3.Text = 9: TextBox4.Text = 0: TextBox4.Text = 0: TextBox5.Text = 0 LabelParam6.Visible = False: TextBox6.Visible = False Case "Stochastic" LabelParam1.Visible = True: LabelParam2.Visible = True: LabelParam3.Visible = True:

Lo nico que hemos hecho ha sido, segn sea el valor del cuadro combinado CboTipoIndicador, cambiar las propiedades de los cuadros de texto de los parmetros. Con esto tenemos preparado todo el entorno visual. Vamos a proceder a continuacin a realizar el desarrollo del cdigo, donde pasaremos a usar las funciones y objetos de la librera VCDS_DataSourceManager y como dijimos, en concreto, el objeto VCDS_Indicator.

Creacin del cdigoSiguiendo la misma metodologa que en el primer ejemplo, creamos un botn de comando al que podemos llamar BtnAceptar. Este botn, si recordamos, va a ser el encargado de intermediar entre el programa y el usuario. El programa va a esperar a que el usuario pulse dicho botn para iniciar la rutina de programacin. De modo que necesitamos este evento, Pulsar botn como procedimiento contenedor de nuestro cdigo. Siguiendo en Modo Diseo, hacemos doble click sobre el botn ACEPTAR. Se nos abrir el Editor de Visual Basic, y habr generado la cabecera del procedimiento click en botn aceptar. Antes de iniciar la programacin de dicho procedimiento, debemos declarar las variables que se van a utilizar durante el programa:Option Explicit ' Objeto para recibir la fuente de datos Dim g_Objects As VCDS_DataSourceManager 'Variables historico Dim fuente As VCDS_DataSerie Dim bar As VCDS_BarValue Dim indicador As VCDS_Indicator

A diferencia del primer ejemplo, ahora hemos aadido un objeto de tipo VCDS_Indicator. El objeto indicador va a contener los mtodos necesarios para que Visual Chart nos devuelva la informacin relativa al indicador que debidamente le indiquemos. Al pulsar el botn ACEPTAR iniciaremos el proceso de obtencin de datos. Antes de extraer los datos procedentes del objecto indicador, vamos a realizar una serie de rutinas de control para evitar conflictos de intermediacin entre Visual Chart y nuestra interfaz. Las rutinas de control sern las siguientes: 1) Rutina de inicializacin de escenario. Donde inicializamos los objetos que vamos a usar y borramos la informacin que pudiera haber escrita en nuestra hoja de datos. Estos dos procesos se realizan en los siguientes procedimientos: Procedimiento Limpiar. Procedimiento DetenerSistema.Private Sub Limpiar() '-- Limpiar Range(Cells(7, 1), Cells(1000, 10)).ClearContents End Sub Public Sub DetenerSistema() Set g_Objects = Nothing: Set fuente = Nothing: Set indicador = Nothing End Sub

2) Rutina de creacin de objeto. A travs de esta rutina, vamos a crear dos objetos. Por un lado, el objeto fuente y por otro, el objeto indicador, que se habr calculado sobre los datos de la fuente definida anteriormente. Creamos los objetos en la funcin IniciarSistema. Esta funcin devuelve un valor lgico, que informa de si se han creado los objetos correctamente o no.NOTA. A la hora de crear un objeto de tipo indicador, es necesario previamente haber creado un objeto de tipo fuente. Un indicador requiere de una fuente de datos previa para poder generar los resultados derivados de la funcin o funciones que definen a dicho indicador. Dim Simbolo As String El cdigo resultante es el siguiente: Private Sub BtnAceptar_Click()

Dim FechaIni$, FechaFin$, tipocompresion&, compresion& Dim i&, j&, Intentos%, nFila& Dim Salir As Boolean Dim HayDatos As Boolean If BtnAceptar.Caption = "ACEPTAR" Then BtnAceptar.Caption = "CANCELAR" DetenerSistema (1) Set g_Objects = New VCDS_DataSourceManager '-- Actualizamos las variables FechaIni = CDate(Cells(4, 2).Text): FechaFin = CDate(Cells(5, 2).Text) compresion = Cells(5, 4): Simbolo = Cells(3, 2).Text Select Case CboTipoComp.Text Case "Minutos" tipocompresion = VCDS_CT_Minutes Case "Dias" tipocompresion = VCDS_CT_Days Case "Semanas" tipocompresion = VCDS_CT_Weeks Case "Meses" tipocompresion = VCDS_CT_Months Case Else tipocompresion = VCDS_CT_Ticks End Select ControlDeRecepcion(1) = 1 Salir = False: Intentos = 1 While Not Salir On Error Resume Next Set fuente = g_Objects.NewDataSerie(Simbolo, tipocompresion, compresion, FechaIni, FechaFin) If Err.Number = 0 Then HayDatos = True: Salir = True Else HayDatos = False Intentos = Intentos + 1 If Intentos > 4 Then Salir = True End If Wend If HayDatos Then '-- Recorremos el historico nFila = 7 For j = 1 To fuente.Size bar = fuente.GetBarValues(j) 'Rellenamos campos Cells(nFila, 1) = bar.Date Cells(nFila, 2) = bar.Open Cells(nFila, 3) = bar.Close Cells(nFila, 4) = bar.High Cells(nFila, 5) = bar.Low Cells(nFila, 6) = bar.Volume nFila = nFila + 1 Next j Else MsgBox "No han podido cargarse datos del histrico del valor: " & Simbolo DetenerSistema (0) End If Else DetenerSistema (0) End If End Sub