STMT

STMT es una librería implementada en .NET con la finalidad de poder desarrollar software de investigación y sistemas automáticos. Muchas plataformas de Trading incorporan un marco de trabajo para desarrollar sistemas automáticos pero las posibilidades acostumbran a estar muy acotadas y abordar determinadas tareas se hace harto complicado. Hacer todo el trabajo desde cero resulta complejo y lleva un esfuerzo inicial considerable.

STMT utiliza las Trading Tools de Visual Chart para crear toda una infraestructura orientada a simplificar el trabajo de investigación y desarrollo de tareas relacionadas con la inversión en los mercados.

Todavía se encuentra en fase de desarrollo pero ya cuenta con muchas funcionalidades en un estado avanzado, algunas ya finalizadas:

  • Un control Chart permite la visualización de los históricos, indicadores, sistemas, líneas… que se hayan creado con STMT.
  • La librería incluye históricos Heiken Ashi, Spreads y la posibilidad de crear históricos de forma artificial para ajustarlos a cualquier necesidad. El histórico creado es como cualquier otro y puede mostrarse en el control chart, usarse como base para un indicador o sistema, etc. Se pueden crear históricos solo con datos de determinadas horas del día, de determinados días de la semana o estaciones del año.
  • Las líneas de los históricos, indicadores… dispone de muchas funciones que permiten:
    • Obtener el punto de corte con otra línea, hacia delante o atrás.
    • Estimar cuando se va a producir el corte de una línea con otra (como se hace a ojo en el gráfico).
    • Obtener el valor máximo o mínimo de un rango.
    • Obtener agregados como la suma de valores de un rango dado, áreas, velocidad del precio, aceleración, media, varianza, pendiente, etc.
    • Los históricos de Visual Chart pueden guardarse en disco comprimidos en un archivo zip. Esto permite ir guardando históricos de ticks sin limitación de tamaño. Además, el espacio en disco se reduce considerablemente.
    • Un simulador de tiempo real permite hacer pruebas con sistemas más fiables. Se puede aplicar un sistema desde 2000 a 2012 y si los resultados son buenos, probarlo son el simulador desde 2012 en adelante para ver qué habría pasado tick a tick. Los stops y limitadas, siendo tick a tick, saltan con más precisión a falta de saber si hay contrapartida que en símbolos con liquidez no suele ser un problema. Bastaría con penalizar un poco con el slipage promedio del símbolo para tener resultados bastante cercanos a la realidad.
    • Un simulador que funciona barra a barra puede utilizarse en escenarios donde se usen datos a la finalización de las barras. El uso de un simulador evita que se pueda acceder por error a datos del futuro cuando se recorre el histórico de un gráfico.
    • STMT ofrece una fácil integración con Excel. Crear/abrir un archivo Excel, rellenarlo con datos de históricos, indicadores, órdenes de sistemas, definir funciones, darle formato a las celdas… son algunas de las posibilidades que están disponibles.

STMT es un proyecto abierto. El listado anterior irá creciendo conforme se añadan nuevas funciones a la librería.

