10 votos

¿Qué tipo de extremo delantero/ gui se utiliza con aplicaciones de comercio?

Me preguntaba qué tipo de extremo frontal se utiliza para aplicaciones de comercio. Viniendo de un quant fondo, siempre he sido sólo se preocupa de la investigación y el back-end de la aplicación, pero estoy en una pérdida total cuando se trata de la parte delantera/ interfaz gráfica de usuario. La mayoría de mis codificación que se ha hecho en c++ y estoy usando un archivo de configuración para pasar parámetros.

Ahora resulta que debido a razones de regulación, esto podría no ser suficiente. Necesito tener un front-end que puede iniciar/ detener la estrategia, cambiar parámetros y recuperar el orden y la historia del comercio. Así que la pregunta se reduce a esto, ¿Cómo puedo crear una sencilla interfaz de usuario que puede sentarse en otro equipo, comunicarse con el colocado de la máquina y hacer todo esto.

Inicialmente pensé en el uso de la web/javascript, pero no mucho por ahí sobre esto. Qt es otra opción, pero yo sospecho que se requieren considerables de reescritura del código y de aprendizaje.

¿Cuál es el preferido de front end para el medio a la negociación de alta frecuencia de las aplicaciones que tienen el núcleo de la estrategia de ejecución en c++?

7voto

Mac Puntos 253

Si yo estuviera en su posición de que iba a empezar a investigar cómo puedo crear un servidor web es C++ y exponer las llamadas a crear un servicio REST. En otras palabras, se puede hacer de su código de salida de estado HTTP?

A partir de ahí, el resto debe ser fácil. Usted sólo tiene que crear una interfaz gráfica de usuario que pueden acceder a los servicios de DESCANSO, que prácticamente todas las lenguas modernas pueden. Usted puede centrarse en algo como AngularJS. Consume servicios muy fácilmente y también permite la visualización de ellos rápidamente. Si se combinan Angular con una plantilla de Themeforest (como alguien sugirió), usted puede tener una muy bonita interfaz gráfica de usuario en ningún momento.

Suena como una persona muy ocupada. Si usted puede hacer la primera parte de la creación del RESTO de servicios, luego de un buen desarrollador debe ser capaz de ayudarle con el segundo

3voto

Paul Calcraft Puntos 144

Si su meta es enviar comandos básicos, y evitar la reescritura de los modelos, le sugiero que para crear un PID servidor en combinación con una web/JavaScript sitio como interfaz gráfica de usuario.

El PID server supervisa el PID de las estrategias que se ejecutan en el servidor y ejecuta los comandos como vienen. El servidor podría consistir en un servidor web escuchando en el puerto 8888 con una simple interfaz JSON, que es muy flexible.

Conseguir un buen 'Panel de Administración" en la http://themeforest.nety ya está todo listo!

Buenas prácticas en materia de seguridad:

  1. Sólo permiten JSON puestos para el PID del servidor de los servidores web IP.
  2. Utilizar la validación de la entrada de comandos, por lo que el PID del servidor no puede ser usado para asumir la estrategia de servidor.
  3. Cifrar los comandos de envío de ida y vuelta.

Levantarse a la velocidad

Realmente es una muy sencilla aplicación, básicamente, un servidor web que se alimenta de sus modelos los comandos deseados a través de la CMD.

C# clase de Proceso

C# webserver ejemplo

Tenga en cuenta! Encontré a los dos enlaces que hay justo ahora, y yo no garantizan la calidad de código en el servidor web.

3voto

yalestar Puntos 142

Actualmente estoy desarrollando un mantenimiento de la posición en el sistema y estoy muy satisfecho con mi elección de idioma/bibliotecas:

1) Puro interfaz de usuario en C#. C# es muy bonito idioma, y Visual Studio Express es una muy buena gratis IDE, donde se pueden generar todos los botones, listas y los insumos que usted necesita. .NETO de lo contrario es muy versátil biblioteca para otras cosas (integrado en las estructuras de datos, las solicitudes web, descomprimir, de la aplicación.config, etc.). Puede vincular las bibliotecas de C++ a C#.

2) Para una rápida forma de rejilla de visualización de datos puedo utilizar http://www.codeproject.com/Articles/20672/Real-Time-Data-Grid . Funciona bien y no aviso de los problemas de rendimiento de cientos de mostrar simultáneamente las células.

3) Como una alternativa de la interfaz de usuario final, uso de IDT alimentar a excel (consulte la http://weblogs.asp.net/kennykerr/Rtd3). Esto permite a los usuarios vincular el programa en tiempo real de datos a excel y hacer sus propios cálculos.

4) Para la comunicación de red (cliente-servidor o en un equipo entre los diferentes procesos), yo uso ZeroMQ (http://zeromq.org). Lo protege de la desagradable bajo nivel de socket cosas y es implementado en muchas plataformas/idiomas, así que usted puede atar muchos programas diferentes, todos juntos bajo una interfaz común. Algún tutorial de C# se puede encontrar aquí: http://www.codeproject.com/Articles/488207/ZeroMQ-via-Csharp-Introduction

Hasta el momento el único inconveniente de esta opción es que el valor predeterminado de Win32 botones/componentes no son exactamente muy bonita, así que si necesitas algo de buen aspecto, usted debe pagar por eso. Pero ese no es mi problema :) Hay una opción para desarrollar la interfaz gráfica de usuario en WPF, pero hasta ahora tengo miedo de hacerlo, ya que sólo recibe referencias negativas de eso (que supuestamente es demasiado lento).

2voto

Stewart Puntos 2275

Han considerado que la programación de la cavidad? si usted necesita "tiempo real" de control http://www.codeproject.com/Articles/586000/Networking-and-Socket-programming-tutorial-in-C

