Registro de logs
Para la monitorización de algoritmos de trading escritos en S#, puede usar la clase especial LogManager. Esta clase recibe los mensajes LogMessage desde LogManager.Sources mediante el evento ILogSource.Log y los pasa a los listeners LogManager.Listeners. Por lo tanto, el código del algoritmo podrá pasar información de depuración (por ejemplo, sobre errores ocurridos durante la operación o información adicional sobre cálculos matemáticos) y LogManager decidirá cómo mostrar esta información al operador.
Normalmente S# contiene las siguientes implementaciones de ILogListener, cuya elección afecta a dónde se pasarán los mensajes recibidos de las estrategias:
- FileLogListener - escribe mensajes en un archivo de texto. Se recomienda usarlo para algoritmos ya creados y usar los logs en casos de fuerza mayor.
- ConsoleLogListener - muestra mensajes en la ventana de consola (si el algoritmo no tiene ventana, se creará automáticamente). Se recomienda usarlo para depurar y probar el algoritmo
- DebugLogListener - muestra mensajes en la ventana de depuración. Esta ventana se puede ver mediante programas especiales como DebugView. Se recomienda usarlo para depurar y probar el algoritmo.
- EmailLogListener - envía mensajes a la dirección de correo electrónico especificada. Se recomienda usarlo si el algoritmo se encuentra en un equipo no controlado (en el servidor de un proveedor de hosting).
- GuiLogListener - muestra mensajes mediante la ventana especial LogControl. Puede trabajar en dos modos: cuando todos los mensajes se muestran en una única ventana y cuando se crea una ventana separada para cada ILogSource. Se recomienda usarlo si el algoritmo tiene una interfaz gráfica.
LogListener se puede configurar para filtrar mensajes mediante la propiedad LogListener.Filters. Por ejemplo, mediante filtros puede especificar qué tipo de mensajes deben procesarse. Esto es especialmente útil cuando se usa EmailLogListener, por ejemplo, para enviar correo solo en situaciones de emergencia (error del algoritmo de trading) y no con cada mensaje de depuración.