6 respuestas a STMT

  1. Pablo dijo:

    Enhorabuena por tu blog. Muy interesante tu trabajo. Nunca te has planteado hacer ejecución de ordenes de sistemas en cuentas?. Detectar la señal de la DLL del sistema y lanzarlo contra alguna cuenta en un broker que tenga VC (quien dice VC dice CQG o TT). Vamos, una plataforma de ejcución en vez de análisis y desarrollo.

  2. Hola Pablo

    No me lo he planteado para sistemas VBA de Visual Chart porque no los uso. Para sistemas desarrollados con las Trading Tools no es problema por que está al alcance de la mano, no hay que hacer nada especial y se podría ejecutar la orden en la plataforma que se desee (siempre que su API lo permita).

    Hacerlo para sistemas VBA requiere un desarrollo distinto y tendría que tenerse en cuenta al desarrollar el sistema.

  3. Juan dijo:

    Muy interesante el Blog, enhorabuena.

    Hace tiempo que me intereso por el desarrollo a medida de una aplicación capaz de recoger los datos en TR, valorarlos y poder operar tomando decisiones en base a unos criterios que pueda establecer, resumiendolo a un sistema automático…

    ¿Con lo que comentas es posible enlazar con la TWS o es necesario depender de Visual Chart?

    Gracias

  4. Hola Juan

    STMT esta desarrollado de forma genérica pero tiene una capa de la que se alimenta que es la que se comunica con Visual Chart. Esta capa es necesaria porque es de la que se obtienen los históricos, el tiempo real, se envían las órdenes, etc. STMT se puede usar con la TWS para enviar órdenes pero Visual Chart tiene que estar en ejecución, aunque no se use para nada, pues es el intermediario.

    IB dispone de una API de programación, igual que las Trading Tools de Visual Chart, que podría usarse para crear un marco de trabajo, como STMT, totalmente independiente de Visual Chart. No dispongo de cuenta demo en IB para hacer pruebas pero creo que tiene todo lo necesario. Si yo trabajase directamente con IB, crearia otra capa para alimentar STMT con esa API.

    Mi idea con STMT es que sea muy independiente de la plataforma. De hecho, todo el proceso de investigación (sistema, backtesting, walk forward, money management, informes, gráficas…) se puede hacer sin ejecutar Visual Chart. Basta con haber guardado previamente los históricos en disco.

    Te animo a emprender el desarrollo a medida. Tiene un esfuerzo inicial importante porque se empieza de cero pero cuando la librería tiene cierta entidad las posibilidades son enormes y rara vez encuentras algún problema para desarrollar exactamente lo que tú quieres. Ya no vuelves a preocuparte por las posibles limitaciones o rigideces que pueda tener tu plataforma. Creo que merece mucho la pena y si puedo servirte de ayuda, no dudes en consultarme.

    • Juan dijo:

      Muchas Gracias por contestarme,

      seguiré investigando a ver si doy con ello.

      A nivel de lenguaje cual me recomiendas? He visto comentarios muy buenos acerca de delphi pero escasea la información, DDE, ActiveX o a través de Socket? Parece ser que este último es el mas fiable y profesional.

      Me atrae más Delphi ya que he estado en contacto con el y aunque me cueste llegar ha hacer lo que quiero posiblemente me resulte mas familiar que el resto. En contrapartida no he podido encontrar ni un solo ejemplo actualizado que me pueda dar el empujón de salida… Para java, VB, VB.NET y VC hay ejemplos en la API de la TWS al menos para saber por donde tirar.

      • Delphi es un lenguaje muy bueno pero no lo domino así que no sabria decirte si es más o menos idóneo para el fin que nos ocupa.

        DDE es una tecnología (no un lenguaje) ya en desuso, si para algo resulta cómodo se puede usar pero si vas a hacer algo nuevo, mejor no apoyarte en ella.

        ActiveX también es una tecnologia, no un lenguaje. está omnipresente en Windows y muchas aplicaciones la utlizan para extender funcionalidades de sus programas. Desarrollar controles ActiveX, si están bien hechos, es una tarea compleja. No creo que necesites desarrollar controles ActiveX aunque si es posible que tengas que usar controles de este tipo si IB los ofrece como parte de su API.

        Personalmente, me decantaria por C++ o por Java/C#/VB .NET. Te costará un poco más que Delphi al principio por la curva de aprendizaje pero creo que disponer de ejemplos en un área tan poco generalizada como son las APIs que estamos tratando puede ser un factor muy a tener en cuenta.

        Sin ser programador, descartaría C++ en favor de Java/C#/VB .NET. IB creo que tiene unas librerias en .NET para acceder a su API. Esa seria mi elección si me pongo en tu lugar.

Replica a Pablo Cancelar la respuesta