Si sólo desea restablecer el parámetro de forma periódica(como el final del día), puede configurar un servicio y comunicar a través de http/rest/soap.

"recuperar el orden y la historia del comercio" se debe hacer en una aplicación separada de su trading en vivo componente en mi opinión.

también creo que va a obtener más respuestas si después de esto a stackoverflow.com

2voto

Neil Hewitt Puntos 2163

Yo también estaba interesado en la misma pregunta, y deciden compartir mi proyecto y de la investigación hasta el momento.

He construido un Comercio de Futuros de nuevo tester en python, que finalmente apoyará en vivo/papel comercial. Aquí el boceto del diseño:

--------------        --------------       ------------
| MarketData | --->   | Backtester |  -->  | Results  |
| (MongoDB)  |        | (Engine)   |       | (MongoDb |
--------------        --------------       ------------
                            ^
                            |
                      ---------------
                      | Algoritms   | 
                      ---------------

Los datos de mercado por goteo alimentado en el Backtester del motor, en el que los procesos en contra de la entrada de los algoritmos para decidir si quiere tomar un comercio. Todos los resultados (es decir, el comercio de registro, estadísticas de comercio, etc...) son el resultado de nuevo en la MongoDB.

Front End Requisitos

Siguiente, mi objetivo es construir un front-end. Quiero la parte delantera para permitir a un usuario para la instalación de pruebas retrospectivas. es decir, los parámetros de Entrada para el backtest, tales como la hora de inicio/fin, algoritmo, a partir de efectivo, etc.., los botones de inicio/parar/detener el comercio, etc... una Vez que el backtest comienza, quiero que el usuario vea el backtest de comercio de ocurrir en tiempo real en los gráficos. Ellos deben ser capaces de configurar múltiples cartas, es decir, 5 minutos de las velas, 1 hora, día, etc... también quiero las estadísticas de actualización en vivo como el backtest se ejecuta, incluyendo la equidad de una curva del gráfico. Quantopian tiene algo similar (ver quantopian.com) aunque quiero construir este suelo por varias razones.

Extremo delantero / lado del Cliente Marcos

A mí me parece que un front-end framework, como AngularJS o ReactJS, sería útil aquí para permitir una experiencia interactiva que estoy tratando de crear. Me estoy inclinando hacia ReactJS sobre todo porque he encontrado este impresionante gráficos de comillas de proyecto: http://rrag.github.io/react-stockcharts/.

Hay otros proyectos como el Plotly del Guión (que está construido en la parte superior de ReactJS, Plotly.js y D3). Pero me estoy encontrando que Plotly los gráficos son un poco rígidos, es decir, el eje-y no se ajuste en un gráfico como el zoom, y no apoyar a todos de la misma fuera de cuadro gráfico de características como reaccionar-stockcharts. También hay Plotly del Guión. Aunque me estoy dando cuenta que es difícil de integrar el Guión en una Aplicación Web (ver algunos de los debates en los foros sobre este tema). Pero el Guión no permite que usted no tiene que vivir (intervalo) la actualización de los gráficos. Su relativamente nuevo, por lo que tiene un potencial en el futuro. Pero me estoy inclinando hacia ReactJS y reaccionar-stockcharts.

También he pensado en ir con Grafana, que es un fuera-de-la-caja de front end, principalmente, para la supervisión y alertas de las aplicaciones (creo QUE admin quiere monitor de CPU, Memoria, etc.., para varios servidores en su laboratorio). Tienen un soporte limitado para unos datos de entrada de las fuentes, es decir, InfluxDB, MySQL, Elasticsearch, Grafito, etc... parece InfluxDB es un preferido de la base de datos a utilizar, probablemente porque creo que es desarrollado por la misma gente que construyó Grafana (que ofrecen estas en una solución completa llamada InfluxData). Hay otros plugins para MongoDB, gráficos velas, y plotly. Pero es difícil tratando de integrar y utilizar todos estos plugins para obtener la misma experiencia como reaccionar-stockcharts. Y en el final, esta aplicación no se siente bien para un stock de gráficos o backtesting web app.

Servicio Marcos de lado

Todavía no estoy completamente seguro si necesito un servicio del lado del marco. Aunque estoy considerando utilizar Node.js. Node.js al parecer, también actúa como un Servidor Web. Pero lo que me atrae a Node.js es el hecho de que el apoyo de async puestos de trabajo. Así que cuando el usuario envía backtest puestos de trabajo, estos trabajos pueden ser enviados a través de Node.js en el backend (MongoDB). Y del mismo modo, puede esperar y la retroalimentación de los resultados comerciales para el cliente. No conectar/desconectar con frecuencia como los tradicionales Servidor Web HTTP de las solicitudes. La conexión permanece activa y funciona de forma asincrónica. (Soy un novato en todo esto, así que cualquiera puede me corrija si estoy equivocado acerca de esto).

El frasco también es digno de la comprobación hacia fuera. Desde mi backend es python, podría ser más fácil de integrar e incluso eliminar la necesidad de ir a través de una base de datos.


Por último, he encontrado que existen estos free open source web de pilas.

1. MEAN (MongoDB, ExpressJS, AngularJS, NodeJS)

Aquí está su página web: http://mean.io/

También, usted puede conseguir esta funcionando bastante rápido con ventana acoplable Componer: https://hub.docker.com/r/meanjs/mean/

2. MERN (MongoDB, ExpressJS, ReactJS, NodeJS)

Aquí está su página web: http://mern.io/

También, usted puede conseguir esta funcionando bastante rápido con ventana acoplable Componer: https://github.com/Hashnode/mern-starter

Y una discusión interesante sobre Mongo del sitio web acerca de estos:

https://www.mongodb.com/blog/post/the-modern-application-stack-part-1-introducing-the-mean-stack

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X