Cómo depurar proyectos en Visual Chart 6 (3). Añadir un archivo de registro (log).

La depuración de proyectos (en inglés, debugging) es el proceso mediante el cual conseguimos detectar y solucionar posibles errores de programación a base de ejecutar el código fuente paso a paso de forma manual, e ir observando los valores que van tomando los distintos elementos de dicho código.

En anteriores artículos explicamos los pasos que habría que dar para poder depurar proyectos en Visual Chart 6. Esta información debería de ser suficiente para llevar a cabo la ejecución de la depuración. No obstante, en caso de que surjan problemas que nos impidan utilizar el depurador de Visual Studio, les proponemos una nueva opción mediante la cual puedan acceder a los datos que va generando el proyecto.

Crear un archivo de registro
En informática, es muy frecuente hacer uso de un archivo o de una base de datos donde almacenar, de un proceso particular, eventos, acciones o datos que puedan ser relevantes para su posterior estudio. Esta acción de crear un archivo de registro o log es la que vamos a usar como opción al proceso de depuración.

Lo que les planteamos sería lo siguiente: Añadir dentro del código de sus proyectos las rutinas pertinentes para generar el archivo log, incluyendo el registro de aquellos eventos o datos que necesiten analizar.

Para agilizar este proceso, hemos incluido dentro del listado de estrategias compartidas con el usuario Visual Chart Strategies Development dos estrategias llamadas Ejemplo Log TXT y Ejemplo Log TXT VB. Estas estrategias incluyen el proceso de creación del archivo log y las vamos a usar como plantilla o referencia para luego traspasar la información que nos interesa a nuestros propios proyectos.

Para acceder a ellas, simplemente escriban el nombre de las mismas en el buscador de estrategias y les aparecerán:

La primera de ellas está desarrollada usando como lenguaje de programación C#. Mientras que la segunda está diseñada en VB.NET. De esta manera, independientemente del lenguaje que hayan escogido, pueden usar una u otra como referencia.

Para nuestra explicación, vamos a utilizar exclusivamente Ejemplo Log TXT. Pero como decimos, el proceso es similar en VB.NET. Sólo tienen que seguir los pasos equivalentes de la versión VB.NET.

Programación del archivo de registro
Aclarado esto, pasamos a explicar el proceso. Lo primero que deben hacer es abrir el código de la estrategia. Una vez dentro, deben ir a la parte final del código. Ahí encontrarán un método llamado EscribirArchivo():

Verán que está almacenado dentro de la región Metodos ArchivoTXT. Pues bien, simplemente, copien dicha región y la añaden al final del código de su indicador o estrategia. A partir de ese momento, les será posible invocar a EscribirArchivo() pues está especificado desde su propio código.

Si ahora suben hasta el inicio del código de la estrategia, podrán ver que dentro de la lista de parámetros, aparece el parámetro RutaDir. Este parámetro sirve para especificar el directorio donde almacenar el archivo de registro que se va a crear. Si no quieren añadirlo como un parámetro de la estrategia, simplemente lo declaran como una variable más y posteriormente desde el método OnInitCalculate() le asignan una ruta fija.

Así como existe una ruta para el directorio, también hay una ruta definitiva para el archivo log. Esta dirección se almacena en la variable rutalog.

Una vez dentro del método OnInitCalculate(), definan la ruta completa del archivo log. Si previamente no lo habían hecho con la ruta del directorio, lo harían justo antes. En el ejemplo, se especifica como nombre de la ruta el nombre de la estrategia y el código del valor sobre el que se aplicará posteriormente. No obstante, el nombre de la ruta es libre y la pueden definir como deseen.

Seguidamente se invoca al método EscribirArchivo(), pasando como parámetros la información que se quiere escribir, el valor true para indicar que se trata del inicio y que por tanto debe crearse o resetearse el archivo, y por último la ruta concreta del archivo que se va a escribir.

Llegado a este punto, ya sólo tendrían que añadir desde el método OnCalculateBar() los eventos o datos que quieran almacenar en el archivo de registro. Para ello, guarden la información en una variable de texto y posteriormente invoquen al método EscribirArchivo() pasándole dicha variable, y el valor false para especificar que ya no estamos en el inicio (y evitar que sobrescriba la información que vaya generando).

En la estrategia Ejemplo Log TXT vemos un par de ejemplos. En este caso, se ha querido guardar el valor del cierre y de la media móvil en aquellas barras durante las cuales se ha generado una nueva señal, en esos casos, se ha indicado lo siguiente:

Si hacemos esto y ejecutamos la estrategia en el futuro del Nasdaq Continuo, nos generará un archivo como el siguiente:

Recuperar información de una barra en concreto
Ahora supongamos que no deseamos obtener datos de todas las barras, sino simplemente de una barra en concreto donde se está generando un conflicto o bien necesitamos saber qué ha ocurrido exactamente en ese punto. Pues bien, lo que haremos será acceder al gráfico, añadir un metro horizontal y marcar el punto exacto de la barra que queremos estudiar, de manera que podamos visualizar el número de barra que le corresponde, tal que así:

Hecho esto, ahora sólo tenemos que ir al código, y especificar que la invocación al método EscribirArchivo() se haga sólo si se encuentra justo en dicha barra, algo así:

Comentarios

  1. Hola, ¿ Se puede ajustar dinámicamente en el código .net el modo de entrada de órdenes "acumular/no acumular" ?

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Trading Tools: Descarga de históricos para Visual Chart 6

Indicador Cuidatar

El indicador Volume Distribution